Lines Matching refs:sch

181 static inline struct htb_class *htb_find(u32 handle, struct Qdisc *sch)  in htb_find()  argument
183 struct htb_sched *q = qdisc_priv(sch); in htb_find()
206 static struct htb_class *htb_classify(struct sk_buff *skb, struct Qdisc *sch, in htb_classify() argument
209 struct htb_sched *q = qdisc_priv(sch); in htb_classify()
219 if (skb->priority == sch->handle) in htb_classify()
221 cl = htb_find(skb->priority, sch); in htb_classify()
244 if (res.classid == sch->handle) in htb_classify()
246 cl = htb_find(res.classid, sch); in htb_classify()
257 cl = htb_find(TC_H_MAKE(TC_H_MAJ(sch->handle), q->defcls), sch); in htb_classify()
572 static int htb_enqueue(struct sk_buff *skb, struct Qdisc *sch) in htb_enqueue() argument
575 struct htb_sched *q = qdisc_priv(sch); in htb_enqueue()
576 struct htb_class *cl = htb_classify(skb, sch, &ret); in htb_enqueue()
584 return qdisc_drop(skb, sch); in htb_enqueue()
589 qdisc_qstats_drop(sch); in htb_enqueue()
595 qdisc_qstats_drop(sch); in htb_enqueue()
603 qdisc_qstats_backlog_inc(sch, skb); in htb_enqueue()
604 sch->q.qlen++; in htb_enqueue()
879 static struct sk_buff *htb_dequeue(struct Qdisc *sch) in htb_dequeue() argument
882 struct htb_sched *q = qdisc_priv(sch); in htb_dequeue()
891 qdisc_bstats_update(sch, skb); in htb_dequeue()
892 qdisc_unthrottled(sch); in htb_dequeue()
893 qdisc_qstats_backlog_dec(sch, skb); in htb_dequeue()
894 sch->q.qlen--; in htb_dequeue()
898 if (!sch->q.qlen) in htb_dequeue()
930 qdisc_qstats_overlimit(sch); in htb_dequeue()
947 static unsigned int htb_drop(struct Qdisc *sch) in htb_drop() argument
949 struct htb_sched *q = qdisc_priv(sch); in htb_drop()
960 sch->qstats.backlog -= len; in htb_drop()
961 sch->q.qlen--; in htb_drop()
973 static void htb_reset(struct Qdisc *sch) in htb_reset() argument
975 struct htb_sched *q = qdisc_priv(sch); in htb_reset()
994 sch->q.qlen = 0; in htb_reset()
995 sch->qstats.backlog = 0; in htb_reset()
1015 struct Qdisc *sch = q->watchdog.qdisc; in htb_work_func() local
1017 __netif_schedule(qdisc_root(sch)); in htb_work_func()
1020 static int htb_init(struct Qdisc *sch, struct nlattr *opt) in htb_init() argument
1022 struct htb_sched *q = qdisc_priv(sch); in htb_init()
1048 qdisc_watchdog_init(&q->watchdog, sch); in htb_init()
1055 q->direct_qlen = qdisc_dev(sch)->tx_queue_len; in htb_init()
1064 static int htb_dump(struct Qdisc *sch, struct sk_buff *skb) in htb_dump() argument
1066 struct htb_sched *q = qdisc_priv(sch); in htb_dump()
1094 static int htb_dump_class(struct Qdisc *sch, unsigned long arg, in htb_dump_class() argument
1139 htb_dump_class_stats(struct Qdisc *sch, unsigned long arg, struct gnet_dump *d) in htb_dump_class_stats() argument
1157 static int htb_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new, in htb_graft() argument
1165 (new = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops, in htb_graft()
1169 *old = qdisc_replace(sch, new, &cl->un.leaf.q); in htb_graft()
1173 static struct Qdisc *htb_leaf(struct Qdisc *sch, unsigned long arg) in htb_leaf() argument
1179 static void htb_qlen_notify(struct Qdisc *sch, unsigned long arg) in htb_qlen_notify() argument
1184 htb_deactivate(qdisc_priv(sch), cl); in htb_qlen_notify()
1187 static unsigned long htb_get(struct Qdisc *sch, u32 classid) in htb_get() argument
1189 struct htb_class *cl = htb_find(classid, sch); in htb_get()
1227 static void htb_destroy_class(struct Qdisc *sch, struct htb_class *cl) in htb_destroy_class() argument
1238 static void htb_destroy(struct Qdisc *sch) in htb_destroy() argument
1240 struct htb_sched *q = qdisc_priv(sch); in htb_destroy()
1261 htb_destroy_class(sch, cl); in htb_destroy()
1267 static int htb_delete(struct Qdisc *sch, unsigned long arg) in htb_delete() argument
1269 struct htb_sched *q = qdisc_priv(sch); in htb_delete()
1282 new_q = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops, in htb_delete()
1287 sch_tree_lock(sch); in htb_delete()
1318 sch_tree_unlock(sch); in htb_delete()
1322 static void htb_put(struct Qdisc *sch, unsigned long arg) in htb_put() argument
1327 htb_destroy_class(sch, cl); in htb_put()
1330 static int htb_change_class(struct Qdisc *sch, u32 classid, in htb_change_class() argument
1335 struct htb_sched *q = qdisc_priv(sch); in htb_change_class()
1354 parent = parentid == TC_H_ROOT ? NULL : htb_find(parentid, sch); in htb_change_class()
1386 if (!classid || TC_H_MAJ(classid ^ sch->handle) || in htb_change_class()
1387 htb_find(classid, sch)) in htb_change_class()
1403 qdisc_root_sleeping_lock(sch), in htb_change_class()
1423 new_q = qdisc_create_dflt(sch->dev_queue, in htb_change_class()
1425 sch_tree_lock(sch); in htb_change_class()
1465 spinlock_t *lock = qdisc_root_sleeping_lock(sch); in htb_change_class()
1474 sch_tree_lock(sch); in htb_change_class()
1512 sch_tree_unlock(sch); in htb_change_class()
1514 qdisc_class_hash_grow(sch, &q->clhash); in htb_change_class()
1523 static struct tcf_proto __rcu **htb_find_tcf(struct Qdisc *sch, in htb_find_tcf() argument
1526 struct htb_sched *q = qdisc_priv(sch); in htb_find_tcf()
1533 static unsigned long htb_bind_filter(struct Qdisc *sch, unsigned long parent, in htb_bind_filter() argument
1536 struct htb_class *cl = htb_find(classid, sch); in htb_bind_filter()
1552 static void htb_unbind_filter(struct Qdisc *sch, unsigned long arg) in htb_unbind_filter() argument
1560 static void htb_walk(struct Qdisc *sch, struct qdisc_walker *arg) in htb_walk() argument
1562 struct htb_sched *q = qdisc_priv(sch); in htb_walk()
1575 if (arg->fn(sch, (unsigned long)cl, arg) < 0) { in htb_walk()