[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170825123740.GF2023@nanopsycho>
Date: Fri, 25 Aug 2017 14:37:40 +0200
From: Jiri Pirko <jiri@...nulli.us>
To: Jamal Hadi Salim <jhs@...atatu.com>
Cc: Cong Wang <xiyou.wangcong@...il.com>, netdev@...r.kernel.org
Subject: Re: [Patch net-next v2 4/4] net_sched: kill u32_node pointer in Qdisc
Fri, Aug 25, 2017 at 02:29:57PM CEST, jhs@...atatu.com wrote:
>On 17-08-24 07:51 PM, Cong Wang wrote:
>> It is ugly to hide a u32-filter-specific pointer inside Qdisc,
>> this breaks the TC layers:
>>
>> 1. Qdisc is a generic representation, should not have any specific
>> data of any type
>>
>> 2. Qdisc layer is above filter layer, should only save filters in
>> the list of struct tcf_proto.
>>
>> This pointer is used as the head of the chain of u32 hash tables,
>> that is struct tc_u_hnode, because u32 filter is very special,
>> it allows to create multiple hash tables within one qdisc and
>> across multiple u32 filters.
>>
>> Instead of using this ugly pointer, we can just save it in a global
>> hash table key'ed by (dev ifindex, qdisc handle), therefore we can
>> still treat it as a per qdisc basis data structure conceptually.
>>
>> Of course, because of network namespaces, this key is not unique
>> at all, but it is fine as we already have a pointer to Qdisc in
>> struct tc_u_common, we can just compare the pointers when collision.
>>
>> And this only affects slow paths, has no impact to fast path,
>> thanks to the pointer ->tp_c.
>>
>> Cc: Jamal Hadi Salim <jhs@...atatu.com>
>> Cc: Jiri Pirko <jiri@...nulli.us>
>> Signed-off-by: Cong Wang <xiyou.wangcong@...il.com>
>
>Nice work. should open the doors for Jiri now.
One of the doors, couple more left :)
>
>Acked-by: Jamal Hadi Salim <jhs@...atatu.com>
>
>cheers,
>jamal
Powered by blists - more mailing lists