diff options
-rw-r--r-- | include/linux/skbuff.h | 3 | ||||
-rw-r--r-- | include/net/act_api.h | 2 | ||||
-rw-r--r-- | net/core/skbuff.c | 2 | ||||
-rw-r--r-- | net/sched/act_api.c | 7 | ||||
-rw-r--r-- | net/sched/gact.c | 2 | ||||
-rw-r--r-- | net/sched/ipt.c | 2 | ||||
-rw-r--r-- | net/sched/mirred.c | 2 | ||||
-rw-r--r-- | net/sched/pedit.c | 2 | ||||
-rw-r--r-- | net/sched/police.c | 3 | ||||
-rw-r--r-- | net/sched/simple.c | 2 |
10 files changed, 9 insertions, 18 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 76c68851474c..f10a8b9628b0 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -196,7 +196,6 @@ struct skb_shared_info { | |||
196 | * @private: Data which is private to the HIPPI implementation | 196 | * @private: Data which is private to the HIPPI implementation |
197 | * @tc_index: Traffic control index | 197 | * @tc_index: Traffic control index |
198 | * @tc_verd: traffic control verdict | 198 | * @tc_verd: traffic control verdict |
199 | * @tc_classid: traffic control classid | ||
200 | */ | 199 | */ |
201 | 200 | ||
202 | struct sk_buff { | 201 | struct sk_buff { |
@@ -275,9 +274,7 @@ struct sk_buff { | |||
275 | __u32 tc_index; /* traffic control index */ | 274 | __u32 tc_index; /* traffic control index */ |
276 | #ifdef CONFIG_NET_CLS_ACT | 275 | #ifdef CONFIG_NET_CLS_ACT |
277 | __u32 tc_verd; /* traffic control verdict */ | 276 | __u32 tc_verd; /* traffic control verdict */ |
278 | __u32 tc_classid; /* traffic control classid */ | ||
279 | #endif | 277 | #endif |
280 | |||
281 | #endif | 278 | #endif |
282 | 279 | ||
283 | 280 | ||
diff --git a/include/net/act_api.h b/include/net/act_api.h index ed00a995f576..b55eb7c7f033 100644 --- a/include/net/act_api.h +++ b/include/net/act_api.h | |||
@@ -63,7 +63,7 @@ struct tc_action_ops | |||
63 | __u32 type; /* TBD to match kind */ | 63 | __u32 type; /* TBD to match kind */ |
64 | __u32 capab; /* capabilities includes 4 bit version */ | 64 | __u32 capab; /* capabilities includes 4 bit version */ |
65 | struct module *owner; | 65 | struct module *owner; |
66 | int (*act)(struct sk_buff **, struct tc_action *); | 66 | int (*act)(struct sk_buff **, struct tc_action *, struct tcf_result *); |
67 | int (*get_stats)(struct sk_buff *, struct tc_action *); | 67 | int (*get_stats)(struct sk_buff *, struct tc_action *); |
68 | int (*dump)(struct sk_buff *, struct tc_action *,int , int); | 68 | int (*dump)(struct sk_buff *, struct tc_action *,int , int); |
69 | int (*cleanup)(struct tc_action *, int bind); | 69 | int (*cleanup)(struct tc_action *, int bind); |
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index e6564b0a6839..8896e6f8aa42 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -300,7 +300,6 @@ void __kfree_skb(struct sk_buff *skb) | |||
300 | skb->tc_index = 0; | 300 | skb->tc_index = 0; |
301 | #ifdef CONFIG_NET_CLS_ACT | 301 | #ifdef CONFIG_NET_CLS_ACT |
302 | skb->tc_verd = 0; | 302 | skb->tc_verd = 0; |
303 | skb->tc_classid = 0; | ||
304 | #endif | 303 | #endif |
305 | #endif | 304 | #endif |
306 | 305 | ||
@@ -376,7 +375,6 @@ struct sk_buff *skb_clone(struct sk_buff *skb, unsigned int __nocast gfp_mask) | |||
376 | n->tc_verd = CLR_TC_OK2MUNGE(n->tc_verd); | 375 | n->tc_verd = CLR_TC_OK2MUNGE(n->tc_verd); |
377 | n->tc_verd = CLR_TC_MUNGED(n->tc_verd); | 376 | n->tc_verd = CLR_TC_MUNGED(n->tc_verd); |
378 | C(input_dev); | 377 | C(input_dev); |
379 | C(tc_classid); | ||
380 | #endif | 378 | #endif |
381 | 379 | ||
382 | #endif | 380 | #endif |
diff --git a/net/sched/act_api.c b/net/sched/act_api.c index 249c61936ea0..c896a0118a32 100644 --- a/net/sched/act_api.c +++ b/net/sched/act_api.c | |||
@@ -165,7 +165,7 @@ int tcf_action_exec(struct sk_buff *skb, struct tc_action *act, | |||
165 | while ((a = act) != NULL) { | 165 | while ((a = act) != NULL) { |
166 | repeat: | 166 | repeat: |
167 | if (a->ops && a->ops->act) { | 167 | if (a->ops && a->ops->act) { |
168 | ret = a->ops->act(&skb, a); | 168 | ret = a->ops->act(&skb, a, res); |
169 | if (TC_MUNGED & skb->tc_verd) { | 169 | if (TC_MUNGED & skb->tc_verd) { |
170 | /* copied already, allow trampling */ | 170 | /* copied already, allow trampling */ |
171 | skb->tc_verd = SET_TC_OK2MUNGE(skb->tc_verd); | 171 | skb->tc_verd = SET_TC_OK2MUNGE(skb->tc_verd); |
@@ -179,11 +179,6 @@ repeat: | |||
179 | act = a->next; | 179 | act = a->next; |
180 | } | 180 | } |
181 | exec_done: | 181 | exec_done: |
182 | if (skb->tc_classid > 0) { | ||
183 | res->classid = skb->tc_classid; | ||
184 | res->class = 0; | ||
185 | skb->tc_classid = 0; | ||
186 | } | ||
187 | return ret; | 182 | return ret; |
188 | } | 183 | } |
189 | 184 | ||
diff --git a/net/sched/gact.c b/net/sched/gact.c index a811c89fef7f..d1c6d542912a 100644 --- a/net/sched/gact.c +++ b/net/sched/gact.c | |||
@@ -135,7 +135,7 @@ tcf_gact_cleanup(struct tc_action *a, int bind) | |||
135 | } | 135 | } |
136 | 136 | ||
137 | static int | 137 | static int |
138 | tcf_gact(struct sk_buff **pskb, struct tc_action *a) | 138 | tcf_gact(struct sk_buff **pskb, struct tc_action *a, struct tcf_result *res) |
139 | { | 139 | { |
140 | struct tcf_gact *p = PRIV(a, gact); | 140 | struct tcf_gact *p = PRIV(a, gact); |
141 | struct sk_buff *skb = *pskb; | 141 | struct sk_buff *skb = *pskb; |
diff --git a/net/sched/ipt.c b/net/sched/ipt.c index b114d994d523..f50136eed211 100644 --- a/net/sched/ipt.c +++ b/net/sched/ipt.c | |||
@@ -201,7 +201,7 @@ tcf_ipt_cleanup(struct tc_action *a, int bind) | |||
201 | } | 201 | } |
202 | 202 | ||
203 | static int | 203 | static int |
204 | tcf_ipt(struct sk_buff **pskb, struct tc_action *a) | 204 | tcf_ipt(struct sk_buff **pskb, struct tc_action *a, struct tcf_result *res) |
205 | { | 205 | { |
206 | int ret = 0, result = 0; | 206 | int ret = 0, result = 0; |
207 | struct tcf_ipt *p = PRIV(a, ipt); | 207 | struct tcf_ipt *p = PRIV(a, ipt); |
diff --git a/net/sched/mirred.c b/net/sched/mirred.c index f309ce336803..20d06916dc0b 100644 --- a/net/sched/mirred.c +++ b/net/sched/mirred.c | |||
@@ -158,7 +158,7 @@ tcf_mirred_cleanup(struct tc_action *a, int bind) | |||
158 | } | 158 | } |
159 | 159 | ||
160 | static int | 160 | static int |
161 | tcf_mirred(struct sk_buff **pskb, struct tc_action *a) | 161 | tcf_mirred(struct sk_buff **pskb, struct tc_action *a, struct tcf_result *res) |
162 | { | 162 | { |
163 | struct tcf_mirred *p = PRIV(a, mirred); | 163 | struct tcf_mirred *p = PRIV(a, mirred); |
164 | struct net_device *dev; | 164 | struct net_device *dev; |
diff --git a/net/sched/pedit.c b/net/sched/pedit.c index 678be6a645fb..767d24f4610e 100644 --- a/net/sched/pedit.c +++ b/net/sched/pedit.c | |||
@@ -130,7 +130,7 @@ tcf_pedit_cleanup(struct tc_action *a, int bind) | |||
130 | } | 130 | } |
131 | 131 | ||
132 | static int | 132 | static int |
133 | tcf_pedit(struct sk_buff **pskb, struct tc_action *a) | 133 | tcf_pedit(struct sk_buff **pskb, struct tc_action *a, struct tcf_result *res) |
134 | { | 134 | { |
135 | struct tcf_pedit *p = PRIV(a, pedit); | 135 | struct tcf_pedit *p = PRIV(a, pedit); |
136 | struct sk_buff *skb = *pskb; | 136 | struct sk_buff *skb = *pskb; |
diff --git a/net/sched/police.c b/net/sched/police.c index c03545faf523..eb39fb2f39b6 100644 --- a/net/sched/police.c +++ b/net/sched/police.c | |||
@@ -284,7 +284,8 @@ static int tcf_act_police_cleanup(struct tc_action *a, int bind) | |||
284 | return 0; | 284 | return 0; |
285 | } | 285 | } |
286 | 286 | ||
287 | static int tcf_act_police(struct sk_buff **pskb, struct tc_action *a) | 287 | static int tcf_act_police(struct sk_buff **pskb, struct tc_action *a, |
288 | struct tcf_result *res) | ||
288 | { | 289 | { |
289 | psched_time_t now; | 290 | psched_time_t now; |
290 | struct sk_buff *skb = *pskb; | 291 | struct sk_buff *skb = *pskb; |
diff --git a/net/sched/simple.c b/net/sched/simple.c index 3ab4c675ab5d..8a6ae4f491e8 100644 --- a/net/sched/simple.c +++ b/net/sched/simple.c | |||
@@ -44,7 +44,7 @@ static DEFINE_RWLOCK(simp_lock); | |||
44 | #include <net/pkt_act.h> | 44 | #include <net/pkt_act.h> |
45 | #include <net/act_generic.h> | 45 | #include <net/act_generic.h> |
46 | 46 | ||
47 | static int tcf_simp(struct sk_buff **pskb, struct tc_action *a) | 47 | static int tcf_simp(struct sk_buff **pskb, struct tc_action *a, struct tcf_result *res) |
48 | { | 48 | { |
49 | struct sk_buff *skb = *pskb; | 49 | struct sk_buff *skb = *pskb; |
50 | struct tcf_defact *p = PRIV(a, defact); | 50 | struct tcf_defact *p = PRIV(a, defact); |