[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c54bd7cc-ab56-6aac-2e24-85e9e8e1c708@mojatatu.com>
Date: Fri, 25 Aug 2017 08:29:57 -0400
From: Jamal Hadi Salim <jhs@...atatu.com>
To: Cong Wang <xiyou.wangcong@...il.com>, netdev@...r.kernel.org
Cc: Jiri Pirko <jiri@...nulli.us>
Subject: Re: [Patch net-next v2 4/4] net_sched: kill u32_node pointer in Qdisc
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.
Acked-by: Jamal Hadi Salim <jhs@...atatu.com>
cheers,
jamal
Powered by blists - more mailing lists