net/sched: Add separate check for skip_hw flag
authorHadar Hen Zion <hadarh@mellanox.com>
Thu, 1 Dec 2016 12:06:33 +0000 (14:06 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 2 Dec 2016 18:28:36 +0000 (13:28 -0500)
Creating a difference between two possible cases:
1. Not offloading tc rule since the user sets 'skip_hw' flag.
2. Not offloading tc rule since the device doesn't support offloading.

This patch doesn't add any new functionality.

Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/pkt_cls.h

index 767b03a..45ad9aa 100644 (file)
@@ -425,16 +425,14 @@ struct tc_cls_u32_offload {
        };
 };
 
-static inline bool tc_should_offload(const struct net_device *dev,
-                                    const struct tcf_proto *tp, u32 flags)
+static inline bool tc_can_offload(const struct net_device *dev,
+                                 const struct tcf_proto *tp)
 {
        const struct Qdisc *sch = tp->q;
        const struct Qdisc_class_ops *cops = sch->ops->cl_ops;
 
        if (!(dev->features & NETIF_F_HW_TC))
                return false;
-       if (flags & TCA_CLS_FLAGS_SKIP_HW)
-               return false;
        if (!dev->netdev_ops->ndo_setup_tc)
                return false;
        if (cops && cops->tcf_cl_offload)
@@ -443,6 +441,19 @@ static inline bool tc_should_offload(const struct net_device *dev,
        return true;
 }
 
+static inline bool tc_skip_hw(u32 flags)
+{
+       return (flags & TCA_CLS_FLAGS_SKIP_HW) ? true : false;
+}
+
+static inline bool tc_should_offload(const struct net_device *dev,
+                                    const struct tcf_proto *tp, u32 flags)
+{
+       if (tc_skip_hw(flags))
+               return false;
+       return tc_can_offload(dev, tp);
+}
+
 static inline bool tc_skip_sw(u32 flags)
 {
        return (flags & TCA_CLS_FLAGS_SKIP_SW) ? true : false;