From: Cong Wang <[email protected]>
Date: Thu, 30 Apr 2020 20:53:49 -0700
> 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:
...
> 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")
> Signed-off-by: Cong Wang <[email protected]>
Applied, thanks.