Lines Matching refs:sch
210 static struct qfq_class *qfq_find_class(struct Qdisc *sch, u32 classid) in qfq_find_class() argument
212 struct qfq_sched *q = qdisc_priv(sch); in qfq_find_class()
387 static int qfq_change_agg(struct Qdisc *sch, struct qfq_class *cl, u32 weight, in qfq_change_agg() argument
390 struct qfq_sched *q = qdisc_priv(sch); in qfq_change_agg()
405 static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid, in qfq_change_class() argument
408 struct qfq_sched *q = qdisc_priv(sch); in qfq_change_class()
442 lmax = psched_mtu(qdisc_dev(sch)); in qfq_change_class()
464 qdisc_root_sleeping_lock(sch), in qfq_change_class()
482 cl->qdisc = qdisc_create_dflt(sch->dev_queue, in qfq_change_class()
490 qdisc_root_sleeping_lock(sch), in qfq_change_class()
496 sch_tree_lock(sch); in qfq_change_class()
498 sch_tree_unlock(sch); in qfq_change_class()
500 qdisc_class_hash_grow(sch, &q->clhash); in qfq_change_class()
503 sch_tree_lock(sch); in qfq_change_class()
506 sch_tree_unlock(sch); in qfq_change_class()
513 sch_tree_lock(sch); in qfq_change_class()
519 sch_tree_unlock(sch); in qfq_change_class()
530 static void qfq_destroy_class(struct Qdisc *sch, struct qfq_class *cl) in qfq_destroy_class() argument
532 struct qfq_sched *q = qdisc_priv(sch); in qfq_destroy_class()
540 static int qfq_delete_class(struct Qdisc *sch, unsigned long arg) in qfq_delete_class() argument
542 struct qfq_sched *q = qdisc_priv(sch); in qfq_delete_class()
548 sch_tree_lock(sch); in qfq_delete_class()
559 sch_tree_unlock(sch); in qfq_delete_class()
563 static unsigned long qfq_get_class(struct Qdisc *sch, u32 classid) in qfq_get_class() argument
565 struct qfq_class *cl = qfq_find_class(sch, classid); in qfq_get_class()
573 static void qfq_put_class(struct Qdisc *sch, unsigned long arg) in qfq_put_class() argument
578 qfq_destroy_class(sch, cl); in qfq_put_class()
581 static struct tcf_proto __rcu **qfq_tcf_chain(struct Qdisc *sch, in qfq_tcf_chain() argument
584 struct qfq_sched *q = qdisc_priv(sch); in qfq_tcf_chain()
592 static unsigned long qfq_bind_tcf(struct Qdisc *sch, unsigned long parent, in qfq_bind_tcf() argument
595 struct qfq_class *cl = qfq_find_class(sch, classid); in qfq_bind_tcf()
603 static void qfq_unbind_tcf(struct Qdisc *sch, unsigned long arg) in qfq_unbind_tcf() argument
610 static int qfq_graft_class(struct Qdisc *sch, unsigned long arg, in qfq_graft_class() argument
616 new = qdisc_create_dflt(sch->dev_queue, in qfq_graft_class()
622 sch_tree_lock(sch); in qfq_graft_class()
626 sch_tree_unlock(sch); in qfq_graft_class()
630 static struct Qdisc *qfq_class_leaf(struct Qdisc *sch, unsigned long arg) in qfq_class_leaf() argument
637 static int qfq_dump_class(struct Qdisc *sch, unsigned long arg, in qfq_dump_class() argument
660 static int qfq_dump_class_stats(struct Qdisc *sch, unsigned long arg, in qfq_dump_class_stats() argument
680 static void qfq_walk(struct Qdisc *sch, struct qdisc_walker *arg) in qfq_walk() argument
682 struct qfq_sched *q = qdisc_priv(sch); in qfq_walk()
695 if (arg->fn(sch, (unsigned long)cl, arg) < 0) { in qfq_walk()
704 static struct qfq_class *qfq_classify(struct sk_buff *skb, struct Qdisc *sch, in qfq_classify() argument
707 struct qfq_sched *q = qdisc_priv(sch); in qfq_classify()
713 if (TC_H_MAJ(skb->priority ^ sch->handle) == 0) { in qfq_classify()
715 cl = qfq_find_class(sch, skb->priority); in qfq_classify()
735 cl = qfq_find_class(sch, res.classid); in qfq_classify()
1103 static struct sk_buff *qfq_dequeue(struct Qdisc *sch) in qfq_dequeue() argument
1105 struct qfq_sched *q = qdisc_priv(sch); in qfq_dequeue()
1143 } else if (sch->q.qlen == 0) { /* no aggregate to serve */ in qfq_dequeue()
1158 sch->q.qlen--; in qfq_dequeue()
1159 qdisc_bstats_update(sch, skb); in qfq_dequeue()
1222 static int qfq_enqueue(struct sk_buff *skb, struct Qdisc *sch) in qfq_enqueue() argument
1224 struct qfq_sched *q = qdisc_priv(sch); in qfq_enqueue()
1229 cl = qfq_classify(skb, sch, &err); in qfq_enqueue()
1232 qdisc_qstats_drop(sch); in qfq_enqueue()
1241 err = qfq_change_agg(sch, cl, cl->agg->class_weight, in qfq_enqueue()
1252 qdisc_qstats_drop(sch); in qfq_enqueue()
1258 ++sch->q.qlen; in qfq_enqueue()
1419 static void qfq_qlen_notify(struct Qdisc *sch, unsigned long arg) in qfq_qlen_notify() argument
1421 struct qfq_sched *q = qdisc_priv(sch); in qfq_qlen_notify()
1453 static unsigned int qfq_drop(struct Qdisc *sch) in qfq_drop() argument
1455 struct qfq_sched *q = qdisc_priv(sch); in qfq_drop()
1464 sch->q.qlen--; in qfq_drop()
1474 static int qfq_init_qdisc(struct Qdisc *sch, struct nlattr *opt) in qfq_init_qdisc() argument
1476 struct qfq_sched *q = qdisc_priv(sch); in qfq_init_qdisc()
1485 if (qdisc_dev(sch)->tx_queue_len + 1 > QFQ_MAX_AGG_CLASSES) in qfq_init_qdisc()
1488 max_classes = qdisc_dev(sch)->tx_queue_len + 1; in qfq_init_qdisc()
1510 static void qfq_reset_qdisc(struct Qdisc *sch) in qfq_reset_qdisc() argument
1512 struct qfq_sched *q = qdisc_priv(sch); in qfq_reset_qdisc()
1524 sch->q.qlen = 0; in qfq_reset_qdisc()
1527 static void qfq_destroy_qdisc(struct Qdisc *sch) in qfq_destroy_qdisc() argument
1529 struct qfq_sched *q = qdisc_priv(sch); in qfq_destroy_qdisc()
1539 qfq_destroy_class(sch, cl); in qfq_destroy_qdisc()