Lines Matching defs:sch

205 static struct qfq_class *qfq_find_class(struct Qdisc *sch, u32 classid)
207 struct qfq_sched *q = qdisc_priv(sch);
378 static int qfq_change_agg(struct Qdisc *sch, struct qfq_class *cl, u32 weight,
381 struct qfq_sched *q = qdisc_priv(sch);
401 static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid,
405 struct qfq_sched *q = qdisc_priv(sch);
433 lmax = psched_mtu(qdisc_dev(sch));
481 cl->qdisc = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops,
500 sch_tree_lock(sch);
503 sch_tree_unlock(sch);
510 sch_tree_lock(sch);
518 sch_tree_unlock(sch);
519 qdisc_class_hash_grow(sch, &q->clhash);
530 static void qfq_destroy_class(struct Qdisc *sch, struct qfq_class *cl)
532 struct qfq_sched *q = qdisc_priv(sch);
540 static int qfq_delete_class(struct Qdisc *sch, unsigned long arg,
543 struct qfq_sched *q = qdisc_priv(sch);
551 sch_tree_lock(sch);
556 sch_tree_unlock(sch);
558 qfq_destroy_class(sch, cl);
562 static unsigned long qfq_search_class(struct Qdisc *sch, u32 classid)
564 return (unsigned long)qfq_find_class(sch, classid);
567 static struct tcf_block *qfq_tcf_block(struct Qdisc *sch, unsigned long cl,
570 struct qfq_sched *q = qdisc_priv(sch);
578 static unsigned long qfq_bind_tcf(struct Qdisc *sch, unsigned long parent,
581 struct qfq_class *cl = qfq_find_class(sch, classid);
589 static void qfq_unbind_tcf(struct Qdisc *sch, unsigned long arg)
596 static int qfq_graft_class(struct Qdisc *sch, unsigned long arg,
603 new = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops,
609 *old = qdisc_replace(sch, new, &cl->qdisc);
613 static struct Qdisc *qfq_class_leaf(struct Qdisc *sch, unsigned long arg)
620 static int qfq_dump_class(struct Qdisc *sch, unsigned long arg,
643 static int qfq_dump_class_stats(struct Qdisc *sch, unsigned long arg,
662 static void qfq_walk(struct Qdisc *sch, struct qdisc_walker *arg)
664 struct qfq_sched *q = qdisc_priv(sch);
673 if (!tc_qdisc_stats_dump(sch, (unsigned long)cl, arg))
679 static struct qfq_class *qfq_classify(struct sk_buff *skb, struct Qdisc *sch,
682 struct qfq_sched *q = qdisc_priv(sch);
688 if (TC_H_MAJ(skb->priority ^ sch->handle) == 0) {
690 cl = qfq_find_class(sch, skb->priority);
712 cl = qfq_find_class(sch, res.classid);
1085 static struct sk_buff *qfq_dequeue(struct Qdisc *sch)
1087 struct qfq_sched *q = qdisc_priv(sch);
1125 } else if (sch->q.qlen == 0) { /* no aggregate to serve */
1140 sch->q.qlen--;
1145 sch->q.qlen++;
1149 qdisc_qstats_backlog_dec(sch, skb);
1150 qdisc_bstats_update(sch, skb);
1212 static int qfq_enqueue(struct sk_buff *skb, struct Qdisc *sch,
1216 struct qfq_sched *q = qdisc_priv(sch);
1222 cl = qfq_classify(skb, sch, &err);
1225 qdisc_qstats_drop(sch);
1234 err = qfq_change_agg(sch, cl, cl->agg->class_weight, len);
1237 return qdisc_drop(skb, sch, to_free);
1248 qdisc_qstats_drop(sch);
1254 sch->qstats.backlog += len;
1255 ++sch->q.qlen;
1416 static void qfq_qlen_notify(struct Qdisc *sch, unsigned long arg)
1418 struct qfq_sched *q = qdisc_priv(sch);
1424 static int qfq_init_qdisc(struct Qdisc *sch, struct nlattr *opt,
1427 struct qfq_sched *q = qdisc_priv(sch);
1432 err = tcf_block_get(&q->block, &q->filter_list, sch, extack);
1440 max_classes = min_t(u64, (u64)qdisc_dev(sch)->tx_queue_len + 1,
1463 static void qfq_reset_qdisc(struct Qdisc *sch)
1465 struct qfq_sched *q = qdisc_priv(sch);
1479 static void qfq_destroy_qdisc(struct Qdisc *sch)
1481 struct qfq_sched *q = qdisc_priv(sch);
1491 qfq_destroy_class(sch, cl);