Lines Matching refs:sch

246 static enum wdrr_bucket_idx hhf_classify(struct sk_buff *skb, struct Qdisc *sch)  in hhf_classify()  argument
248 struct hhf_sched_data *q = qdisc_priv(sch); in hhf_classify()
348 static unsigned int hhf_drop(struct Qdisc *sch) in hhf_drop() argument
350 struct hhf_sched_data *q = qdisc_priv(sch); in hhf_drop()
361 sch->q.qlen--; in hhf_drop()
362 qdisc_qstats_drop(sch); in hhf_drop()
363 qdisc_qstats_backlog_dec(sch, skb); in hhf_drop()
371 static unsigned int hhf_qdisc_drop(struct Qdisc *sch) in hhf_qdisc_drop() argument
375 prev_backlog = sch->qstats.backlog; in hhf_qdisc_drop()
376 hhf_drop(sch); in hhf_qdisc_drop()
377 return prev_backlog - sch->qstats.backlog; in hhf_qdisc_drop()
380 static int hhf_enqueue(struct sk_buff *skb, struct Qdisc *sch) in hhf_enqueue() argument
382 struct hhf_sched_data *q = qdisc_priv(sch); in hhf_enqueue()
387 idx = hhf_classify(skb, sch); in hhf_enqueue()
391 qdisc_qstats_backlog_inc(sch, skb); in hhf_enqueue()
410 if (++sch->q.qlen <= sch->limit) in hhf_enqueue()
413 prev_backlog = sch->qstats.backlog; in hhf_enqueue()
418 if (hhf_drop(sch) == idx) in hhf_enqueue()
422 qdisc_tree_reduce_backlog(sch, 1, prev_backlog - sch->qstats.backlog); in hhf_enqueue()
426 static struct sk_buff *hhf_dequeue(struct Qdisc *sch) in hhf_dequeue() argument
428 struct hhf_sched_data *q = qdisc_priv(sch); in hhf_dequeue()
453 sch->q.qlen--; in hhf_dequeue()
454 qdisc_qstats_backlog_dec(sch, skb); in hhf_dequeue()
465 qdisc_bstats_update(sch, skb); in hhf_dequeue()
471 static void hhf_reset(struct Qdisc *sch) in hhf_reset() argument
475 while ((skb = hhf_dequeue(sch)) != NULL) in hhf_reset()
494 static void hhf_destroy(struct Qdisc *sch) in hhf_destroy() argument
497 struct hhf_sched_data *q = qdisc_priv(sch); in hhf_destroy()
528 static int hhf_change(struct Qdisc *sch, struct nlattr *opt) in hhf_change() argument
530 struct hhf_sched_data *q = qdisc_priv(sch); in hhf_change()
555 sch_tree_lock(sch); in hhf_change()
558 sch->limit = nla_get_u32(tb[TCA_HHF_BACKLOG_LIMIT]); in hhf_change()
581 qlen = sch->q.qlen; in hhf_change()
582 prev_backlog = sch->qstats.backlog; in hhf_change()
583 while (sch->q.qlen > sch->limit) { in hhf_change()
584 struct sk_buff *skb = hhf_dequeue(sch); in hhf_change()
588 qdisc_tree_reduce_backlog(sch, qlen - sch->q.qlen, in hhf_change()
589 prev_backlog - sch->qstats.backlog); in hhf_change()
591 sch_tree_unlock(sch); in hhf_change()
595 static int hhf_init(struct Qdisc *sch, struct nlattr *opt) in hhf_init() argument
597 struct hhf_sched_data *q = qdisc_priv(sch); in hhf_init()
600 sch->limit = 1000; in hhf_init()
601 q->quantum = psched_mtu(qdisc_dev(sch)); in hhf_init()
613 int err = hhf_change(sch, opt); in hhf_init()
639 hhf_destroy(sch); in hhf_init()
650 hhf_destroy(sch); in hhf_init()
666 static int hhf_dump(struct Qdisc *sch, struct sk_buff *skb) in hhf_dump() argument
668 struct hhf_sched_data *q = qdisc_priv(sch); in hhf_dump()
675 if (nla_put_u32(skb, TCA_HHF_BACKLOG_LIMIT, sch->limit) || in hhf_dump()
692 static int hhf_dump_stats(struct Qdisc *sch, struct gnet_dump *d) in hhf_dump_stats() argument
694 struct hhf_sched_data *q = qdisc_priv(sch); in hhf_dump_stats()