diff options
author | Jiri Pirko <jiri@mellanox.com> | 2017-08-09 14:30:33 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-08-11 22:47:01 +0200 |
commit | a2e8da9378cc09e2e922a0b3d481bd9d07c3d245 (patch) | |
tree | b6db00631229583093c1a9a48cb15b2be9e05065 /net/dsa | |
parent | net: sched: propagate classid down to offload drivers (diff) | |
download | linux-a2e8da9378cc09e2e922a0b3d481bd9d07c3d245.tar.xz linux-a2e8da9378cc09e2e922a0b3d481bd9d07c3d245.zip |
net: sched: use newly added classid identity helpers
Instead of checking handle, which does not have the inner class
information and drivers wrongly assume clsact->egress as ingress, use
the newly introduced classid identification helpers.
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dsa')
-rw-r--r-- | net/dsa/slave.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/net/dsa/slave.c b/net/dsa/slave.c index 8c79011c5a83..78e78a6e6833 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -914,7 +914,14 @@ static void dsa_slave_del_cls_matchall(struct net_device *dev, static int dsa_slave_setup_tc_cls_matchall(struct net_device *dev, struct tc_cls_matchall_offload *cls) { - bool ingress = TC_H_MAJ(cls->common.handle) == TC_H_MAJ(TC_H_INGRESS); + bool ingress; + + if (is_classid_clsact_ingress(cls->common.classid)) + ingress = true; + else if (is_classid_clsact_egress(cls->common.classid)) + ingress = false; + else + return -EOPNOTSUPP; if (cls->common.chain_index) return -EOPNOTSUPP; |