提交 1abf2720 编写于 作者: J Jiri Pirko 提交者: David S. Miller

net: sched: tcindex, fw, flow: use tcf_block_q helper to get struct Qdisc

Use helper to get q pointer per block.
Signed-off-by: NJiri Pirko <jiri@mellanox.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 7fa9d974
...@@ -491,8 +491,11 @@ static int flow_change(struct net *net, struct sk_buff *in_skb, ...@@ -491,8 +491,11 @@ static int flow_change(struct net *net, struct sk_buff *in_skb,
perturb_period = nla_get_u32(tb[TCA_FLOW_PERTURB]) * HZ; perturb_period = nla_get_u32(tb[TCA_FLOW_PERTURB]) * HZ;
} }
if (TC_H_MAJ(baseclass) == 0) if (TC_H_MAJ(baseclass) == 0) {
baseclass = TC_H_MAKE(tp->q->handle, baseclass); struct Qdisc *q = tcf_block_q(tp->chain->block);
baseclass = TC_H_MAKE(q->handle, baseclass);
}
if (TC_H_MIN(baseclass) == 0) if (TC_H_MIN(baseclass) == 0)
baseclass = TC_H_MAKE(baseclass, 1); baseclass = TC_H_MAKE(baseclass, 1);
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include <net/netlink.h> #include <net/netlink.h>
#include <net/act_api.h> #include <net/act_api.h>
#include <net/pkt_cls.h> #include <net/pkt_cls.h>
#include <net/sch_generic.h>
#define HTSIZE 256 #define HTSIZE 256
...@@ -83,9 +84,11 @@ static int fw_classify(struct sk_buff *skb, const struct tcf_proto *tp, ...@@ -83,9 +84,11 @@ static int fw_classify(struct sk_buff *skb, const struct tcf_proto *tp,
} }
} }
} else { } else {
struct Qdisc *q = tcf_block_q(tp->chain->block);
/* Old method: classify the packet using its skb mark. */ /* Old method: classify the packet using its skb mark. */
if (id && (TC_H_MAJ(id) == 0 || if (id && (TC_H_MAJ(id) == 0 ||
!(TC_H_MAJ(id ^ tp->q->handle)))) { !(TC_H_MAJ(id ^ q->handle)))) {
res->classid = id; res->classid = id;
res->class = 0; res->class = 0;
return 0; return 0;
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <net/act_api.h> #include <net/act_api.h>
#include <net/netlink.h> #include <net/netlink.h>
#include <net/pkt_cls.h> #include <net/pkt_cls.h>
#include <net/sch_generic.h>
/* /*
* Passing parameters to the root seems to be done more awkwardly than really * Passing parameters to the root seems to be done more awkwardly than really
...@@ -90,9 +91,11 @@ static int tcindex_classify(struct sk_buff *skb, const struct tcf_proto *tp, ...@@ -90,9 +91,11 @@ static int tcindex_classify(struct sk_buff *skb, const struct tcf_proto *tp,
f = tcindex_lookup(p, key); f = tcindex_lookup(p, key);
if (!f) { if (!f) {
struct Qdisc *q = tcf_block_q(tp->chain->block);
if (!p->fall_through) if (!p->fall_through)
return -1; return -1;
res->classid = TC_H_MAKE(TC_H_MAJ(tp->q->handle), key); res->classid = TC_H_MAKE(TC_H_MAJ(q->handle), key);
res->class = 0; res->class = 0;
pr_debug("alg 0x%x\n", res->classid); pr_debug("alg 0x%x\n", res->classid);
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册