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