Lines Matching refs:sch
92 static inline int gred_wred_mode_check(struct Qdisc *sch) in gred_wred_mode_check() argument
94 struct gred_sched *table = qdisc_priv(sch); in gred_wred_mode_check()
115 struct Qdisc *sch) in gred_backlog() argument
118 return sch->qstats.backlog; in gred_backlog()
152 static int gred_enqueue(struct sk_buff *skb, struct Qdisc *sch) in gred_enqueue() argument
155 struct gred_sched *t = qdisc_priv(sch); in gred_enqueue()
168 if (likely(sch->qstats.backlog + qdisc_pkt_len(skb) <= in gred_enqueue()
169 sch->limit)) in gred_enqueue()
170 return qdisc_enqueue_tail(skb, sch); in gred_enqueue()
200 gred_backlog(t, q, sch)); in gred_enqueue()
213 qdisc_qstats_overlimit(sch); in gred_enqueue()
223 qdisc_qstats_overlimit(sch); in gred_enqueue()
233 if (gred_backlog(t, q, sch) + qdisc_pkt_len(skb) <= q->limit) { in gred_enqueue()
235 return qdisc_enqueue_tail(skb, sch); in gred_enqueue()
240 return qdisc_drop(skb, sch); in gred_enqueue()
243 qdisc_drop(skb, sch); in gred_enqueue()
247 static struct sk_buff *gred_dequeue(struct Qdisc *sch) in gred_dequeue() argument
250 struct gred_sched *t = qdisc_priv(sch); in gred_dequeue()
252 skb = qdisc_dequeue_head(sch); in gred_dequeue()
265 if (!sch->qstats.backlog) in gred_dequeue()
279 static unsigned int gred_drop(struct Qdisc *sch) in gred_drop() argument
282 struct gred_sched *t = qdisc_priv(sch); in gred_drop()
284 skb = qdisc_dequeue_tail(sch); in gred_drop()
298 if (!sch->qstats.backlog) in gred_drop()
306 qdisc_drop(skb, sch); in gred_drop()
313 static void gred_reset(struct Qdisc *sch) in gred_reset() argument
316 struct gred_sched *t = qdisc_priv(sch); in gred_reset()
318 qdisc_reset_queue(sch); in gred_reset()
336 static inline int gred_change_table_def(struct Qdisc *sch, struct nlattr *dps) in gred_change_table_def() argument
338 struct gred_sched *table = qdisc_priv(sch); in gred_change_table_def()
350 sch_tree_lock(sch); in gred_change_table_def()
360 sch_tree_unlock(sch); in gred_change_table_def()
365 if (gred_wred_mode_check(sch)) in gred_change_table_def()
384 static inline int gred_change_vq(struct Qdisc *sch, int dp, in gred_change_vq() argument
389 struct gred_sched *table = qdisc_priv(sch); in gred_change_vq()
401 if (ctl->limit > sch->limit) in gred_change_vq()
402 q->limit = sch->limit; in gred_change_vq()
424 static int gred_change(struct Qdisc *sch, struct nlattr *opt) in gred_change() argument
426 struct gred_sched *table = qdisc_priv(sch); in gred_change()
443 sch->limit = nla_get_u32(tb[TCA_GRED_LIMIT]); in gred_change()
444 return gred_change_table_def(sch, opt); in gred_change()
477 sch_tree_lock(sch); in gred_change()
479 err = gred_change_vq(sch, ctl->DP, ctl, prio, stab, max_P, &prealloc); in gred_change()
485 if (gred_wred_mode_check(sch)) in gred_change()
492 sch_tree_unlock(sch); in gred_change()
498 static int gred_init(struct Qdisc *sch, struct nlattr *opt) in gred_init() argument
514 sch->limit = nla_get_u32(tb[TCA_GRED_LIMIT]); in gred_init()
516 sch->limit = qdisc_dev(sch)->tx_queue_len in gred_init()
517 * psched_mtu(qdisc_dev(sch)); in gred_init()
519 return gred_change_table_def(sch, tb[TCA_GRED_DPS]); in gred_init()
522 static int gred_dump(struct Qdisc *sch, struct sk_buff *skb) in gred_dump() argument
524 struct gred_sched *table = qdisc_priv(sch); in gred_dump()
549 if (nla_put_u32(skb, TCA_GRED_LIMIT, sch->limit)) in gred_dump()
574 opt.backlog = gred_backlog(table, q, sch); in gred_dump()
609 static void gred_destroy(struct Qdisc *sch) in gred_destroy() argument
611 struct gred_sched *table = qdisc_priv(sch); in gred_destroy()