Lines Matching refs:sch
41 multiq_classify(struct sk_buff *skb, struct Qdisc *sch, int *qerr) in multiq_classify() argument
43 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_classify()
71 multiq_enqueue(struct sk_buff *skb, struct Qdisc *sch, in multiq_enqueue() argument
77 qdisc = multiq_classify(skb, sch, &ret); in multiq_enqueue()
82 qdisc_qstats_drop(sch); in multiq_enqueue()
90 sch->q.qlen++; in multiq_enqueue()
94 qdisc_qstats_drop(sch); in multiq_enqueue()
98 static struct sk_buff *multiq_dequeue(struct Qdisc *sch) in multiq_dequeue() argument
100 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_dequeue()
115 netdev_get_tx_queue(qdisc_dev(sch), q->curband))) { in multiq_dequeue()
119 qdisc_bstats_update(sch, skb); in multiq_dequeue()
120 sch->q.qlen--; in multiq_dequeue()
129 static struct sk_buff *multiq_peek(struct Qdisc *sch) in multiq_peek() argument
131 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_peek()
147 netdev_get_tx_queue(qdisc_dev(sch), curband))) { in multiq_peek()
159 multiq_reset(struct Qdisc *sch) in multiq_reset() argument
162 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_reset()
166 sch->q.qlen = 0; in multiq_reset()
171 multiq_destroy(struct Qdisc *sch) in multiq_destroy() argument
174 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_destroy()
183 static int multiq_tune(struct Qdisc *sch, struct nlattr *opt, in multiq_tune() argument
186 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_tune()
190 if (!netif_is_multiqueue(qdisc_dev(sch))) in multiq_tune()
197 qopt->bands = qdisc_dev(sch)->real_num_tx_queues; in multiq_tune()
199 sch_tree_lock(sch); in multiq_tune()
211 sch_tree_unlock(sch); in multiq_tune()
216 child = qdisc_create_dflt(sch->dev_queue, in multiq_tune()
218 TC_H_MAKE(sch->handle, in multiq_tune()
221 sch_tree_lock(sch); in multiq_tune()
233 sch_tree_unlock(sch); in multiq_tune()
240 static int multiq_init(struct Qdisc *sch, struct nlattr *opt, in multiq_init() argument
243 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_init()
251 err = tcf_block_get(&q->block, &q->filter_list, sch, extack); in multiq_init()
255 q->max_bands = qdisc_dev(sch)->num_tx_queues; in multiq_init()
263 return multiq_tune(sch, opt, extack); in multiq_init()
266 static int multiq_dump(struct Qdisc *sch, struct sk_buff *skb) in multiq_dump() argument
268 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_dump()
285 static int multiq_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new, in multiq_graft() argument
288 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_graft()
294 *old = qdisc_replace(sch, new, &q->queues[band]); in multiq_graft()
299 multiq_leaf(struct Qdisc *sch, unsigned long arg) in multiq_leaf() argument
301 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_leaf()
307 static unsigned long multiq_find(struct Qdisc *sch, u32 classid) in multiq_find() argument
309 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_find()
317 static unsigned long multiq_bind(struct Qdisc *sch, unsigned long parent, in multiq_bind() argument
320 return multiq_find(sch, classid); in multiq_bind()
328 static int multiq_dump_class(struct Qdisc *sch, unsigned long cl, in multiq_dump_class() argument
331 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_dump_class()
338 static int multiq_dump_class_stats(struct Qdisc *sch, unsigned long cl, in multiq_dump_class_stats() argument
341 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_dump_class_stats()
345 if (gnet_stats_copy_basic(qdisc_root_sleeping_running(sch), in multiq_dump_class_stats()
353 static void multiq_walk(struct Qdisc *sch, struct qdisc_walker *arg) in multiq_walk() argument
355 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_walk()
366 if (arg->fn(sch, band + 1, arg) < 0) { in multiq_walk()
374 static struct tcf_block *multiq_tcf_block(struct Qdisc *sch, unsigned long cl, in multiq_tcf_block() argument
377 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_tcf_block()