All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jamal Hadi Salim <jhs@mojatatu.com>
To: Cong Wang <xiyou.wangcong@gmail.com>, netdev@vger.kernel.org
Cc: Jiri Pirko <jiri@resnulli.us>
Subject: Re: [Patch net v2] net_sched: fix tcm_parent in tc filter dump
Date: Sun, 3 May 2020 08:50:38 -0400	[thread overview]
Message-ID: <82f9f756-a49b-9aa9-5b1c-52cddf9997a5@mojatatu.com> (raw)
In-Reply-To: <20200501035349.31244-1-xiyou.wangcong@gmail.com>

On 2020-04-30 11:53 p.m., Cong Wang wrote:
> When we tell kernel to dump filters from root (ffff:ffff),
> those filters on ingress (ffff:0000) are matched, but their
> true parents must be dumped as they are. However, kernel
> dumps just whatever we tell it, that is either ffff:ffff
> or ffff:0000:
> 
>   $ nl-cls-list --dev=dummy0 --parent=root
>   cls basic dev dummy0 id none parent root prio 49152 protocol ip match-all
>   cls basic dev dummy0 id :1 parent root prio 49152 protocol ip match-all
>   $ nl-cls-list --dev=dummy0 --parent=ffff:
>   cls basic dev dummy0 id none parent ffff: prio 49152 protocol ip match-all
>   cls basic dev dummy0 id :1 parent ffff: prio 49152 protocol ip match-all
> 
> This is confusing and misleading, more importantly this is
> a regression since 4.15, so the old behavior must be restored.
> 
> And, when tc filters are installed on a tc class, the parent
> should be the classid, rather than the qdisc handle. Commit
> edf6711c9840 ("net: sched: remove classid and q fields from tcf_proto")
> removed the classid we save for filters, we can just restore
> this classid in tcf_block.
> 
> Steps to reproduce this:
>   ip li set dev dummy0 up
>   tc qd add dev dummy0 ingress
>   tc filter add dev dummy0 parent ffff: protocol arp basic action pass
>   tc filter show dev dummy0 root
> 
> Before this patch:
>   filter protocol arp pref 49152 basic
>   filter protocol arp pref 49152 basic handle 0x1
> 	action order 1: gact action pass
> 	 random type none pass val 0
> 	 index 1 ref 1 bind 1
> 
> After this patch:
>   filter parent ffff: protocol arp pref 49152 basic
>   filter parent ffff: protocol arp pref 49152 basic handle 0x1
>   	action order 1: gact action pass
>   	 random type none pass val 0
> 	 index 1 ref 1 bind 1
> 
> Fixes: a10fa20101ae ("net: sched: propagate q and parent from caller down to tcf_fill_node")
> Fixes: edf6711c9840 ("net: sched: remove classid and q fields from tcf_proto")
> Cc: Jamal Hadi Salim <jhs@mojatatu.com>
> Cc: Jiri Pirko <jiri@resnulli.us>
> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>

Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>


cheers,
jamal

  parent reply	other threads:[~2020-05-03 12:50 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-01  3:53 [Patch net v2] net_sched: fix tcm_parent in tc filter dump Cong Wang
2020-05-02  8:48 ` Jamal Hadi Salim
2020-05-02  9:19   ` Jamal Hadi Salim
2020-05-03  2:28     ` Cong Wang
2020-05-03 12:02       ` Jamal Hadi Salim
2020-05-03 12:48         ` Jamal Hadi Salim
2020-05-04 17:42           ` Cong Wang
2020-05-03 12:50 ` Jamal Hadi Salim [this message]
2020-05-04 18:53 ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=82f9f756-a49b-9aa9-5b1c-52cddf9997a5@mojatatu.com \
    --to=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=netdev@vger.kernel.org \
    --cc=xiyou.wangcong@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.