Lines Matching refs:sch

44 	struct Qdisc		*sch;  member
61 static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch, in red_enqueue() argument
64 struct red_sched_data *q = qdisc_priv(sch); in red_enqueue()
80 qdisc_qstats_overlimit(sch); in red_enqueue()
90 qdisc_qstats_overlimit(sch); in red_enqueue()
103 qdisc_qstats_backlog_inc(sch, skb); in red_enqueue()
104 sch->q.qlen++; in red_enqueue()
107 qdisc_qstats_drop(sch); in red_enqueue()
112 qdisc_drop(skb, sch, to_free); in red_enqueue()
116 static struct sk_buff *red_dequeue(struct Qdisc *sch) in red_dequeue() argument
119 struct red_sched_data *q = qdisc_priv(sch); in red_dequeue()
124 qdisc_bstats_update(sch, skb); in red_dequeue()
125 qdisc_qstats_backlog_dec(sch, skb); in red_dequeue()
126 sch->q.qlen--; in red_dequeue()
134 static struct sk_buff *red_peek(struct Qdisc *sch) in red_peek() argument
136 struct red_sched_data *q = qdisc_priv(sch); in red_peek()
142 static void red_reset(struct Qdisc *sch) in red_reset() argument
144 struct red_sched_data *q = qdisc_priv(sch); in red_reset()
147 sch->qstats.backlog = 0; in red_reset()
148 sch->q.qlen = 0; in red_reset()
152 static int red_offload(struct Qdisc *sch, bool enable) in red_offload() argument
154 struct red_sched_data *q = qdisc_priv(sch); in red_offload()
155 struct net_device *dev = qdisc_dev(sch); in red_offload()
157 .handle = sch->handle, in red_offload()
158 .parent = sch->parent, in red_offload()
170 opt.set.qstats = &sch->qstats; in red_offload()
178 static void red_destroy(struct Qdisc *sch) in red_destroy() argument
180 struct red_sched_data *q = qdisc_priv(sch); in red_destroy()
183 red_offload(sch, false); in red_destroy()
193 static int red_change(struct Qdisc *sch, struct nlattr *opt, in red_change() argument
196 struct red_sched_data *q = qdisc_priv(sch); in red_change()
221 child = fifo_create_dflt(sch, &bfifo_qdisc_ops, ctl->limit, in red_change()
230 sch_tree_lock(sch); in red_change()
254 sch_tree_unlock(sch); in red_change()
255 red_offload(sch, true); in red_change()
262 struct Qdisc *sch = q->sch; in red_adaptative_timer() local
263 spinlock_t *root_lock = qdisc_lock(qdisc_root_sleeping(sch)); in red_adaptative_timer()
271 static int red_init(struct Qdisc *sch, struct nlattr *opt, in red_init() argument
274 struct red_sched_data *q = qdisc_priv(sch); in red_init()
277 q->sch = sch; in red_init()
279 return red_change(sch, opt, extack); in red_init()
282 static int red_dump_offload_stats(struct Qdisc *sch, struct tc_red_qopt *opt) in red_dump_offload_stats() argument
284 struct net_device *dev = qdisc_dev(sch); in red_dump_offload_stats()
287 .handle = sch->handle, in red_dump_offload_stats()
288 .parent = sch->parent, in red_dump_offload_stats()
290 .stats.bstats = &sch->bstats, in red_dump_offload_stats()
291 .stats.qstats = &sch->qstats, in red_dump_offload_stats()
296 sch->flags &= ~TCQ_F_OFFLOADED; in red_dump_offload_stats()
307 sch->flags |= TCQ_F_OFFLOADED; in red_dump_offload_stats()
312 static int red_dump(struct Qdisc *sch, struct sk_buff *skb) in red_dump() argument
314 struct red_sched_data *q = qdisc_priv(sch); in red_dump()
327 err = red_dump_offload_stats(sch, &opt); in red_dump()
344 static int red_dump_stats(struct Qdisc *sch, struct gnet_dump *d) in red_dump_stats() argument
346 struct red_sched_data *q = qdisc_priv(sch); in red_dump_stats()
347 struct net_device *dev = qdisc_dev(sch); in red_dump_stats()
350 if (sch->flags & TCQ_F_OFFLOADED) { in red_dump_stats()
353 .handle = sch->handle, in red_dump_stats()
354 .parent = sch->parent, in red_dump_stats()
370 static int red_dump_class(struct Qdisc *sch, unsigned long cl, in red_dump_class() argument
373 struct red_sched_data *q = qdisc_priv(sch); in red_dump_class()
380 static int red_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new, in red_graft() argument
383 struct red_sched_data *q = qdisc_priv(sch); in red_graft()
388 *old = qdisc_replace(sch, new, &q->qdisc); in red_graft()
392 static struct Qdisc *red_leaf(struct Qdisc *sch, unsigned long arg) in red_leaf() argument
394 struct red_sched_data *q = qdisc_priv(sch); in red_leaf()
398 static unsigned long red_find(struct Qdisc *sch, u32 classid) in red_find() argument
403 static void red_walk(struct Qdisc *sch, struct qdisc_walker *walker) in red_walk() argument
407 if (walker->fn(sch, 1, walker) < 0) { in red_walk()