Lines Matching refs:sch
43 static struct drr_class *drr_find_class(struct Qdisc *sch, u32 classid)
45 struct drr_sched *q = qdisc_priv(sch);
58 static int drr_change_class(struct Qdisc *sch, u32 classid, u32 parentid,
62 struct drr_sched *q = qdisc_priv(sch);
86 quantum = psched_mtu(qdisc_dev(sch));
100 sch_tree_lock(sch);
103 sch_tree_unlock(sch);
116 cl->qdisc = qdisc_create_dflt(sch->dev_queue,
135 sch_tree_lock(sch);
137 sch_tree_unlock(sch);
139 qdisc_class_hash_grow(sch, &q->clhash);
145 static void drr_destroy_class(struct Qdisc *sch, struct drr_class *cl)
152 static int drr_delete_class(struct Qdisc *sch, unsigned long arg,
155 struct drr_sched *q = qdisc_priv(sch);
163 sch_tree_lock(sch);
168 sch_tree_unlock(sch);
170 drr_destroy_class(sch, cl);
174 static unsigned long drr_search_class(struct Qdisc *sch, u32 classid)
176 return (unsigned long)drr_find_class(sch, classid);
179 static struct tcf_block *drr_tcf_block(struct Qdisc *sch, unsigned long cl,
182 struct drr_sched *q = qdisc_priv(sch);
192 static unsigned long drr_bind_tcf(struct Qdisc *sch, unsigned long parent,
195 struct drr_class *cl = drr_find_class(sch, classid);
203 static void drr_unbind_tcf(struct Qdisc *sch, unsigned long arg)
210 static int drr_graft_class(struct Qdisc *sch, unsigned long arg,
217 new = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops,
223 *old = qdisc_replace(sch, new, &cl->qdisc);
227 static struct Qdisc *drr_class_leaf(struct Qdisc *sch, unsigned long arg)
241 static int drr_dump_class(struct Qdisc *sch, unsigned long arg,
263 static int drr_dump_class_stats(struct Qdisc *sch, unsigned long arg,
283 static void drr_walk(struct Qdisc *sch, struct qdisc_walker *arg)
285 struct drr_sched *q = qdisc_priv(sch);
294 if (!tc_qdisc_stats_dump(sch, (unsigned long)cl, arg))
300 static struct drr_class *drr_classify(struct sk_buff *skb, struct Qdisc *sch,
303 struct drr_sched *q = qdisc_priv(sch);
309 if (TC_H_MAJ(skb->priority ^ sch->handle) == 0) {
310 cl = drr_find_class(sch, skb->priority);
332 cl = drr_find_class(sch, res.classid);
338 static int drr_enqueue(struct sk_buff *skb, struct Qdisc *sch,
342 struct drr_sched *q = qdisc_priv(sch);
346 cl = drr_classify(skb, sch, &err);
349 qdisc_qstats_drop(sch);
358 qdisc_qstats_drop(sch);
368 sch->qstats.backlog += len;
369 sch->q.qlen++;
373 static struct sk_buff *drr_dequeue(struct Qdisc *sch)
375 struct drr_sched *q = qdisc_priv(sch);
400 qdisc_bstats_update(sch, skb);
401 qdisc_qstats_backlog_dec(sch, skb);
402 sch->q.qlen--;
413 static int drr_init_qdisc(struct Qdisc *sch, struct nlattr *opt,
416 struct drr_sched *q = qdisc_priv(sch);
419 err = tcf_block_get(&q->block, &q->filter_list, sch, extack);
429 static void drr_reset_qdisc(struct Qdisc *sch)
431 struct drr_sched *q = qdisc_priv(sch);
444 static void drr_destroy_qdisc(struct Qdisc *sch)
446 struct drr_sched *q = qdisc_priv(sch);
456 drr_destroy_class(sch, cl);