|
@@ -824,6 +824,16 @@ static inline void __qdisc_drop(struct sk_buff *skb, struct sk_buff **to_free)
|
|
*to_free = skb;
|
|
*to_free = skb;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static inline void __qdisc_drop_all(struct sk_buff *skb,
|
|
|
|
+ struct sk_buff **to_free)
|
|
|
|
+{
|
|
|
|
+ if (skb->prev)
|
|
|
|
+ skb->prev->next = *to_free;
|
|
|
|
+ else
|
|
|
|
+ skb->next = *to_free;
|
|
|
|
+ *to_free = skb;
|
|
|
|
+}
|
|
|
|
+
|
|
static inline unsigned int __qdisc_queue_drop_head(struct Qdisc *sch,
|
|
static inline unsigned int __qdisc_queue_drop_head(struct Qdisc *sch,
|
|
struct qdisc_skb_head *qh,
|
|
struct qdisc_skb_head *qh,
|
|
struct sk_buff **to_free)
|
|
struct sk_buff **to_free)
|
|
@@ -956,6 +966,15 @@ static inline int qdisc_drop(struct sk_buff *skb, struct Qdisc *sch,
|
|
return NET_XMIT_DROP;
|
|
return NET_XMIT_DROP;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static inline int qdisc_drop_all(struct sk_buff *skb, struct Qdisc *sch,
|
|
|
|
+ struct sk_buff **to_free)
|
|
|
|
+{
|
|
|
|
+ __qdisc_drop_all(skb, to_free);
|
|
|
|
+ qdisc_qstats_drop(sch);
|
|
|
|
+
|
|
|
|
+ return NET_XMIT_DROP;
|
|
|
|
+}
|
|
|
|
+
|
|
/* Length to Time (L2T) lookup in a qdisc_rate_table, to determine how
|
|
/* Length to Time (L2T) lookup in a qdisc_rate_table, to determine how
|
|
long it will take to send a packet given its size.
|
|
long it will take to send a packet given its size.
|
|
*/
|
|
*/
|