net: sched: remove cops->tcf_cl_offload
authorJiri Pirko <jiri@mellanox.com>
Wed, 9 Aug 2017 12:30:35 +0000 (14:30 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 11 Aug 2017 20:47:01 +0000 (13:47 -0700)
cops->tcf_cl_offload is no longer needed, as the drivers check what they
can and cannot offload using the classid identify helpers. So remove this.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/pkt_cls.h
include/net/sch_generic.h
net/sched/cls_bpf.c
net/sched/cls_flower.c
net/sched/cls_matchall.c
net/sched/cls_u32.c
net/sched/sch_ingress.c

index bd9dd79357febf8324087fd99f7796f626f80f9a..e80edd8879efc70f96dc0fbe91714c48714edc54 100644 (file)
@@ -457,19 +457,12 @@ struct tc_cls_u32_offload {
        };
 };
 
-static inline bool tc_can_offload(const struct net_device *dev,
-                                 const struct tcf_proto *tp)
+static inline bool tc_can_offload(const struct net_device *dev)
 {
-       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 (!dev->netdev_ops->ndo_setup_tc)
                return false;
-       if (cops && cops->tcf_cl_offload)
-               return cops->tcf_cl_offload(tp->classid);
-
        return true;
 }
 
@@ -478,12 +471,11 @@ 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)
+static inline bool tc_should_offload(const struct net_device *dev, u32 flags)
 {
        if (tc_skip_hw(flags))
                return false;
-       return tc_can_offload(dev, tp);
+       return tc_can_offload(dev);
 }
 
 static inline bool tc_skip_sw(u32 flags)
