Subject: Re: [patch net-next v4 00/10] net: sched: allow qdiscs to share filter block instances

From: Jiri Pirko <[email-masked]>
Date: Thu, 4 Jan 2018 15:06:53 +0100

Thu, Jan 04, 2018 at 02:43:08PM CET, [email-masked] wrote:
>On 18-01-04 08:05 AM, Jiri Pirko wrote:
>> Thu, Jan 04, 2018 at 01:55:05PM CET, [email-masked] wrote:
>
>> > 
>> > $ tc filter add block 1 protocol ip priority 10 flower ...
>> > classid 1:2
>> > 
>> > Looks good - things will work fine for packets showing
>> > up on egress of enps7 which match the flower rule
>> > and classid 1:2 is selected to queue the packet on.
>> > 
>> > Things will not _work fine_ for packets showing up on
>> > egress of ensp8. There is no classid 1:2 on egress of
>> > enps8. The prio qdisc is a bad example because it
>> > has a default queue (i think 10:2) in this case. Other
>> > qdiscs(off top of my head DRR) will just drop the packet.
>> 
>> I'm very well aware of this. The plan is to support this and resolve
>> the lack of classid withing the qdisc according to the qdisc type.
>
>If i understood you correctly,  that is still iffy.
>An admin will see packets for the same filter on one device going
>to an agreed-to queue but on another going to a default queue.

Yeah, it is. That needs a bit more thoughts and discussion. That was the
main purpose I did not address it in this patchset and allowed only
ingress and clsact qidsc.

>
>> However, currently the classfull qdiscs are not supported for
>> block sharing - only ingress and clsact qdiscs are supported.
>> 
>
>Essentially anything that doesnt have queues associated with it..
>(and ignore the tcf_result).
>
>> > 
>> > I think this is resolvable - but it will take more to the
>> > patches than the current set you posted Jiri.
>> > A simple solution is to say sharing only works for ingress
>> > (but that sounds very lame).
>> 
>> That is the current limitation of the patchset as you can see. The
>> sharing works only for ingress and clsact qdisc. So works for both
>> ingress and egress (clsact).
>> 
>
>One option is to name all egress queues the same way on all devices
>f.e in the two examples i provided call root qdiscs 1:0.
>
>I am not sure how cleanly you get this to work with egress
>My current thinking involves some brain somersault...
>I will think some more about it...

clsact egress works the same as ingress qdisc - please check the code.

>cheers,
>jamal