diff options
Diffstat (limited to 'include/net/sch_generic.h')
-rw-r--r-- | include/net/sch_generic.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index c5bb13065051..f15b045a85e9 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h | |||
@@ -343,6 +343,18 @@ static inline unsigned int qdisc_pkt_len(struct sk_buff *skb) | |||
343 | return qdisc_skb_cb(skb)->pkt_len; | 343 | return qdisc_skb_cb(skb)->pkt_len; |
344 | } | 344 | } |
345 | 345 | ||
346 | #ifdef CONFIG_NET_CLS_ACT | ||
347 | /* additional qdisc xmit flags */ | ||
348 | enum net_xmit_qdisc_t { | ||
349 | __NET_XMIT_STOLEN = 0x00010000, | ||
350 | }; | ||
351 | |||
352 | #define net_xmit_drop_count(e) ((e) & __NET_XMIT_STOLEN ? 0 : 1) | ||
353 | |||
354 | #else | ||
355 | #define net_xmit_drop_count(e) (1) | ||
356 | #endif | ||
357 | |||
346 | static inline int qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch) | 358 | static inline int qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch) |
347 | { | 359 | { |
348 | #ifdef CONFIG_NET_SCHED | 360 | #ifdef CONFIG_NET_SCHED |
@@ -355,7 +367,7 @@ static inline int qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch) | |||
355 | static inline int qdisc_enqueue_root(struct sk_buff *skb, struct Qdisc *sch) | 367 | static inline int qdisc_enqueue_root(struct sk_buff *skb, struct Qdisc *sch) |
356 | { | 368 | { |
357 | qdisc_skb_cb(skb)->pkt_len = skb->len; | 369 | qdisc_skb_cb(skb)->pkt_len = skb->len; |
358 | return qdisc_enqueue(skb, sch); | 370 | return qdisc_enqueue(skb, sch) & NET_XMIT_MASK; |
359 | } | 371 | } |
360 | 372 | ||
361 | static inline int __qdisc_enqueue_tail(struct sk_buff *skb, struct Qdisc *sch, | 373 | static inline int __qdisc_enqueue_tail(struct sk_buff *skb, struct Qdisc *sch, |