Lines Matching refs:sch

98 static bool drop_early(struct Qdisc *sch, u32 packet_size)  in drop_early()  argument
100 struct pie_sched_data *q = qdisc_priv(sch); in drop_early()
103 u32 mtu = psched_mtu(qdisc_dev(sch)); in drop_early()
119 if (sch->qstats.backlog < 2 * mtu) in drop_early()
137 static int pie_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch) in pie_qdisc_enqueue() argument
139 struct pie_sched_data *q = qdisc_priv(sch); in pie_qdisc_enqueue()
142 if (unlikely(qdisc_qlen(sch) >= sch->limit)) { in pie_qdisc_enqueue()
147 if (!drop_early(sch, skb->len)) { in pie_qdisc_enqueue()
161 if (qdisc_qlen(sch) > q->stats.maxq) in pie_qdisc_enqueue()
162 q->stats.maxq = qdisc_qlen(sch); in pie_qdisc_enqueue()
164 return qdisc_enqueue_tail(skb, sch); in pie_qdisc_enqueue()
169 return qdisc_drop(skb, sch); in pie_qdisc_enqueue()
182 static int pie_change(struct Qdisc *sch, struct nlattr *opt) in pie_change() argument
184 struct pie_sched_data *q = qdisc_priv(sch); in pie_change()
196 sch_tree_lock(sch); in pie_change()
215 sch->limit = limit; in pie_change()
231 qlen = sch->q.qlen; in pie_change()
232 while (sch->q.qlen > sch->limit) { in pie_change()
233 struct sk_buff *skb = __skb_dequeue(&sch->q); in pie_change()
235 qdisc_qstats_backlog_dec(sch, skb); in pie_change()
236 qdisc_drop(skb, sch); in pie_change()
238 qdisc_tree_decrease_qlen(sch, qlen - sch->q.qlen); in pie_change()
240 sch_tree_unlock(sch); in pie_change()
244 static void pie_process_dequeue(struct Qdisc *sch, struct sk_buff *skb) in pie_process_dequeue() argument
247 struct pie_sched_data *q = qdisc_priv(sch); in pie_process_dequeue()
248 int qlen = sch->qstats.backlog; /* current queue size in bytes */ in pie_process_dequeue()
310 static void calculate_probability(struct Qdisc *sch) in calculate_probability() argument
312 struct pie_sched_data *q = qdisc_priv(sch); in calculate_probability()
313 u32 qlen = sch->qstats.backlog; /* queue size in bytes */ in calculate_probability()
425 struct Qdisc *sch = (struct Qdisc *)arg; in pie_timer() local
426 struct pie_sched_data *q = qdisc_priv(sch); in pie_timer()
427 spinlock_t *root_lock = qdisc_lock(qdisc_root_sleeping(sch)); in pie_timer()
430 calculate_probability(sch); in pie_timer()
439 static int pie_init(struct Qdisc *sch, struct nlattr *opt) in pie_init() argument
441 struct pie_sched_data *q = qdisc_priv(sch); in pie_init()
445 sch->limit = q->params.limit; in pie_init()
447 setup_timer(&q->adapt_timer, pie_timer, (unsigned long)sch); in pie_init()
450 int err = pie_change(sch, opt); in pie_init()
460 static int pie_dump(struct Qdisc *sch, struct sk_buff *skb) in pie_dump() argument
462 struct pie_sched_data *q = qdisc_priv(sch); in pie_dump()
473 nla_put_u32(skb, TCA_PIE_LIMIT, sch->limit) || in pie_dump()
489 static int pie_dump_stats(struct Qdisc *sch, struct gnet_dump *d) in pie_dump_stats() argument
491 struct pie_sched_data *q = qdisc_priv(sch); in pie_dump_stats()
509 static struct sk_buff *pie_qdisc_dequeue(struct Qdisc *sch) in pie_qdisc_dequeue() argument
512 skb = __qdisc_dequeue_head(sch, &sch->q); in pie_qdisc_dequeue()
517 pie_process_dequeue(sch, skb); in pie_qdisc_dequeue()
521 static void pie_reset(struct Qdisc *sch) in pie_reset() argument
523 struct pie_sched_data *q = qdisc_priv(sch); in pie_reset()
524 qdisc_reset_queue(sch); in pie_reset()
528 static void pie_destroy(struct Qdisc *sch) in pie_destroy() argument
530 struct pie_sched_data *q = qdisc_priv(sch); in pie_destroy()