Lines Matching defs:sch
674 void qdisc_class_hash_grow(struct Qdisc *sch, struct Qdisc_class_hash *clhash)
694 sch_tree_lock(sch);
704 sch_tree_unlock(sch);
770 void qdisc_tree_reduce_backlog(struct Qdisc *sch, int n, int len)
772 bool qdisc_is_offloaded = sch->flags & TCQ_F_OFFLOADED;
783 while ((parentid = sch->parent)) {
787 if (sch->flags & TCQ_F_NOPARENT)
798 notify = !sch->q.qlen && !WARN_ON_ONCE(!n &&
801 sch = qdisc_lookup(qdisc_dev(sch), TC_H_MAJ(parentid));
802 if (sch == NULL) {
806 cops = sch->ops->cl_ops;
808 cl = cops->find(sch, parentid);
809 cops->qlen_notify(sch, cl);
811 sch->q.qlen -= n;
812 sch->qstats.backlog -= len;
813 __qdisc_qstats_drop(sch, drops);
819 int qdisc_offload_dump_helper(struct Qdisc *sch, enum tc_setup_type type,
822 struct net_device *dev = qdisc_dev(sch);
825 sch->flags &= ~TCQ_F_OFFLOADED;
834 sch->flags |= TCQ_F_OFFLOADED;
840 void qdisc_offload_graft_helper(struct net_device *dev, struct Qdisc *sch,
861 any_qdisc_is_offloaded |= sch && sch->flags & TCQ_F_OFFLOADED;
1015 static void qdisc_clear_nolock(struct Qdisc *sch)
1017 sch->flags &= ~TCQ_F_NOLOCK;
1018 if (!(sch->flags & TCQ_F_CPUSTATS))
1021 free_percpu(sch->cpu_bstats);
1022 free_percpu(sch->cpu_qstats);
1023 sch->cpu_bstats = NULL;
1024 sch->cpu_qstats = NULL;
1025 sch->flags &= ~TCQ_F_CPUSTATS;
1130 static int qdisc_block_indexes_set(struct Qdisc *sch, struct nlattr **tca,
1142 if (!sch->ops->ingress_block_set) {
1146 sch->ops->ingress_block_set(sch, block_index);
1155 if (!sch->ops->egress_block_set) {
1159 sch->ops->egress_block_set(sch, block_index);
1178 struct Qdisc *sch;
1217 sch = qdisc_alloc(dev_queue, ops, extack);
1218 if (IS_ERR(sch)) {
1219 err = PTR_ERR(sch);
1223 sch->parent = parent;
1226 if (!(sch->flags & TCQ_F_INGRESS)) {
1243 sch->flags |= TCQ_F_ONETXQUEUE;
1246 sch->handle = handle;
1259 err = qdisc_block_indexes_set(sch, tca, extack);
1264 err = ops->init(sch, tca[TCA_OPTIONS], extack);
1275 rcu_assign_pointer(sch->stab, stab);
1281 if (sch->flags & TCQ_F_MQROOT) {
1286 if (sch->parent != TC_H_ROOT &&
1287 !(sch->flags & TCQ_F_INGRESS) &&
1289 running = qdisc_root_sleeping_running(sch);
1291 running = &sch->running;
1293 err = gen_new_estimator(&sch->bstats,
1294 sch->cpu_bstats,
1295 &sch->rate_est,
1305 qdisc_hash_add(sch, false);
1308 return sch;
1313 ops->destroy(sch);
1316 qdisc_free(sch);
1328 qdisc_put_stab(rtnl_dereference(sch->stab));
1330 ops->destroy(sch);
1334 static int qdisc_change(struct Qdisc *sch, struct nlattr **tca,
1341 if (!sch->ops->change) {
1349 err = sch->ops->change(sch, tca[TCA_OPTIONS], extack);
1360 ostab = rtnl_dereference(sch->stab);
1361 rcu_assign_pointer(sch->stab, stab);
1367 if (sch->flags & TCQ_F_MQROOT)
1369 gen_replace_estimator(&sch->bstats,
1370 sch->cpu_bstats,
1371 &sch->rate_est,
1373 qdisc_root_sleeping_running(sch),