diff options
Diffstat (limited to 'net/sched')
-rw-r--r-- | net/sched/sch_dsmark.c | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/net/sched/sch_dsmark.c b/net/sched/sch_dsmark.c index 4d2c233a8611..2d7e891e6b0d 100644 --- a/net/sched/sch_dsmark.c +++ b/net/sched/sch_dsmark.c | |||
@@ -237,25 +237,34 @@ static int dsmark_enqueue(struct sk_buff *skb,struct Qdisc *sch) | |||
237 | D2PRINTK("result %d class 0x%04x\n", result, res.classid); | 237 | D2PRINTK("result %d class 0x%04x\n", result, res.classid); |
238 | 238 | ||
239 | switch (result) { | 239 | switch (result) { |
240 | #ifdef CONFIG_NET_CLS_POLICE | 240 | #ifdef CONFIG_NET_CLS_ACT |
241 | case TC_POLICE_SHOT: | 241 | case TC_ACT_QUEUED: |
242 | kfree_skb(skb); | 242 | case TC_ACT_STOLEN: |
243 | sch->qstats.drops++; | 243 | kfree_skb(skb); |
244 | return NET_XMIT_POLICED; | 244 | return NET_XMIT_SUCCESS; |
245 | case TC_ACT_SHOT: | ||
246 | kfree_skb(skb); | ||
247 | sch->qstats.drops++; | ||
248 | return NET_XMIT_BYPASS; | ||
249 | #elif defined(CONFIG_NET_CLS_POLICE) | ||
250 | case TC_POLICE_SHOT: | ||
251 | kfree_skb(skb); | ||
252 | sch->qstats.drops++; | ||
253 | return NET_XMIT_POLICED; | ||
245 | #if 0 | 254 | #if 0 |
246 | case TC_POLICE_RECLASSIFY: | 255 | case TC_POLICE_RECLASSIFY: |
247 | /* FIXME: what to do here ??? */ | 256 | /* FIXME: what to do here ??? */ |
248 | #endif | 257 | #endif |
249 | #endif | 258 | #endif |
250 | case TC_POLICE_OK: | 259 | case TC_POLICE_OK: |
251 | skb->tc_index = TC_H_MIN(res.classid); | 260 | skb->tc_index = TC_H_MIN(res.classid); |
252 | break; | 261 | break; |
253 | case TC_POLICE_UNSPEC: | 262 | case TC_POLICE_UNSPEC: |
254 | /* fall through */ | 263 | /* fall through */ |
255 | default: | 264 | default: |
256 | if (p->default_index != NO_DEFAULT_INDEX) | 265 | if (p->default_index != NO_DEFAULT_INDEX) |
257 | skb->tc_index = p->default_index; | 266 | skb->tc_index = p->default_index; |
258 | break; | 267 | break; |
259 | } | 268 | } |
260 | } | 269 | } |
261 | 270 | ||