Lines Matching refs: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()
244 static int mqprio_parse_nlattr(struct Qdisc *sch, struct tc_mqprio_qopt *qopt, in mqprio_parse_nlattr() argument
250 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_parse_nlattr()
338 err = mqprio_parse_tc_entries(sch, nlattr_opt, nlattr_opt_len, in mqprio_parse_nlattr()
347 static int mqprio_init(struct Qdisc *sch, struct nlattr *opt, in mqprio_init() argument
350 struct net_device *dev = qdisc_dev(sch); in mqprio_init()
351 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_init()
362 if (sch->parent != TC_H_ROOT) in mqprio_init()
387 err = mqprio_parse_nlattr(sch, qopt, opt, extack); in mqprio_init()
402 TC_H_MAKE(TC_H_MAJ(sch->handle), in mqprio_init()
416 err = mqprio_enable_offload(sch, qopt, extack); in mqprio_init()
430 sch->flags |= TCQ_F_MQROOT; in mqprio_init()
434 static void mqprio_attach(struct Qdisc *sch) in mqprio_attach() argument
436 struct net_device *dev = qdisc_dev(sch); in mqprio_attach()
437 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_attach()
454 static struct netdev_queue *mqprio_queue_get(struct Qdisc *sch, in mqprio_queue_get() argument
457 struct net_device *dev = qdisc_dev(sch); in mqprio_queue_get()
465 static int mqprio_graft(struct Qdisc *sch, unsigned long cl, struct Qdisc *new, in mqprio_graft() argument
468 struct net_device *dev = qdisc_dev(sch); in mqprio_graft()
469 struct netdev_queue *dev_queue = mqprio_queue_get(sch, cl); in mqprio_graft()
555 static int mqprio_dump(struct Qdisc *sch, struct sk_buff *skb) in mqprio_dump() argument
557 struct net_device *dev = qdisc_dev(sch); in mqprio_dump()
558 struct mqprio_sched *priv = qdisc_priv(sch); in mqprio_dump()
564 sch->q.qlen = 0; in mqprio_dump()
565 gnet_stats_basic_sync_init(&sch->bstats); in mqprio_dump()
566 memset(&sch->qstats, 0, sizeof(sch->qstats)); in mqprio_dump()
577 gnet_stats_add_basic(&sch->bstats, qdisc->cpu_bstats, in mqprio_dump()
579 gnet_stats_add_queue(&sch->qstats, qdisc->cpu_qstats, in mqprio_dump()
581 sch->q.qlen += qdisc_qlen(qdisc); in mqprio_dump()
614 static struct Qdisc *mqprio_leaf(struct Qdisc *sch, unsigned long cl) in mqprio_leaf() argument
616 struct netdev_queue *dev_queue = mqprio_queue_get(sch, cl); in mqprio_leaf()
624 static unsigned long mqprio_find(struct Qdisc *sch, u32 classid) in mqprio_find() argument
626 struct net_device *dev = qdisc_dev(sch); in mqprio_find()
643 static int mqprio_dump_class(struct Qdisc *sch, unsigned long cl, in mqprio_dump_class() argument
647 struct netdev_queue *dev_queue = mqprio_queue_get(sch, cl); in mqprio_dump_class()
648 struct net_device *dev = qdisc_dev(sch); in mqprio_dump_class()
652 TC_H_MAKE(TC_H_MAJ(sch->handle), in mqprio_dump_class()
663 static int mqprio_dump_class_stats(struct Qdisc *sch, unsigned long cl, in mqprio_dump_class_stats() argument
673 struct net_device *dev = qdisc_dev(sch); in mqprio_dump_class_stats()
695 sch->q.qlen += qdisc_qlen(qdisc); in mqprio_dump_class_stats()
699 qlen = qdisc_qlen(sch) + qstats.qlen; in mqprio_dump_class_stats()
708 struct netdev_queue *dev_queue = mqprio_queue_get(sch, cl); in mqprio_dump_class_stats()
710 sch = rtnl_dereference(dev_queue->qdisc_sleeping); in mqprio_dump_class_stats()
711 if (gnet_stats_copy_basic(d, sch->cpu_bstats, in mqprio_dump_class_stats()
712 &sch->bstats, true) < 0 || in mqprio_dump_class_stats()
713 qdisc_qstats_copy(d, sch) < 0) in mqprio_dump_class_stats()
719 static void mqprio_walk(struct Qdisc *sch, struct qdisc_walker *arg) in mqprio_walk() argument
721 struct net_device *dev = qdisc_dev(sch); in mqprio_walk()
730 if (!tc_qdisc_stats_dump(sch, ntx + TC_H_MIN_PRIORITY, arg)) in mqprio_walk()
742 if (arg->fn(sch, ntx + 1, arg) < 0) { in mqprio_walk()
750 static struct netdev_queue *mqprio_select_queue(struct Qdisc *sch, in mqprio_select_queue() argument
753 return mqprio_queue_get(sch, TC_H_MIN(tcm->tcm_parent)); in mqprio_select_queue()