Lines Matching refs:sch
209 static struct qfq_class *qfq_find_class(struct Qdisc *sch, u32 classid) in qfq_find_class() argument
211 struct qfq_sched *q = qdisc_priv(sch); in qfq_find_class()
386 static int qfq_change_agg(struct Qdisc *sch, struct qfq_class *cl, u32 weight, in qfq_change_agg() argument
389 struct qfq_sched *q = qdisc_priv(sch); in qfq_change_agg()
404 static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid, in qfq_change_class() argument
407 struct qfq_sched *q = qdisc_priv(sch); in qfq_change_class()
441 lmax = psched_mtu(qdisc_dev(sch)); in qfq_change_class()
463 qdisc_root_sleeping_lock(sch), in qfq_change_class()
481 cl->qdisc = qdisc_create_dflt(sch->dev_queue, in qfq_change_class()
489 qdisc_root_sleeping_lock(sch), in qfq_change_class()
495 sch_tree_lock(sch); in qfq_change_class()
497 sch_tree_unlock(sch); in qfq_change_class()
499 qdisc_class_hash_grow(sch, &q->clhash); in qfq_change_class()
502 sch_tree_lock(sch); in qfq_change_class()
505 sch_tree_unlock(sch); in qfq_change_class()
512 sch_tree_lock(sch); in qfq_change_class()
518 sch_tree_unlock(sch); in qfq_change_class()
529 static void qfq_destroy_class(struct Qdisc *sch, struct qfq_class *cl) in qfq_destroy_class() argument
531 struct qfq_sched *q = qdisc_priv(sch); in qfq_destroy_class()
539 static int qfq_delete_class(struct Qdisc *sch, unsigned long arg) in qfq_delete_class() argument
541 struct qfq_sched *q = qdisc_priv(sch); in qfq_delete_class()
547 sch_tree_lock(sch); in qfq_delete_class()
558 sch_tree_unlock(sch); in qfq_delete_class()
562 static unsigned long qfq_get_class(struct Qdisc *sch, u32 classid) in qfq_get_class() argument
564 struct qfq_class *cl = qfq_find_class(sch, classid); in qfq_get_class()
572 static void qfq_put_class(struct Qdisc *sch, unsigned long arg) in qfq_put_class() argument
577 qfq_destroy_class(sch, cl); in qfq_put_class()
580 static struct tcf_proto __rcu **qfq_tcf_chain(struct Qdisc *sch, in qfq_tcf_chain() argument
583 struct qfq_sched *q = qdisc_priv(sch); in qfq_tcf_chain()
591 static unsigned long qfq_bind_tcf(struct Qdisc *sch, unsigned long parent, in qfq_bind_tcf() argument
594 struct qfq_class *cl = qfq_find_class(sch, classid); in qfq_bind_tcf()
602 static void qfq_unbind_tcf(struct Qdisc *sch, unsigned long arg) in qfq_unbind_tcf() argument
609 static int qfq_graft_class(struct Qdisc *sch, unsigned long arg, in qfq_graft_class() argument
615 new = qdisc_create_dflt(sch->dev_queue, in qfq_graft_class()
621 *old = qdisc_replace(sch, new, &cl->qdisc); in qfq_graft_class()
625 static struct Qdisc *qfq_class_leaf(struct Qdisc *sch, unsigned long arg) in qfq_class_leaf() argument
632 static int qfq_dump_class(struct Qdisc *sch, unsigned long arg, in qfq_dump_class() argument
655 static int qfq_dump_class_stats(struct Qdisc *sch, unsigned long arg, in qfq_dump_class_stats() argument
675 static void qfq_walk(struct Qdisc *sch, struct qdisc_walker *arg) in qfq_walk() argument
677 struct qfq_sched *q = qdisc_priv(sch); in qfq_walk()
690 if (arg->fn(sch, (unsigned long)cl, arg) < 0) { in qfq_walk()
699 static struct qfq_class *qfq_classify(struct sk_buff *skb, struct Qdisc *sch, in qfq_classify() argument
702 struct qfq_sched *q = qdisc_priv(sch); in qfq_classify()
708 if (TC_H_MAJ(skb->priority ^ sch->handle) == 0) { in qfq_classify()
710 cl = qfq_find_class(sch, skb->priority); in qfq_classify()
730 cl = qfq_find_class(sch, res.classid); in qfq_classify()
1098 static struct sk_buff *qfq_dequeue(struct Qdisc *sch) in qfq_dequeue() argument
1100 struct qfq_sched *q = qdisc_priv(sch); in qfq_dequeue()
1138 } else if (sch->q.qlen == 0) { /* no aggregate to serve */ in qfq_dequeue()
1153 sch->q.qlen--; in qfq_dequeue()
1154 qdisc_bstats_update(sch, skb); in qfq_dequeue()
1217 static int qfq_enqueue(struct sk_buff *skb, struct Qdisc *sch) in qfq_enqueue() argument
1219 struct qfq_sched *q = qdisc_priv(sch); in qfq_enqueue()
1224 cl = qfq_classify(skb, sch, &err); in qfq_enqueue()
1227 qdisc_qstats_drop(sch); in qfq_enqueue()
1236 err = qfq_change_agg(sch, cl, cl->agg->class_weight, in qfq_enqueue()
1247 qdisc_qstats_drop(sch); in qfq_enqueue()
1253 ++sch->q.qlen; in qfq_enqueue()
1414 static void qfq_qlen_notify(struct Qdisc *sch, unsigned long arg) in qfq_qlen_notify() argument
1416 struct qfq_sched *q = qdisc_priv(sch); in qfq_qlen_notify()
1448 static unsigned int qfq_drop(struct Qdisc *sch) in qfq_drop() argument
1450 struct qfq_sched *q = qdisc_priv(sch); in qfq_drop()
1459 sch->q.qlen--; in qfq_drop()
1469 static int qfq_init_qdisc(struct Qdisc *sch, struct nlattr *opt) in qfq_init_qdisc() argument
1471 struct qfq_sched *q = qdisc_priv(sch); in qfq_init_qdisc()
1480 if (qdisc_dev(sch)->tx_queue_len + 1 > QFQ_MAX_AGG_CLASSES) in qfq_init_qdisc()
1483 max_classes = qdisc_dev(sch)->tx_queue_len + 1; in qfq_init_qdisc()
1505 static void qfq_reset_qdisc(struct Qdisc *sch) in qfq_reset_qdisc() argument
1507 struct qfq_sched *q = qdisc_priv(sch); in qfq_reset_qdisc()
1519 sch->q.qlen = 0; in qfq_reset_qdisc()
1522 static void qfq_destroy_qdisc(struct Qdisc *sch) in qfq_destroy_qdisc() argument
1524 struct qfq_sched *q = qdisc_priv(sch); in qfq_destroy_qdisc()
1534 qfq_destroy_class(sch, cl); in qfq_destroy_qdisc()