Lines Matching defs:sch
685 void qdisc_class_hash_grow(struct Qdisc *sch, struct Qdisc_class_hash *clhash)
705 sch_tree_lock(sch);
715 sch_tree_unlock(sch);
781 void qdisc_tree_reduce_backlog(struct Qdisc *sch, int n, int len)
783 bool qdisc_is_offloaded = sch->flags & TCQ_F_OFFLOADED;
794 while ((parentid = sch->parent)) {
798 if (sch->flags & TCQ_F_NOPARENT)
809 notify = !sch->q.qlen && !WARN_ON_ONCE(!n &&
812 sch = qdisc_lookup(qdisc_dev(sch), TC_H_MAJ(parentid));
813 if (sch == NULL) {
817 cops = sch->ops->cl_ops;
819 cl = cops->find(sch, parentid);
820 cops->qlen_notify(sch, cl);
822 sch->q.qlen -= n;
823 sch->qstats.backlog -= len;
824 __qdisc_qstats_drop(sch, drops);
830 int qdisc_offload_dump_helper(struct Qdisc *sch, enum tc_setup_type type,
833 struct net_device *dev = qdisc_dev(sch);
836 sch->flags &= ~TCQ_F_OFFLOADED;
845 sch->flags |= TCQ_F_OFFLOADED;
851 void qdisc_offload_graft_helper(struct net_device *dev, struct Qdisc *sch,
872 any_qdisc_is_offloaded |= sch && sch->flags & TCQ_F_OFFLOADED;
1050 static void qdisc_clear_nolock(struct Qdisc *sch)
1052 sch->flags &= ~TCQ_F_NOLOCK;
1053 if (!(sch->flags & TCQ_F_CPUSTATS))
1056 free_percpu(sch->cpu_bstats);
1057 free_percpu(sch->cpu_qstats);
1058 sch->cpu_bstats = NULL;
1059 sch->cpu_qstats = NULL;
1060 sch->flags &= ~TCQ_F_CPUSTATS;
1183 static int qdisc_block_indexes_set(struct Qdisc *sch, struct nlattr **tca,
1195 if (!sch->ops->ingress_block_set) {
1199 sch->ops->ingress_block_set(sch, block_index);
1208 if (!sch->ops->egress_block_set) {
1212 sch->ops->egress_block_set(sch, block_index);
1231 struct Qdisc *sch;
1270 sch = qdisc_alloc(dev_queue, ops, extack);
1271 if (IS_ERR(sch)) {
1272 err = PTR_ERR(sch);
1276 sch->parent = parent;
1279 if (!(sch->flags & TCQ_F_INGRESS)) {
1296 sch->flags |= TCQ_F_ONETXQUEUE;
1299 sch->handle = handle;
1312 err = qdisc_block_indexes_set(sch, tca, extack);
1322 rcu_assign_pointer(sch->stab, stab);
1326 err = ops->init(sch, tca[TCA_OPTIONS], extack);
1333 if (sch->flags & TCQ_F_MQROOT) {
1338 err = gen_new_estimator(&sch->bstats,
1339 sch->cpu_bstats,
1340 &sch->rate_est,
1350 qdisc_hash_add(sch, false);
1353 return sch;
1360 ops->destroy(sch);
1361 qdisc_put_stab(rtnl_dereference(sch->stab));
1363 netdev_put(dev, &sch->dev_tracker);
1364 qdisc_free(sch);
1372 static int qdisc_change(struct Qdisc *sch, struct nlattr **tca,
1379 if (!sch->ops->change) {
1387 err = sch->ops->change(sch, tca[TCA_OPTIONS], extack);
1398 ostab = rtnl_dereference(sch->stab);
1399 rcu_assign_pointer(sch->stab, stab);
1405 if (sch->flags & TCQ_F_MQROOT)
1407 gen_replace_estimator(&sch->bstats,
1408 sch->cpu_bstats,
1409 &sch->rate_est,