Lines Matching refs:sch

71 	struct Qdisc *sch = ctx;
72 struct sk_buff *skb = __qdisc_dequeue_head(&sch->q);
75 sch->qstats.backlog -= qdisc_pkt_len(skb);
83 struct Qdisc *sch = ctx;
86 qdisc_qstats_drop(sch);
89 static struct sk_buff *codel_qdisc_dequeue(struct Qdisc *sch)
91 struct codel_sched_data *q = qdisc_priv(sch);
94 skb = codel_dequeue(sch, &sch->qstats.backlog, &q->params, &q->vars,
101 if (q->stats.drop_count && sch->q.qlen) {
102 qdisc_tree_reduce_backlog(sch, q->stats.drop_count, q->stats.drop_len);
107 qdisc_bstats_update(sch, skb);
111 static int codel_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch,
116 if (likely(qdisc_qlen(sch) < sch->limit)) {
118 return qdisc_enqueue_tail(skb, sch);
120 q = qdisc_priv(sch);
122 return qdisc_drop(skb, sch, to_free);
133 static int codel_change(struct Qdisc *sch, struct nlattr *opt,
136 struct codel_sched_data *q = qdisc_priv(sch);
146 sch_tree_lock(sch);
167 sch->limit = nla_get_u32(tb[TCA_CODEL_LIMIT]);
172 qlen = sch->q.qlen;
173 while (sch->q.qlen > sch->limit) {
174 struct sk_buff *skb = __qdisc_dequeue_head(&sch->q);
177 qdisc_qstats_backlog_dec(sch, skb);
178 rtnl_qdisc_drop(skb, sch);
180 qdisc_tree_reduce_backlog(sch, qlen - sch->q.qlen, dropped);
182 sch_tree_unlock(sch);
186 static int codel_init(struct Qdisc *sch, struct nlattr *opt,
189 struct codel_sched_data *q = qdisc_priv(sch);
191 sch->limit = DEFAULT_CODEL_LIMIT;
196 q->params.mtu = psched_mtu(qdisc_dev(sch));
199 int err = codel_change(sch, opt, extack);
205 if (sch->limit >= 1)
206 sch->flags |= TCQ_F_CAN_BYPASS;
208 sch->flags &= ~TCQ_F_CAN_BYPASS;
213 static int codel_dump(struct Qdisc *sch, struct sk_buff *skb)
215 struct codel_sched_data *q = qdisc_priv(sch);
225 sch->limit) ||
242 static int codel_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
244 const struct codel_sched_data *q = qdisc_priv(sch);
268 static void codel_reset(struct Qdisc *sch)
270 struct codel_sched_data *q = qdisc_priv(sch);
272 qdisc_reset_queue(sch);