Thread (7 messages) 7 messages, 4 authors, 2017-08-09

Re: Qdisc->u32_node - licence to kill

flat view

From: Jiri Pirko <jiri@resnulli.us>
Date: 2017-08-09 12:48:36

Wed, Aug 09, 2017 at 02:40:30PM CEST, jhs@mojatatu.com wrote:
On 17-08-07 07:21 PM, Cong Wang wrote:
quoted
On Mon, Aug 7, 2017 at 12:54 PM, John Fastabend
[off-list ref] wrote:
quoted
On 08/07/2017 12:06 PM, Jiri Pirko wrote:
quoted
Mon, Aug 07, 2017 at 07:47:14PM CEST, john.fastabend@gmail.com wrote:
quoted
On 08/07/2017 09:41 AM, Jiri Pirko wrote:
quoted
Hi Jamal/Cong/David/all.
=
quoted
quoted
quoted
Not correct. prio/pref is one level up priority, independent on specific
cls implementation. You can have cls_u32 instance on prio 10 and
cls_flower instance on prio 20. Both work.
ah right, lets make sure I got this right then (its been awhile since I've
read this code). So the tcf_ctl_tfilter hook walks classifiers, inserting the
classifier by prio. Then tcf_classify walks the list of classifiers looking
for any matches, specifically any return codes it recognizes or a return code
greater than zero. u32 though has this link notion that allows users to jump
to other u32 classifiers that are in this list, because it has a global hash
table list. So the per prio classifier isolation is not true in u32 case.
u32 filter supports multiple hash tables within a qdisc, struct
tc_u_common is supposed to link them together. This has to be
per qdisc because all of these hash tables belong to one qdisc
and their ID's are unique within the qdisc.
I think historically this used to sit within the u32 code as a
static linked list; i cant recall why it got attached to the
qdisc.
Indeed, the idea is that hash tables can be added independently
without linking and then linked afterwards. They have to be held
somewhere in transient. And they have priorities (at least the
prios are used in the dump)
quoted
I dislike it too, and I actually tried to improve it in the past,
unfortunately didn't make any real progress. I think we can
definitely make it less ugly, but I don't think we can totally
get rid of it because of the design of u32.

Similar for tp->data.
tp->q maybe harder to deal with. I agree with getting rid of
this dependency. Could this info be stored in the block instead?
Yeah, I will have to do that. I just wanted to get rid of it if possible :/

cheers,
jamal
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help