12 #include <linux/module.h>
13 #include <linux/slab.h>
14 #include <linux/types.h>
15 #include <linux/kernel.h>
16 #include <linux/errno.h>
25 return qdisc_enqueue_tail(skb, sch);
27 return qdisc_reshape_fail(skb, sch);
30 static int pfifo_enqueue(
struct sk_buff *skb,
struct Qdisc *sch)
33 return qdisc_enqueue_tail(skb, sch);
35 return qdisc_reshape_fail(skb, sch);
38 static int pfifo_tail_enqueue(
struct sk_buff *skb,
struct Qdisc *sch)
41 return qdisc_enqueue_tail(skb, sch);
44 __qdisc_queue_drop_head(sch, &sch->
q);
46 qdisc_enqueue_tail(skb, sch);
57 u32 limit = qdisc_dev(sch)->tx_queue_len ? : 1;
60 limit *= psched_mtu(qdisc_dev(sch));
66 if (nla_len(opt) <
sizeof(*ctl))
73 bypass = sch->
limit >= psched_mtu(qdisc_dev(sch));
75 bypass = sch->
limit >= 1;
84 static int fifo_dump(
struct Qdisc *sch,
struct sk_buff *skb)
99 .enqueue = pfifo_enqueue,
100 .dequeue = qdisc_dequeue_head,
101 .peek = qdisc_peek_head,
102 .drop = qdisc_queue_drop,
104 .reset = qdisc_reset_queue,
114 .enqueue = bfifo_enqueue,
115 .dequeue = qdisc_dequeue_head,
116 .peek = qdisc_peek_head,
117 .drop = qdisc_queue_drop,
119 .reset = qdisc_reset_queue,
127 .
id =
"pfifo_head_drop",
129 .enqueue = pfifo_tail_enqueue,
130 .dequeue = qdisc_dequeue_head,
131 .peek = qdisc_peek_head,
132 .drop = qdisc_queue_drop_head,
134 .reset = qdisc_reset_queue,
156 ret = q->
ops->change(q, nla);
178 return q ? : ERR_PTR(err);