Lines Matching refs:sch

362 static void tfifo_reset(struct Qdisc *sch)  in tfifo_reset()  argument
364 struct netem_sched_data *q = qdisc_priv(sch); in tfifo_reset()
377 static void tfifo_enqueue(struct sk_buff *nskb, struct Qdisc *sch) in tfifo_enqueue() argument
379 struct netem_sched_data *q = qdisc_priv(sch); in tfifo_enqueue()
395 sch->q.qlen++; in tfifo_enqueue()
402 static struct sk_buff *netem_segment(struct sk_buff *skb, struct Qdisc *sch) in netem_segment() argument
410 qdisc_reshape_fail(skb, sch); in netem_segment()
423 static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch) in netem_enqueue() argument
425 struct netem_sched_data *q = qdisc_priv(sch); in netem_enqueue()
442 qdisc_qstats_drop(sch); /* mark packet */ in netem_enqueue()
447 qdisc_qstats_drop(sch); in netem_enqueue()
464 struct Qdisc *rootq = qdisc_root(sch); in netem_enqueue()
480 segs = netem_segment(skb, sch); in netem_enqueue()
493 rc = qdisc_drop(skb, sch); in netem_enqueue()
501 if (unlikely(skb_queue_len(&sch->q) >= sch->limit)) in netem_enqueue()
502 return qdisc_reshape_fail(skb, sch); in netem_enqueue()
504 qdisc_qstats_backlog_inc(sch, skb); in netem_enqueue()
521 if (!skb_queue_empty(&sch->q)) in netem_enqueue()
522 last = skb_peek_tail(&sch->q); in netem_enqueue()
542 tfifo_enqueue(skb, sch); in netem_enqueue()
551 __skb_queue_head(&sch->q, skb); in netem_enqueue()
552 sch->qstats.requeues++; in netem_enqueue()
562 rc = qdisc_enqueue(segs, sch); in netem_enqueue()
565 qdisc_qstats_drop(sch); in netem_enqueue()
572 sch->q.qlen += nb; in netem_enqueue()
574 qdisc_tree_reduce_backlog(sch, 1 - nb, prev_len - len); in netem_enqueue()
579 static unsigned int netem_drop(struct Qdisc *sch) in netem_drop() argument
581 struct netem_sched_data *q = qdisc_priv(sch); in netem_drop()
584 len = qdisc_queue_drop(sch); in netem_drop()
593 sch->q.qlen--; in netem_drop()
596 qdisc_qstats_backlog_dec(sch, skb); in netem_drop()
603 qdisc_qstats_drop(sch); in netem_drop()
608 static struct sk_buff *netem_dequeue(struct Qdisc *sch) in netem_dequeue() argument
610 struct netem_sched_data *q = qdisc_priv(sch); in netem_dequeue()
614 if (qdisc_is_throttled(sch)) in netem_dequeue()
618 skb = __skb_dequeue(&sch->q); in netem_dequeue()
620 qdisc_qstats_backlog_dec(sch, skb); in netem_dequeue()
622 qdisc_unthrottled(sch); in netem_dequeue()
623 qdisc_bstats_update(sch, skb); in netem_dequeue()
637 sch->q.qlen--; in netem_dequeue()
638 qdisc_qstats_backlog_dec(sch, skb); in netem_dequeue()
657 qdisc_qstats_drop(sch); in netem_dequeue()
658 qdisc_tree_reduce_backlog(sch, 1, in netem_dequeue()
683 static void netem_reset(struct Qdisc *sch) in netem_reset() argument
685 struct netem_sched_data *q = qdisc_priv(sch); in netem_reset()
687 qdisc_reset_queue(sch); in netem_reset()
688 tfifo_reset(sch); in netem_reset()
703 static int get_dist_table(struct Qdisc *sch, const struct nlattr *attr) in get_dist_table() argument
705 struct netem_sched_data *q = qdisc_priv(sch); in get_dist_table()
727 root_lock = qdisc_root_sleeping_lock(sch); in get_dist_table()
859 static int netem_change(struct Qdisc *sch, struct nlattr *opt) in netem_change() argument
861 struct netem_sched_data *q = qdisc_priv(sch); in netem_change()
891 ret = get_dist_table(sch, tb[TCA_NETEM_DELAY_DIST]); in netem_change()
903 sch->limit = qopt->limit; in netem_change()
941 static int netem_init(struct Qdisc *sch, struct nlattr *opt) in netem_init() argument
943 struct netem_sched_data *q = qdisc_priv(sch); in netem_init()
949 qdisc_watchdog_init(&q->watchdog, sch); in netem_init()
952 ret = netem_change(sch, opt); in netem_init()
958 static void netem_destroy(struct Qdisc *sch) in netem_destroy() argument
960 struct netem_sched_data *q = qdisc_priv(sch); in netem_destroy()
1018 static int netem_dump(struct Qdisc *sch, struct sk_buff *skb) in netem_dump() argument
1020 const struct netem_sched_data *q = qdisc_priv(sch); in netem_dump()
1079 static int netem_dump_class(struct Qdisc *sch, unsigned long cl, in netem_dump_class() argument
1082 struct netem_sched_data *q = qdisc_priv(sch); in netem_dump_class()
1093 static int netem_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new, in netem_graft() argument
1096 struct netem_sched_data *q = qdisc_priv(sch); in netem_graft()
1098 *old = qdisc_replace(sch, new, &q->qdisc); in netem_graft()
1102 static struct Qdisc *netem_leaf(struct Qdisc *sch, unsigned long arg) in netem_leaf() argument
1104 struct netem_sched_data *q = qdisc_priv(sch); in netem_leaf()
1108 static unsigned long netem_get(struct Qdisc *sch, u32 classid) in netem_get() argument
1113 static void netem_put(struct Qdisc *sch, unsigned long arg) in netem_put() argument
1117 static void netem_walk(struct Qdisc *sch, struct qdisc_walker *walker) in netem_walk() argument
1121 if (walker->fn(sch, 1, walker) < 0) { in netem_walk()