Lines Matching full:sch
59 struct Qdisc *sch; member
81 static unsigned int fq_pie_classify(struct sk_buff *skb, struct Qdisc *sch, in fq_pie_classify() argument
84 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_classify()
89 if (TC_H_MAJ(skb->priority) == sch->handle && in fq_pie_classify()
130 static int fq_pie_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch, in fq_pie_qdisc_enqueue() argument
134 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_qdisc_enqueue()
143 idx = fq_pie_classify(skb, sch, &ret); in fq_pie_qdisc_enqueue()
146 qdisc_qstats_drop(sch); in fq_pie_qdisc_enqueue()
158 if (unlikely(qdisc_qlen(sch) >= sch->limit)) { in fq_pie_qdisc_enqueue()
167 if (!pie_drop_early(sch, &q->p_params, &sel_flow->vars, in fq_pie_qdisc_enqueue()
187 sch->qstats.backlog += pkt_len; in fq_pie_qdisc_enqueue()
188 sch->q.qlen++; in fq_pie_qdisc_enqueue()
204 qdisc_drop_reason(skb, sch, to_free, reason); in fq_pie_qdisc_enqueue()
238 static struct sk_buff *fq_pie_qdisc_dequeue(struct Qdisc *sch) in fq_pie_qdisc_dequeue() argument
240 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_qdisc_dequeue()
265 sch->qstats.backlog -= pkt_len; in fq_pie_qdisc_dequeue()
266 sch->q.qlen--; in fq_pie_qdisc_dequeue()
267 qdisc_bstats_update(sch, skb); in fq_pie_qdisc_dequeue()
287 static int fq_pie_change(struct Qdisc *sch, struct nlattr *opt, in fq_pie_change() argument
291 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_change()
299 sch_tree_lock(sch); in fq_pie_change()
304 WRITE_ONCE(sch->limit, limit); in fq_pie_change()
367 while (sch->q.qlen > sch->limit) { in fq_pie_change()
368 struct sk_buff *skb = qdisc_dequeue_internal(sch, false); in fq_pie_change()
377 qdisc_tree_reduce_backlog(sch, dropped_pkts, dropped_bytes); in fq_pie_change()
379 sch_tree_unlock(sch); in fq_pie_change()
383 sch_tree_unlock(sch); in fq_pie_change()
391 struct Qdisc *sch = q->sch; in fq_pie_timer() local
396 root_lock = qdisc_lock(qdisc_root_sleeping(sch)); in fq_pie_timer()
420 static int fq_pie_init(struct Qdisc *sch, struct nlattr *opt, in fq_pie_init() argument
423 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_init()
428 sch->limit = 10 * 1024; in fq_pie_init()
429 q->p_params.limit = sch->limit; in fq_pie_init()
430 q->quantum = psched_mtu(qdisc_dev(sch)); in fq_pie_init()
431 q->sch = sch; in fq_pie_init()
441 err = fq_pie_change(sch, opt, extack); in fq_pie_init()
447 err = tcf_block_get(&q->block, &q->filter_list, sch, extack); in fq_pie_init()
474 static int fq_pie_dump(struct Qdisc *sch, struct sk_buff *skb) in fq_pie_dump() argument
476 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_dump()
484 if (nla_put_u32(skb, TCA_FQ_PIE_LIMIT, READ_ONCE(sch->limit)) || in fq_pie_dump()
510 static int fq_pie_dump_stats(struct Qdisc *sch, struct gnet_dump *d) in fq_pie_dump_stats() argument
512 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_dump_stats()
524 sch_tree_lock(sch); in fq_pie_dump_stats()
530 sch_tree_unlock(sch); in fq_pie_dump_stats()
535 static void fq_pie_reset(struct Qdisc *sch) in fq_pie_reset() argument
537 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_reset()
554 static void fq_pie_destroy(struct Qdisc *sch) in fq_pie_destroy() argument
556 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_destroy()