Lines Matching refs:sch
118 static void choke_drop_by_idx(struct Qdisc *sch, unsigned int idx, in choke_drop_by_idx() argument
121 struct choke_sched_data *q = qdisc_priv(sch); in choke_drop_by_idx()
131 qdisc_qstats_backlog_dec(sch, skb); in choke_drop_by_idx()
132 qdisc_tree_reduce_backlog(sch, 1, qdisc_pkt_len(skb)); in choke_drop_by_idx()
133 qdisc_drop(skb, sch, to_free); in choke_drop_by_idx()
134 --sch->q.qlen; in choke_drop_by_idx()
223 static int choke_enqueue(struct sk_buff *skb, struct Qdisc *sch, in choke_enqueue() argument
226 struct choke_sched_data *q = qdisc_priv(sch); in choke_enqueue()
231 q->vars.qavg = red_calc_qavg(p, &q->vars, sch->q.qlen); in choke_enqueue()
244 choke_drop_by_idx(sch, idx, to_free); in choke_enqueue()
252 qdisc_qstats_overlimit(sch); in choke_enqueue()
265 qdisc_qstats_overlimit(sch); in choke_enqueue()
278 if (sch->q.qlen < q->limit) { in choke_enqueue()
281 ++sch->q.qlen; in choke_enqueue()
282 qdisc_qstats_backlog_inc(sch, skb); in choke_enqueue()
287 return qdisc_drop(skb, sch, to_free); in choke_enqueue()
290 qdisc_drop(skb, sch, to_free); in choke_enqueue()
294 static struct sk_buff *choke_dequeue(struct Qdisc *sch) in choke_dequeue() argument
296 struct choke_sched_data *q = qdisc_priv(sch); in choke_dequeue()
308 --sch->q.qlen; in choke_dequeue()
309 qdisc_qstats_backlog_dec(sch, skb); in choke_dequeue()
310 qdisc_bstats_update(sch, skb); in choke_dequeue()
315 static void choke_reset(struct Qdisc *sch) in choke_reset() argument
317 struct choke_sched_data *q = qdisc_priv(sch); in choke_reset()
325 rtnl_qdisc_drop(skb, sch); in choke_reset()
328 sch->q.qlen = 0; in choke_reset()
329 sch->qstats.backlog = 0; in choke_reset()
347 static int choke_change(struct Qdisc *sch, struct nlattr *opt, in choke_change() argument
350 struct choke_sched_data *q = qdisc_priv(sch); in choke_change()
387 sch_tree_lock(sch); in choke_change()
390 unsigned int oqlen = sch->q.qlen, tail = 0; in choke_change()
404 qdisc_qstats_backlog_dec(sch, skb); in choke_change()
405 --sch->q.qlen; in choke_change()
406 rtnl_qdisc_drop(skb, sch); in choke_change()
408 qdisc_tree_reduce_backlog(sch, oqlen - sch->q.qlen, dropped); in choke_change()
416 sch_tree_lock(sch); in choke_change()
430 sch_tree_unlock(sch); in choke_change()
435 static int choke_init(struct Qdisc *sch, struct nlattr *opt, in choke_init() argument
438 return choke_change(sch, opt, extack); in choke_init()
441 static int choke_dump(struct Qdisc *sch, struct sk_buff *skb) in choke_dump() argument
443 struct choke_sched_data *q = qdisc_priv(sch); in choke_dump()
469 static int choke_dump_stats(struct Qdisc *sch, struct gnet_dump *d) in choke_dump_stats() argument
471 struct choke_sched_data *q = qdisc_priv(sch); in choke_dump_stats()
483 static void choke_destroy(struct Qdisc *sch) in choke_destroy() argument
485 struct choke_sched_data *q = qdisc_priv(sch); in choke_destroy()
490 static struct sk_buff *choke_peek_head(struct Qdisc *sch) in choke_peek_head() argument
492 struct choke_sched_data *q = qdisc_priv(sch); in choke_peek_head()