Lines Matching defs:sch

56 	u32		quantum;	/* psched_mtu(qdisc_dev(sch)); */
76 static unsigned int fq_codel_classify(struct sk_buff *skb, struct Qdisc *sch,
79 struct fq_codel_sched_data *q = qdisc_priv(sch);
84 if (TC_H_MAJ(skb->priority) == sch->handle &&
137 static unsigned int fq_codel_drop(struct Qdisc *sch, unsigned int max_packets,
140 struct fq_codel_sched_data *q = qdisc_priv(sch);
178 sch->qstats.drops += i;
179 sch->qstats.backlog -= len;
180 sch->q.qlen -= i;
184 static int fq_codel_enqueue(struct sk_buff *skb, struct Qdisc *sch,
187 struct fq_codel_sched_data *q = qdisc_priv(sch);
194 idx = fq_codel_classify(skb, sch, &ret);
197 qdisc_qstats_drop(sch);
207 qdisc_qstats_backlog_inc(sch, skb);
217 if (++sch->q.qlen <= sch->limit && !memory_limited)
220 prev_backlog = sch->qstats.backlog;
221 prev_qlen = sch->q.qlen;
230 ret = fq_codel_drop(sch, q->drop_batch_size, to_free);
232 prev_qlen -= sch->q.qlen;
233 prev_backlog -= sch->qstats.backlog;
243 qdisc_tree_reduce_backlog(sch, prev_qlen - 1,
247 qdisc_tree_reduce_backlog(sch, prev_qlen, prev_backlog);
257 struct Qdisc *sch = ctx;
258 struct fq_codel_sched_data *q = qdisc_priv(sch);
267 sch->q.qlen--;
268 sch->qstats.backlog -= qdisc_pkt_len(skb);
275 struct Qdisc *sch = ctx;
278 qdisc_qstats_drop(sch);
281 static struct sk_buff *fq_codel_dequeue(struct Qdisc *sch)
283 struct fq_codel_sched_data *q = qdisc_priv(sch);
303 skb = codel_dequeue(sch, &sch->qstats.backlog, &q->cparams,
315 qdisc_bstats_update(sch, skb);
320 if (q->cstats.drop_count && sch->q.qlen) {
321 qdisc_tree_reduce_backlog(sch, q->cstats.drop_count,
335 static void fq_codel_reset(struct Qdisc *sch)
337 struct fq_codel_sched_data *q = qdisc_priv(sch);
365 static int fq_codel_change(struct Qdisc *sch, struct nlattr *opt,
368 struct fq_codel_sched_data *q = qdisc_priv(sch);
395 sch_tree_lock(sch);
416 sch->limit = nla_get_u32(tb[TCA_FQ_CODEL_LIMIT]);
430 while (sch->q.qlen > sch->limit ||
432 struct sk_buff *skb = fq_codel_dequeue(sch);
438 qdisc_tree_reduce_backlog(sch, q->cstats.drop_count, q->cstats.drop_len);
442 sch_tree_unlock(sch);
446 static void fq_codel_destroy(struct Qdisc *sch)
448 struct fq_codel_sched_data *q = qdisc_priv(sch);
455 static int fq_codel_init(struct Qdisc *sch, struct nlattr *opt,
458 struct fq_codel_sched_data *q = qdisc_priv(sch);
462 sch->limit = 10*1024;
466 q->quantum = psched_mtu(qdisc_dev(sch));
472 q->cparams.mtu = psched_mtu(qdisc_dev(sch));
475 err = fq_codel_change(sch, opt, extack);
480 err = tcf_block_get(&q->block, &q->filter_list, sch, extack);
504 if (sch->limit >= 1)
505 sch->flags |= TCQ_F_CAN_BYPASS;
507 sch->flags &= ~TCQ_F_CAN_BYPASS;
518 static int fq_codel_dump(struct Qdisc *sch, struct sk_buff *skb)
520 struct fq_codel_sched_data *q = qdisc_priv(sch);
530 sch->limit) ||
556 static int fq_codel_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
558 struct fq_codel_sched_data *q = qdisc_priv(sch);
572 sch_tree_lock(sch);
578 sch_tree_unlock(sch);
583 static struct Qdisc *fq_codel_leaf(struct Qdisc *sch, unsigned long arg)
588 static unsigned long fq_codel_find(struct Qdisc *sch, u32 classid)
593 static unsigned long fq_codel_bind(struct Qdisc *sch, unsigned long parent,
603 static struct tcf_block *fq_codel_tcf_block(struct Qdisc *sch, unsigned long cl,
606 struct fq_codel_sched_data *q = qdisc_priv(sch);
613 static int fq_codel_dump_class(struct Qdisc *sch, unsigned long cl,
620 static int fq_codel_dump_class_stats(struct Qdisc *sch, unsigned long cl,
623 struct fq_codel_sched_data *q = qdisc_priv(sch);
649 sch_tree_lock(sch);
655 sch_tree_unlock(sch);
667 static void fq_codel_walk(struct Qdisc *sch, struct qdisc_walker *arg)
669 struct fq_codel_sched_data *q = qdisc_priv(sch);
681 if (arg->fn(sch, i + 1, arg) < 0) {