Lines Matching refs:sch
41 struct Qdisc *sch = ctx; in dequeue_func() local
42 struct sk_buff *skb = __qdisc_dequeue_head(&sch->q); in dequeue_func()
45 sch->qstats.backlog -= qdisc_pkt_len(skb); in dequeue_func()
53 struct Qdisc *sch = ctx; in drop_func() local
56 qdisc_qstats_drop(sch); in drop_func()
59 static struct sk_buff *codel_qdisc_dequeue(struct Qdisc *sch) in codel_qdisc_dequeue() argument
61 struct codel_sched_data *q = qdisc_priv(sch); in codel_qdisc_dequeue()
64 skb = codel_dequeue(sch, &sch->qstats.backlog, &q->params, &q->vars, in codel_qdisc_dequeue()
69 qdisc_tree_reduce_backlog(sch, q->stats.drop_count, q->stats.drop_len); in codel_qdisc_dequeue()
74 qdisc_bstats_update(sch, skb); in codel_qdisc_dequeue()
78 static int codel_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch, in codel_qdisc_enqueue() argument
83 if (likely(qdisc_qlen(sch) < sch->limit)) { in codel_qdisc_enqueue()
85 return qdisc_enqueue_tail(skb, sch); in codel_qdisc_enqueue()
87 q = qdisc_priv(sch); in codel_qdisc_enqueue()
89 return qdisc_drop_reason(skb, sch, to_free, in codel_qdisc_enqueue()
101 static int codel_change(struct Qdisc *sch, struct nlattr *opt, in codel_change() argument
104 struct codel_sched_data *q = qdisc_priv(sch); in codel_change()
114 sch_tree_lock(sch); in codel_change()
138 WRITE_ONCE(sch->limit, in codel_change()
145 qlen = sch->q.qlen; in codel_change()
146 while (sch->q.qlen > sch->limit) { in codel_change()
147 struct sk_buff *skb = qdisc_dequeue_internal(sch, true); in codel_change()
150 qdisc_qstats_backlog_dec(sch, skb); in codel_change()
151 rtnl_qdisc_drop(skb, sch); in codel_change()
153 qdisc_tree_reduce_backlog(sch, qlen - sch->q.qlen, dropped); in codel_change()
155 sch_tree_unlock(sch); in codel_change()
159 static int codel_init(struct Qdisc *sch, struct nlattr *opt, in codel_init() argument
162 struct codel_sched_data *q = qdisc_priv(sch); in codel_init()
164 sch->limit = DEFAULT_CODEL_LIMIT; in codel_init()
169 q->params.mtu = psched_mtu(qdisc_dev(sch)); in codel_init()
172 int err = codel_change(sch, opt, extack); in codel_init()
178 if (sch->limit >= 1) in codel_init()
179 sch->flags |= TCQ_F_CAN_BYPASS; in codel_init()
181 sch->flags &= ~TCQ_F_CAN_BYPASS; in codel_init()
186 static int codel_dump(struct Qdisc *sch, struct sk_buff *skb) in codel_dump() argument
188 struct codel_sched_data *q = qdisc_priv(sch); in codel_dump()
199 READ_ONCE(sch->limit)) || in codel_dump()
217 static int codel_dump_stats(struct Qdisc *sch, struct gnet_dump *d) in codel_dump_stats() argument
219 const struct codel_sched_data *q = qdisc_priv(sch); in codel_dump_stats()
243 static void codel_reset(struct Qdisc *sch) in codel_reset() argument
245 struct codel_sched_data *q = qdisc_priv(sch); in codel_reset()
247 qdisc_reset_queue(sch); in codel_reset()