Lines Matching defs:sch
180 static inline struct htb_class *htb_find(u32 handle, struct Qdisc *sch)
182 struct htb_sched *q = qdisc_priv(sch);
191 static unsigned long htb_search(struct Qdisc *sch, u32 handle)
193 return (unsigned long)htb_find(handle, sch);
209 static struct htb_class *htb_classify(struct sk_buff *skb, struct Qdisc *sch,
212 struct htb_sched *q = qdisc_priv(sch);
222 if (skb->priority == sch->handle)
224 cl = htb_find(skb->priority, sch);
249 if (res.classid == sch->handle)
251 cl = htb_find(res.classid, sch);
262 cl = htb_find(TC_H_MAKE(TC_H_MAJ(sch->handle), q->defcls), sch);
582 static int htb_enqueue(struct sk_buff *skb, struct Qdisc *sch,
587 struct htb_sched *q = qdisc_priv(sch);
588 struct htb_class *cl = htb_classify(skb, sch, &ret);
596 return qdisc_drop(skb, sch, to_free);
601 qdisc_qstats_drop(sch);
608 qdisc_qstats_drop(sch);
616 sch->qstats.backlog += len;
617 sch->q.qlen++;
892 static struct sk_buff *htb_dequeue(struct Qdisc *sch)
895 struct htb_sched *q = qdisc_priv(sch);
904 qdisc_bstats_update(sch, skb);
905 qdisc_qstats_backlog_dec(sch, skb);
906 sch->q.qlen--;
910 if (!sch->q.qlen)
952 static void htb_reset(struct Qdisc *sch)
954 struct htb_sched *q = qdisc_priv(sch);
989 struct Qdisc *sch = q->watchdog.qdisc;
992 __netif_schedule(qdisc_root(sch));
996 static int htb_init(struct Qdisc *sch, struct nlattr *opt,
999 struct htb_sched *q = qdisc_priv(sch);
1004 qdisc_watchdog_init(&q->watchdog, sch);
1010 err = tcf_block_get(&q->block, &q->filter_list, sch, extack);
1035 q->direct_qlen = qdisc_dev(sch)->tx_queue_len;
1044 static int htb_dump(struct Qdisc *sch, struct sk_buff *skb)
1046 struct htb_sched *q = qdisc_priv(sch);
1050 sch->qstats.overlimits = q->overlimits;
1075 static int htb_dump_class(struct Qdisc *sch, unsigned long arg,
1122 htb_dump_class_stats(struct Qdisc *sch, unsigned long arg, struct gnet_dump *d)
1139 if (gnet_stats_copy_basic(qdisc_root_sleeping_running(sch),
1148 static int htb_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,
1156 (new = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops,
1160 *old = qdisc_replace(sch, new, &cl->leaf.q);
1164 static struct Qdisc *htb_leaf(struct Qdisc *sch, unsigned long arg)
1170 static void htb_qlen_notify(struct Qdisc *sch, unsigned long arg)
1174 htb_deactivate(qdisc_priv(sch), cl);
1208 static void htb_destroy_class(struct Qdisc *sch, struct htb_class *cl)
1219 static void htb_destroy(struct Qdisc *sch)
1221 struct htb_sched *q = qdisc_priv(sch);
1244 htb_destroy_class(sch, cl);
1250 static int htb_delete(struct Qdisc *sch, unsigned long arg)
1252 struct htb_sched *q = qdisc_priv(sch);
1265 new_q = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops,
1271 sch_tree_lock(sch);
1291 sch_tree_unlock(sch);
1293 htb_destroy_class(sch, cl);
1297 static int htb_change_class(struct Qdisc *sch, u32 classid,
1302 struct htb_sched *q = qdisc_priv(sch);
1324 parent = parentid == TC_H_ROOT ? NULL : htb_find(parentid, sch);
1358 if (!classid || TC_H_MAJ(classid ^ sch->handle) ||
1359 htb_find(classid, sch))
1372 err = tcf_block_get(&cl->block, &cl->filter_list, sch, extack);
1381 qdisc_root_sleeping_running(sch),
1400 new_q = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops,
1402 sch_tree_lock(sch);
1443 qdisc_root_sleeping_running(sch),
1448 sch_tree_lock(sch);
1484 sch_tree_unlock(sch);
1491 qdisc_class_hash_grow(sch, &q->clhash);
1500 static struct tcf_block *htb_tcf_block(struct Qdisc *sch, unsigned long arg,
1503 struct htb_sched *q = qdisc_priv(sch);
1509 static unsigned long htb_bind_filter(struct Qdisc *sch, unsigned long parent,
1512 struct htb_class *cl = htb_find(classid, sch);
1528 static void htb_unbind_filter(struct Qdisc *sch, unsigned long arg)
1536 static void htb_walk(struct Qdisc *sch, struct qdisc_walker *arg)
1538 struct htb_sched *q = qdisc_priv(sch);
1551 if (arg->fn(sch, (unsigned long)cl, arg) < 0) {