index e79f5ad1c5f3392fd7882a5ff34d0339b2bef29d..5865db91976b552ee7ccaa71639f50b9a027b0c8 100644 (file)
@@ -156,7 +156,6 @@ struct Qdisc_class_ops {
 
        /* Filter manipulation */
        struct tcf_block *      (*tcf_block)(struct Qdisc *, unsigned long);
-       bool                    (*tcf_cl_offload)(u32 classid);
        unsigned long           (*bind_tcf)(struct Qdisc *, unsigned long,
                                        u32 classid);
        void                    (*unbind_tcf)(struct Qdisc *, unsigned long);
index db17b68df94e49d63122422d6ea07726d9b122c7..6f2dffe30f25a0d4beb30a33a6861159355abd3c 100644 (file)
@@ -178,7 +178,7 @@ static int cls_bpf_offload(struct tcf_proto *tp, struct cls_bpf_prog *prog,
                (oldprog && tc_skip_sw(oldprog->gen_flags));
 
        if (oldprog && oldprog->offloaded) {
-               if (tc_should_offload(dev, tp, prog->gen_flags)) {
+               if (tc_should_offload(dev, prog->gen_flags)) {
                        cmd = TC_CLSBPF_REPLACE;
                } else if (!tc_skip_sw(prog->gen_flags)) {
                        obj = oldprog;
@@ -187,7 +187,7 @@ static int cls_bpf_offload(struct tcf_proto *tp, struct cls_bpf_prog *prog,
                        return -EINVAL;
                }
        } else {
-               if (!tc_should_offload(dev, tp, prog->gen_flags))
+               if (!tc_should_offload(dev, prog->gen_flags))
                        return skip_sw ? -EINVAL : 0;
                cmd = TC_CLSBPF_ADD;
        }
index d2551a03c542b8ea512cbd49c5734c0f82d828af..052e902dc71cec10cfc9c229d5ba9b1cd52e5a96 100644 (file)
@@ -227,7 +227,7 @@ static void fl_hw_destroy_filter(struct tcf_proto *tp, struct cls_fl_filter *f)
        struct tc_cls_flower_offload cls_flower = {};
        struct net_device *dev = f->hw_dev;
 
-       if (!tc_can_offload(dev, tp))
+       if (!tc_can_offload(dev))
                return;
 
        tc_cls_common_offload_init(&cls_flower.common, tp);
@@ -246,9 +246,9 @@ static int fl_hw_replace_filter(struct tcf_proto *tp,
        struct tc_cls_flower_offload cls_flower = {};
        int err;
 
-       if (!tc_can_offload(dev, tp)) {
+       if (!tc_can_offload(dev)) {
                if (tcf_exts_get_dev(dev, &f->exts, &f->hw_dev) ||
-                   (f->hw_dev && !tc_can_offload(f->hw_dev, tp))) {
+                   (f->hw_dev && !tc_can_offload(f->hw_dev))) {
                        f->hw_dev = dev;
                        return tc_skip_sw(f->flags) ? -EINVAL : 0;
                }
@@ -281,7 +281,7 @@ static void fl_hw_update_stats(struct tcf_proto *tp, struct cls_fl_filter *f)
        struct tc_cls_flower_offload cls_flower = {};
        struct net_device *dev = f->hw_dev;
 
-       if (!tc_can_offload(dev, tp))
+       if (!tc_can_offload(dev))
                return;
 
        tc_cls_common_offload_init(&cls_flower.common, tp);
index d44e26fdae84fb74e331f9847d583479a7bb2c1e..d4dc387f7a563b283fc62a819014e32d26463109 100644 (file)
@@ -92,7 +92,7 @@ static void mall_destroy(struct tcf_proto *tp)
        if (!head)
                return;
 
-       if (tc_should_offload(dev, tp, head->flags))
+       if (tc_should_offload(dev, head->flags))
                mall_destroy_hw_filter(tp, head, (unsigned long) head);
 
        call_rcu(&head->rcu, mall_destroy_rcu);
@@ -172,7 +172,7 @@ static int mall_change(struct net *net, struct sk_buff *in_skb,
        if (err)
                goto err_set_parms;
 
-       if (tc_should_offload(dev, tp, flags)) {
+       if (tc_should_offload(dev, flags)) {
                err = mall_replace_hw_filter(tp, new, (unsigned long) new);
                if (err) {
                        if (tc_skip_sw(flags))
index 5a3f781815264bff1b2f04ccaadc87fbbe75583c..af22742d28477215b5bf9dc26bbd48bfe251bad0 100644 (file)
@@ -433,7 +433,7 @@ static void u32_remove_hw_knode(struct tcf_proto *tp, u32 handle)
        struct net_device *dev = tp->q->dev_queue->dev;
        struct tc_cls_u32_offload cls_u32 = {};
 
-       if (!tc_should_offload(dev, tp, 0))
+       if (!tc_should_offload(dev, 0))
                return;
 
        tc_cls_common_offload_init(&cls_u32.common, tp);
@@ -450,7 +450,7 @@ static int u32_replace_hw_hnode(struct tcf_proto *tp, struct tc_u_hnode *h,
        struct tc_cls_u32_offload cls_u32 = {};
        int err;
 
-       if (!tc_should_offload(dev, tp, flags))
+       if (!tc_should_offload(dev, flags))
                return tc_skip_sw(flags) ? -EINVAL : 0;
 
        tc_cls_common_offload_init(&cls_u32.common, tp);
@@ -471,7 +471,7 @@ static void u32_clear_hw_hnode(struct tcf_proto *tp, struct tc_u_hnode *h)
        struct net_device *dev = tp->q->dev_queue->dev;
        struct tc_cls_u32_offload cls_u32 = {};
 
-       if (!tc_should_offload(dev, tp, 0))
+       if (!tc_should_offload(dev, 0))
                return;
 
        tc_cls_common_offload_init(&cls_u32.common, tp);
@@ -490,7 +490,7 @@ static int u32_replace_hw_knode(struct tcf_proto *tp, struct tc_u_knode *n,
        struct tc_cls_u32_offload cls_u32 = {};
        int err;
 
-       if (!tc_should_offload(dev, tp, flags))
+       if (!tc_should_offload(dev, flags))
                return tc_skip_sw(flags) ? -EINVAL : 0;
 
        tc_cls_common_offload_init(&cls_u32.common, tp);
index d8a9bebcab90c369bc212527638faa4c84149f50..a15c543c35697c0717f95358a280c7178003fae0 100644 (file)
@@ -32,11 +32,6 @@ static unsigned long ingress_get(struct Qdisc *sch, u32 classid)
        return TC_H_MIN(classid) + 1;
 }
 
-static bool ingress_cl_offload(u32 classid)
-{
-       return true;
-}
-
 static unsigned long ingress_bind_filter(struct Qdisc *sch,
                                         unsigned long parent, u32 classid)
 {
@@ -103,7 +98,6 @@ static const struct Qdisc_class_ops ingress_class_ops = {
        .put            =       ingress_put,
        .walk           =       ingress_walk,
        .tcf_block      =       ingress_tcf_block,
-       .tcf_cl_offload =       ingress_cl_offload,
        .bind_tcf       =       ingress_bind_filter,
        .unbind_tcf     =       ingress_put,
 };
@@ -134,11 +128,6 @@ static unsigned long clsact_get(struct Qdisc *sch, u32 classid)
        }
 }
 
-static bool clsact_cl_offload(u32 classid)
-{
-       return TC_H_MIN(classid) == TC_H_MIN(TC_H_MIN_INGRESS);
-}
-
 static unsigned long clsact_bind_filter(struct Qdisc *sch,
                                        unsigned long parent, u32 classid)
 {
@@ -198,7 +187,6 @@ static const struct Qdisc_class_ops clsact_class_ops = {
        .put            =       ingress_put,
        .walk           =       ingress_walk,
        .tcf_block      =       clsact_tcf_block,
-       .tcf_cl_offload =       clsact_cl_offload,
        .bind_tcf       =       clsact_bind_filter,
        .unbind_tcf     =       ingress_put,
 };