Lines Matching refs:sch
58 struct Qdisc *sch; member
80 static unsigned int fq_pie_classify(struct sk_buff *skb, struct Qdisc *sch, in fq_pie_classify() argument
83 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_classify()
88 if (TC_H_MAJ(skb->priority) == sch->handle && in fq_pie_classify()
129 static int fq_pie_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch, in fq_pie_qdisc_enqueue() argument
132 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_qdisc_enqueue()
141 idx = fq_pie_classify(skb, sch, &ret); in fq_pie_qdisc_enqueue()
144 qdisc_qstats_drop(sch); in fq_pie_qdisc_enqueue()
156 if (unlikely(qdisc_qlen(sch) >= sch->limit)) { in fq_pie_qdisc_enqueue()
163 if (!pie_drop_early(sch, &q->p_params, &sel_flow->vars, in fq_pie_qdisc_enqueue()
183 sch->qstats.backlog += pkt_len; in fq_pie_qdisc_enqueue()
184 sch->q.qlen++; in fq_pie_qdisc_enqueue()
201 qdisc_qstats_drop(sch); in fq_pie_qdisc_enqueue()
235 static struct sk_buff *fq_pie_qdisc_dequeue(struct Qdisc *sch) in fq_pie_qdisc_dequeue() argument
237 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_qdisc_dequeue()
262 sch->qstats.backlog -= pkt_len; in fq_pie_qdisc_dequeue()
263 sch->q.qlen--; in fq_pie_qdisc_dequeue()
264 qdisc_bstats_update(sch, skb); in fq_pie_qdisc_dequeue()
284 static int fq_pie_change(struct Qdisc *sch, struct nlattr *opt, in fq_pie_change() argument
287 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_change()
300 sch_tree_lock(sch); in fq_pie_change()
305 sch->limit = limit; in fq_pie_change()
362 while (sch->q.qlen > sch->limit) { in fq_pie_change()
363 struct sk_buff *skb = fq_pie_qdisc_dequeue(sch); in fq_pie_change()
369 qdisc_tree_reduce_backlog(sch, num_dropped, len_dropped); in fq_pie_change()
371 sch_tree_unlock(sch); in fq_pie_change()
375 sch_tree_unlock(sch); in fq_pie_change()
383 struct Qdisc *sch = q->sch; in fq_pie_timer() local
387 root_lock = qdisc_lock(qdisc_root_sleeping(sch)); in fq_pie_timer()
410 static int fq_pie_init(struct Qdisc *sch, struct nlattr *opt, in fq_pie_init() argument
413 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_init()
418 sch->limit = 10 * 1024; in fq_pie_init()
419 q->p_params.limit = sch->limit; in fq_pie_init()
420 q->quantum = psched_mtu(qdisc_dev(sch)); in fq_pie_init()
421 q->sch = sch; in fq_pie_init()
431 err = fq_pie_change(sch, opt, extack); in fq_pie_init()
437 err = tcf_block_get(&q->block, &q->filter_list, sch, extack); in fq_pie_init()
464 static int fq_pie_dump(struct Qdisc *sch, struct sk_buff *skb) in fq_pie_dump() argument
466 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_dump()
474 if (nla_put_u32(skb, TCA_FQ_PIE_LIMIT, sch->limit) || in fq_pie_dump()
499 static int fq_pie_dump_stats(struct Qdisc *sch, struct gnet_dump *d) in fq_pie_dump_stats() argument
501 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_dump_stats()
513 sch_tree_lock(sch); in fq_pie_dump_stats()
519 sch_tree_unlock(sch); in fq_pie_dump_stats()
524 static void fq_pie_reset(struct Qdisc *sch) in fq_pie_reset() argument
526 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_reset()
543 static void fq_pie_destroy(struct Qdisc *sch) in fq_pie_destroy() argument
545 struct fq_pie_sched_data *q = qdisc_priv(sch); in fq_pie_destroy()