Lines Matching full:sch
34 static int mqprio_enable_offload(struct Qdisc *sch, in mqprio_enable_offload() argument
38 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_enable_offload()
39 struct net_device *dev = qdisc_dev(sch); in mqprio_enable_offload()
80 static void mqprio_disable_offload(struct Qdisc *sch) in mqprio_disable_offload() argument
83 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_disable_offload()
84 struct net_device *dev = qdisc_dev(sch); in mqprio_disable_offload()
95 static void mqprio_destroy(struct Qdisc *sch) in mqprio_destroy() argument
97 struct net_device *dev = qdisc_dev(sch); in mqprio_destroy()
98 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_destroy()
110 mqprio_disable_offload(sch); in mqprio_destroy()
202 static int mqprio_parse_tc_entries(struct Qdisc *sch, struct nlattr *nlattr_opt, in mqprio_parse_tc_entries() argument
206 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_parse_tc_entries()
207 struct net_device *dev = qdisc_dev(sch); in mqprio_parse_tc_entries()
242 static int mqprio_parse_nlattr(struct Qdisc *sch, struct tc_mqprio_qopt *qopt, in mqprio_parse_nlattr() argument
248 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_parse_nlattr()
336 err = mqprio_parse_tc_entries(sch, nlattr_opt, nlattr_opt_len, in mqprio_parse_nlattr()
345 static int mqprio_init(struct Qdisc *sch, struct nlattr *opt, in mqprio_init() argument
348 struct net_device *dev = qdisc_dev(sch); in mqprio_init()
349 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_init()
360 if (sch->parent != TC_H_ROOT) in mqprio_init()
385 err = mqprio_parse_nlattr(sch, qopt, opt, extack); in mqprio_init()
400 TC_H_MAKE(TC_H_MAJ(sch->handle), in mqprio_init()
414 err = mqprio_enable_offload(sch, qopt, extack); in mqprio_init()
428 sch->flags |= TCQ_F_MQROOT; in mqprio_init()
432 static void mqprio_attach(struct Qdisc *sch) in mqprio_attach() argument
434 struct net_device *dev = qdisc_dev(sch); in mqprio_attach()
435 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_attach()
452 static struct netdev_queue *mqprio_queue_get(struct Qdisc *sch, in mqprio_queue_get() argument
455 struct net_device *dev = qdisc_dev(sch); in mqprio_queue_get()
463 static int mqprio_graft(struct Qdisc *sch, unsigned long cl, struct Qdisc *new, in mqprio_graft() argument
466 struct net_device *dev = qdisc_dev(sch); in mqprio_graft()
467 struct netdev_queue *dev_queue = mqprio_queue_get(sch, cl); in mqprio_graft()
553 static int mqprio_dump(struct Qdisc *sch, struct sk_buff *skb) in mqprio_dump() argument
555 struct net_device *dev = qdisc_dev(sch); in mqprio_dump()
556 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_dump()
562 sch->q.qlen = 0; in mqprio_dump()
563 gnet_stats_basic_sync_init(&sch->bstats); in mqprio_dump()
564 memset(&sch->qstats, 0, sizeof(sch->qstats)); in mqprio_dump()
575 gnet_stats_add_basic(&sch->bstats, qdisc->cpu_bstats, in mqprio_dump()
577 gnet_stats_add_queue(&sch->qstats, qdisc->cpu_qstats, in mqprio_dump()
579 sch->q.qlen += qdisc_qlen(qdisc); in mqprio_dump()
612 static struct Qdisc *mqprio_leaf(struct Qdisc *sch, unsigned long cl) in mqprio_leaf() argument
614 struct netdev_queue *dev_queue = mqprio_queue_get(sch, cl); in mqprio_leaf()
622 static unsigned long mqprio_find(struct Qdisc *sch, u32 classid) in mqprio_find() argument
624 struct net_device *dev = qdisc_dev(sch); in mqprio_find()
641 static int mqprio_dump_class(struct Qdisc *sch, unsigned long cl, in mqprio_dump_class() argument
645 struct netdev_queue *dev_queue = mqprio_queue_get(sch, cl); in mqprio_dump_class()
646 struct net_device *dev = qdisc_dev(sch); in mqprio_dump_class()
650 TC_H_MAKE(TC_H_MAJ(sch->handle), in mqprio_dump_class()
661 static int mqprio_dump_class_stats(struct Qdisc *sch, unsigned long cl, in mqprio_dump_class_stats() argument
671 struct net_device *dev = qdisc_dev(sch); in mqprio_dump_class_stats()
693 sch->q.qlen += qdisc_qlen(qdisc); in mqprio_dump_class_stats()
697 qlen = qdisc_qlen(sch) + qstats.qlen; in mqprio_dump_class_stats()
706 struct netdev_queue *dev_queue = mqprio_queue_get(sch, cl); in mqprio_dump_class_stats()
708 sch = rtnl_dereference(dev_queue->qdisc_sleeping); in mqprio_dump_class_stats()
709 if (gnet_stats_copy_basic(d, sch->cpu_bstats, in mqprio_dump_class_stats()
710 &sch->bstats, true) < 0 || in mqprio_dump_class_stats()
711 qdisc_qstats_copy(d, sch) < 0) in mqprio_dump_class_stats()
717 static void mqprio_walk(struct Qdisc *sch, struct qdisc_walker *arg) in mqprio_walk() argument
719 struct net_device *dev = qdisc_dev(sch); in mqprio_walk()
728 if (!tc_qdisc_stats_dump(sch, ntx + TC_H_MIN_PRIORITY, arg)) in mqprio_walk()
740 if (arg->fn(sch, ntx + 1, arg) < 0) { in mqprio_walk()
748 static struct netdev_queue *mqprio_select_queue(struct Qdisc *sch, in mqprio_select_queue() argument
751 return mqprio_queue_get(sch, TC_H_MIN(tcm->tcm_parent)); in mqprio_select_queue()