sch_fifo.c (62e3ba1b558e5f393ef746880613fb8222e64d03) | sch_fifo.c (1e90474c377e92db7262a8968a45c1dd980ca9e5) |
---|---|
1/* 2 * net/sched/sch_fifo.c The simplest FIFO queue. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation; either version 7 * 2 of the License, or (at your option) any later version. 8 * --- 29 unchanged lines hidden (view full) --- 38 struct fifo_sched_data *q = qdisc_priv(sch); 39 40 if (likely(skb_queue_len(&sch->q) < q->limit)) 41 return qdisc_enqueue_tail(skb, sch); 42 43 return qdisc_reshape_fail(skb, sch); 44} 45 | 1/* 2 * net/sched/sch_fifo.c The simplest FIFO queue. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation; either version 7 * 2 of the License, or (at your option) any later version. 8 * --- 29 unchanged lines hidden (view full) --- 38 struct fifo_sched_data *q = qdisc_priv(sch); 39 40 if (likely(skb_queue_len(&sch->q) < q->limit)) 41 return qdisc_enqueue_tail(skb, sch); 42 43 return qdisc_reshape_fail(skb, sch); 44} 45 |
46static int fifo_init(struct Qdisc *sch, struct rtattr *opt) | 46static int fifo_init(struct Qdisc *sch, struct nlattr *opt) |
47{ 48 struct fifo_sched_data *q = qdisc_priv(sch); 49 50 if (opt == NULL) { 51 u32 limit = sch->dev->tx_queue_len ? : 1; 52 53 if (sch->ops == &bfifo_qdisc_ops) 54 limit *= sch->dev->mtu; 55 56 q->limit = limit; 57 } else { | 47{ 48 struct fifo_sched_data *q = qdisc_priv(sch); 49 50 if (opt == NULL) { 51 u32 limit = sch->dev->tx_queue_len ? : 1; 52 53 if (sch->ops == &bfifo_qdisc_ops) 54 limit *= sch->dev->mtu; 55 56 q->limit = limit; 57 } else { |
58 struct tc_fifo_qopt *ctl = RTA_DATA(opt); | 58 struct tc_fifo_qopt *ctl = nla_data(opt); |
59 | 59 |
60 if (RTA_PAYLOAD(opt) < sizeof(*ctl)) | 60 if (nla_len(opt) < sizeof(*ctl)) |
61 return -EINVAL; 62 63 q->limit = ctl->limit; 64 } 65 66 return 0; 67} 68 69static int fifo_dump(struct Qdisc *sch, struct sk_buff *skb) 70{ 71 struct fifo_sched_data *q = qdisc_priv(sch); 72 struct tc_fifo_qopt opt = { .limit = q->limit }; 73 | 61 return -EINVAL; 62 63 q->limit = ctl->limit; 64 } 65 66 return 0; 67} 68 69static int fifo_dump(struct Qdisc *sch, struct sk_buff *skb) 70{ 71 struct fifo_sched_data *q = qdisc_priv(sch); 72 struct tc_fifo_qopt opt = { .limit = q->limit }; 73 |
74 RTA_PUT(skb, TCA_OPTIONS, sizeof(opt), &opt); | 74 NLA_PUT(skb, TCA_OPTIONS, sizeof(opt), &opt); |
75 return skb->len; 76 | 75 return skb->len; 76 |
77rtattr_failure: | 77nla_put_failure: |
78 return -1; 79} 80 81struct Qdisc_ops pfifo_qdisc_ops __read_mostly = { 82 .id = "pfifo", 83 .priv_size = sizeof(struct fifo_sched_data), 84 .enqueue = pfifo_enqueue, 85 .dequeue = qdisc_dequeue_head, --- 24 unchanged lines hidden --- | 78 return -1; 79} 80 81struct Qdisc_ops pfifo_qdisc_ops __read_mostly = { 82 .id = "pfifo", 83 .priv_size = sizeof(struct fifo_sched_data), 84 .enqueue = pfifo_enqueue, 85 .dequeue = qdisc_dequeue_head, --- 24 unchanged lines hidden --- |