Lines Matching refs:sch
30 multiq_classify(struct sk_buff *skb, struct Qdisc *sch, int *qerr) in multiq_classify() argument
32 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_classify()
60 multiq_enqueue(struct sk_buff *skb, struct Qdisc *sch, in multiq_enqueue() argument
66 qdisc = multiq_classify(skb, sch, &ret); in multiq_enqueue()
71 qdisc_qstats_drop(sch); in multiq_enqueue()
79 sch->q.qlen++; in multiq_enqueue()
83 qdisc_qstats_drop(sch); in multiq_enqueue()
87 static struct sk_buff *multiq_dequeue(struct Qdisc *sch) in multiq_dequeue() argument
89 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_dequeue()
104 netdev_get_tx_queue(qdisc_dev(sch), q->curband))) { in multiq_dequeue()
108 qdisc_bstats_update(sch, skb); in multiq_dequeue()
109 sch->q.qlen--; in multiq_dequeue()
118 static struct sk_buff *multiq_peek(struct Qdisc *sch) in multiq_peek() argument
120 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_peek()
136 netdev_get_tx_queue(qdisc_dev(sch), curband))) { in multiq_peek()
148 multiq_reset(struct Qdisc *sch) in multiq_reset() argument
151 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_reset()
155 sch->q.qlen = 0; in multiq_reset()
160 multiq_destroy(struct Qdisc *sch) in multiq_destroy() argument
163 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_destroy()
172 static int multiq_tune(struct Qdisc *sch, struct nlattr *opt, in multiq_tune() argument
175 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_tune()
180 if (!netif_is_multiqueue(qdisc_dev(sch))) in multiq_tune()
187 qopt->bands = qdisc_dev(sch)->real_num_tx_queues; in multiq_tune()
194 sch_tree_lock(sch); in multiq_tune()
206 sch_tree_unlock(sch); in multiq_tune()
215 child = qdisc_create_dflt(sch->dev_queue, in multiq_tune()
217 TC_H_MAKE(sch->handle, in multiq_tune()
220 sch_tree_lock(sch); in multiq_tune()
228 sch_tree_unlock(sch); in multiq_tune()
236 static int multiq_init(struct Qdisc *sch, struct nlattr *opt, in multiq_init() argument
239 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_init()
247 err = tcf_block_get(&q->block, &q->filter_list, sch, extack); in multiq_init()
251 q->max_bands = qdisc_dev(sch)->num_tx_queues; in multiq_init()
259 return multiq_tune(sch, opt, extack); in multiq_init()
262 static int multiq_dump(struct Qdisc *sch, struct sk_buff *skb) in multiq_dump() argument
264 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_dump()
281 static int multiq_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new, in multiq_graft() argument
284 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_graft()
290 *old = qdisc_replace(sch, new, &q->queues[band]); in multiq_graft()
295 multiq_leaf(struct Qdisc *sch, unsigned long arg) in multiq_leaf() argument
297 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_leaf()
303 static unsigned long multiq_find(struct Qdisc *sch, u32 classid) in multiq_find() argument
305 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_find()
313 static unsigned long multiq_bind(struct Qdisc *sch, unsigned long parent, in multiq_bind() argument
316 return multiq_find(sch, classid); in multiq_bind()
324 static int multiq_dump_class(struct Qdisc *sch, unsigned long cl, in multiq_dump_class() argument
327 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_dump_class()
334 static int multiq_dump_class_stats(struct Qdisc *sch, unsigned long cl, in multiq_dump_class_stats() argument
337 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_dump_class_stats()
348 static void multiq_walk(struct Qdisc *sch, struct qdisc_walker *arg) in multiq_walk() argument
350 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_walk()
361 if (arg->fn(sch, band + 1, arg) < 0) { in multiq_walk()
369 static struct tcf_block *multiq_tcf_block(struct Qdisc *sch, unsigned long cl, in multiq_tcf_block() argument
372 struct multiq_sched_data *q = qdisc_priv(sch); in multiq_tcf_block()