Lines Matching refs:sch

186 static inline struct htb_class *htb_find(u32 handle, struct Qdisc *sch)  in htb_find()  argument
188 struct htb_sched *q = qdisc_priv(sch); in htb_find()
197 static unsigned long htb_search(struct Qdisc *sch, u32 handle) in htb_search() argument
199 return (unsigned long)htb_find(handle, sch); in htb_search()
219 static struct htb_class *htb_classify(struct sk_buff *skb, struct Qdisc *sch, in htb_classify() argument
222 struct htb_sched *q = qdisc_priv(sch); in htb_classify()
232 if (skb->priority == sch->handle) in htb_classify()
234 cl = htb_find(skb->priority, sch); in htb_classify()
259 if (res.classid == sch->handle) in htb_classify()
261 cl = htb_find(res.classid, sch); in htb_classify()
272 cl = htb_find(TC_H_MAKE(TC_H_MAJ(sch->handle), q->defcls), sch); in htb_classify()
619 static int htb_enqueue(struct sk_buff *skb, struct Qdisc *sch, in htb_enqueue() argument
624 struct htb_sched *q = qdisc_priv(sch); in htb_enqueue()
625 struct htb_class *cl = htb_classify(skb, sch, &ret); in htb_enqueue()
633 return qdisc_drop(skb, sch, to_free); in htb_enqueue()
638 qdisc_qstats_drop(sch); in htb_enqueue()
645 qdisc_qstats_drop(sch); in htb_enqueue()
653 sch->qstats.backlog += len; in htb_enqueue()
654 sch->q.qlen++; in htb_enqueue()
940 static struct sk_buff *htb_dequeue(struct Qdisc *sch) in htb_dequeue() argument
943 struct htb_sched *q = qdisc_priv(sch); in htb_dequeue()
952 qdisc_bstats_update(sch, skb); in htb_dequeue()
953 qdisc_qstats_backlog_dec(sch, skb); in htb_dequeue()
954 sch->q.qlen--; in htb_dequeue()
958 if (!sch->q.qlen) in htb_dequeue()
1000 static void htb_reset(struct Qdisc *sch) in htb_reset() argument
1002 struct htb_sched *q = qdisc_priv(sch); in htb_reset()
1038 struct Qdisc *sch = q->watchdog.qdisc; in htb_work_func() local
1041 __netif_schedule(qdisc_root(sch)); in htb_work_func()
1050 static int htb_init(struct Qdisc *sch, struct nlattr *opt, in htb_init() argument
1053 struct net_device *dev = qdisc_dev(sch); in htb_init()
1055 struct htb_sched *q = qdisc_priv(sch); in htb_init()
1062 qdisc_watchdog_init(&q->watchdog, sch); in htb_init()
1068 err = tcf_block_get(&q->block, &q->filter_list, sch, extack); in htb_init()
1087 if (sch->parent != TC_H_ROOT) { in htb_init()
1112 q->direct_qlen = qdisc_dev(sch)->tx_queue_len; in htb_init()
1126 TC_H_MAKE(sch->handle, 0), extack); in htb_init()
1135 sch->flags |= TCQ_F_MQROOT; in htb_init()
1139 .parent_classid = TC_H_MAJ(sch->handle) >> 16, in htb_init()
1155 static void htb_attach_offload(struct Qdisc *sch) in htb_attach_offload() argument
1157 struct net_device *dev = qdisc_dev(sch); in htb_attach_offload()
1158 struct htb_sched *q = qdisc_priv(sch); in htb_attach_offload()
1179 static void htb_attach_software(struct Qdisc *sch) in htb_attach_software() argument
1181 struct net_device *dev = qdisc_dev(sch); in htb_attach_software()
1187 struct Qdisc *old = dev_graft_qdisc(dev_queue, sch); in htb_attach_software()
1189 qdisc_refcount_inc(sch); in htb_attach_software()
1195 static void htb_attach(struct Qdisc *sch) in htb_attach() argument
1197 struct htb_sched *q = qdisc_priv(sch); in htb_attach()
1200 htb_attach_offload(sch); in htb_attach()
1202 htb_attach_software(sch); in htb_attach()
1205 static int htb_dump(struct Qdisc *sch, struct sk_buff *skb) in htb_dump() argument
1207 struct htb_sched *q = qdisc_priv(sch); in htb_dump()
1212 sch->flags |= TCQ_F_OFFLOADED; in htb_dump()
1214 sch->flags &= ~TCQ_F_OFFLOADED; in htb_dump()
1216 sch->qstats.overlimits = q->overlimits; in htb_dump()
1243 static int htb_dump_class(struct Qdisc *sch, unsigned long arg, in htb_dump_class() argument
1247 struct htb_sched *q = qdisc_priv(sch); in htb_dump_class()
1323 htb_dump_class_stats(struct Qdisc *sch, unsigned long arg, struct gnet_dump *d) in htb_dump_class_stats() argument
1326 struct htb_sched *q = qdisc_priv(sch); in htb_dump_class_stats()
1364 htb_select_queue(struct Qdisc *sch, struct tcmsg *tcm) in htb_select_queue() argument
1366 struct net_device *dev = qdisc_dev(sch); in htb_select_queue()
1368 struct htb_sched *q = qdisc_priv(sch); in htb_select_queue()
1372 return sch->dev_queue; in htb_select_queue()
1412 static void htb_offload_move_qdisc(struct Qdisc *sch, struct htb_class *cl_old, in htb_offload_move_qdisc() argument
1416 struct net_device *dev = qdisc_dev(sch); in htb_offload_move_qdisc()
1444 static int htb_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new, in htb_graft() argument
1447 struct netdev_queue *dev_queue = sch->dev_queue; in htb_graft()
1449 struct htb_sched *q = qdisc_priv(sch); in htb_graft()
1471 *old = qdisc_replace(sch, new, &cl->leaf.q); in htb_graft()
1481 static struct Qdisc *htb_leaf(struct Qdisc *sch, unsigned long arg) in htb_leaf() argument
1487 static void htb_qlen_notify(struct Qdisc *sch, unsigned long arg) in htb_qlen_notify() argument
1491 htb_deactivate(qdisc_priv(sch), cl); in htb_qlen_notify()
1505 static void htb_parent_to_leaf(struct Qdisc *sch, struct htb_class *cl, in htb_parent_to_leaf() argument
1508 struct htb_sched *q = qdisc_priv(sch); in htb_parent_to_leaf()
1528 static void htb_parent_to_leaf_offload(struct Qdisc *sch, in htb_parent_to_leaf_offload() argument
1541 static int htb_destroy_class_offload(struct Qdisc *sch, struct htb_class *cl, in htb_destroy_class_offload() argument
1581 err = htb_offload(qdisc_dev(sch), &offload_opt); in htb_destroy_class_offload()
1594 u32 classid = TC_H_MAJ(sch->handle) | in htb_destroy_class_offload()
1596 struct htb_class *moved_cl = htb_find(classid, sch); in htb_destroy_class_offload()
1598 htb_offload_move_qdisc(sch, moved_cl, cl, destroying); in htb_destroy_class_offload()
1604 static void htb_destroy_class(struct Qdisc *sch, struct htb_class *cl) in htb_destroy_class() argument
1615 static void htb_destroy(struct Qdisc *sch) in htb_destroy() argument
1617 struct net_device *dev = qdisc_dev(sch); in htb_destroy()
1619 struct htb_sched *q = qdisc_priv(sch); in htb_destroy()
1650 htb_destroy_class(sch, cl); in htb_destroy()
1662 htb_destroy_class_offload(sch, cl, last_child, in htb_destroy()
1669 htb_parent_to_leaf(sch, cl, NULL); in htb_destroy()
1670 htb_destroy_class(sch, cl); in htb_destroy()
1693 static int htb_delete(struct Qdisc *sch, unsigned long arg, in htb_delete() argument
1696 struct htb_sched *q = qdisc_priv(sch); in htb_delete()
1715 err = htb_destroy_class_offload(sch, cl, last_child, false, in htb_delete()
1722 struct netdev_queue *dev_queue = sch->dev_queue; in htb_delete()
1731 htb_parent_to_leaf_offload(sch, dev_queue, new_q); in htb_delete()
1734 sch_tree_lock(sch); in htb_delete()
1751 htb_parent_to_leaf(sch, cl, new_q); in htb_delete()
1753 sch_tree_unlock(sch); in htb_delete()
1755 htb_destroy_class(sch, cl); in htb_delete()
1759 static int htb_change_class(struct Qdisc *sch, u32 classid, in htb_change_class() argument
1764 struct htb_sched *q = qdisc_priv(sch); in htb_change_class()
1788 parent = parentid == TC_H_ROOT ? NULL : htb_find(parentid, sch); in htb_change_class()
1819 struct net_device *dev = qdisc_dev(sch); in htb_change_class()
1838 if (!classid || TC_H_MAJ(classid ^ sch->handle) || in htb_change_class()
1839 htb_find(classid, sch)) in htb_change_class()
1855 err = tcf_block_get(&cl->block, &cl->filter_list, sch, extack); in htb_change_class()
1888 dev_queue = sch->dev_queue; in htb_change_class()
1947 sch_tree_lock(sch); in htb_change_class()
1996 struct net_device *dev = qdisc_dev(sch); in htb_change_class()
2018 sch_tree_lock(sch); in htb_change_class()
2050 sch_tree_unlock(sch); in htb_change_class()
2058 qdisc_class_hash_grow(sch, &q->clhash); in htb_change_class()
2072 static struct tcf_block *htb_tcf_block(struct Qdisc *sch, unsigned long arg, in htb_tcf_block() argument
2075 struct htb_sched *q = qdisc_priv(sch); in htb_tcf_block()
2081 static unsigned long htb_bind_filter(struct Qdisc *sch, unsigned long parent, in htb_bind_filter() argument
2084 struct htb_class *cl = htb_find(classid, sch); in htb_bind_filter()
2100 static void htb_unbind_filter(struct Qdisc *sch, unsigned long arg) in htb_unbind_filter() argument
2107 static void htb_walk(struct Qdisc *sch, struct qdisc_walker *arg) in htb_walk() argument
2109 struct htb_sched *q = qdisc_priv(sch); in htb_walk()
2118 if (!tc_qdisc_stats_dump(sch, (unsigned long)cl, arg)) in htb_walk()