Lines Matching refs:sch
59 struct Qdisc *sch;
81 static unsigned int fq_pie_classify(struct sk_buff *skb, struct Qdisc *sch,
84 struct fq_pie_sched_data *q = qdisc_priv(sch);
89 if (TC_H_MAJ(skb->priority) == sch->handle &&
130 static int fq_pie_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch,
134 struct fq_pie_sched_data *q = qdisc_priv(sch);
143 idx = fq_pie_classify(skb, sch, &ret);
146 qdisc_qstats_drop(sch);
158 if (unlikely(qdisc_qlen(sch) >= sch->limit)) {
167 if (!pie_drop_early(sch, &q->p_params, &sel_flow->vars,
187 sch->qstats.backlog += pkt_len;
188 sch->q.qlen++;
204 qdisc_drop_reason(skb, sch, to_free, reason);
238 static struct sk_buff *fq_pie_qdisc_dequeue(struct Qdisc *sch)
240 struct fq_pie_sched_data *q = qdisc_priv(sch);
265 sch->qstats.backlog -= pkt_len;
266 sch->q.qlen--;
267 qdisc_bstats_update(sch, skb);
287 static int fq_pie_change(struct Qdisc *sch, struct nlattr *opt,
290 struct fq_pie_sched_data *q = qdisc_priv(sch);
300 sch_tree_lock(sch);
305 WRITE_ONCE(sch->limit, limit);
368 while (sch->q.qlen > sch->limit) {
369 struct sk_buff *skb = qdisc_dequeue_internal(sch, false);
375 qdisc_tree_reduce_backlog(sch, num_dropped, len_dropped);
377 sch_tree_unlock(sch);
381 sch_tree_unlock(sch);
389 struct Qdisc *sch = q->sch;
394 root_lock = qdisc_lock(qdisc_root_sleeping(sch));
418 static int fq_pie_init(struct Qdisc *sch, struct nlattr *opt,
421 struct fq_pie_sched_data *q = qdisc_priv(sch);
426 sch->limit = 10 * 1024;
427 q->p_params.limit = sch->limit;
428 q->quantum = psched_mtu(qdisc_dev(sch));
429 q->sch = sch;
439 err = fq_pie_change(sch, opt, extack);
445 err = tcf_block_get(&q->block, &q->filter_list, sch, extack);
472 static int fq_pie_dump(struct Qdisc *sch, struct sk_buff *skb)
474 struct fq_pie_sched_data *q = qdisc_priv(sch);
482 if (nla_put_u32(skb, TCA_FQ_PIE_LIMIT, READ_ONCE(sch->limit)) ||
508 static int fq_pie_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
510 struct fq_pie_sched_data *q = qdisc_priv(sch);
522 sch_tree_lock(sch);
528 sch_tree_unlock(sch);
533 static void fq_pie_reset(struct Qdisc *sch)
535 struct fq_pie_sched_data *q = qdisc_priv(sch);
552 static void fq_pie_destroy(struct Qdisc *sch)
554 struct fq_pie_sched_data *q = qdisc_priv(sch);