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()
236 qdisc_qstats_backlog_dec(sch, skb); in pie_change()
237 qdisc_drop(skb, sch); in pie_change()
239 qdisc_tree_reduce_backlog(sch, qlen - sch->q.qlen, dropped); in pie_change()
241 sch_tree_unlock(sch); in pie_change()
245 static void pie_process_dequeue(struct Qdisc *sch, struct sk_buff *skb) in pie_process_dequeue() argument
248 struct pie_sched_data *q = qdisc_priv(sch); in pie_process_dequeue()
249 int qlen = sch->qstats.backlog; /* current queue size in bytes */ in pie_process_dequeue()
311 static void calculate_probability(struct Qdisc *sch) in calculate_probability() argument
313 struct pie_sched_data *q = qdisc_priv(sch); in calculate_probability()
314 u32 qlen = sch->qstats.backlog; /* queue size in bytes */ in calculate_probability()
426 struct Qdisc *sch = (struct Qdisc *)arg; in pie_timer() local
427 struct pie_sched_data *q = qdisc_priv(sch); in pie_timer()
428 spinlock_t *root_lock = qdisc_lock(qdisc_root_sleeping(sch)); in pie_timer()
431 calculate_probability(sch); in pie_timer()
440 static int pie_init(struct Qdisc *sch, struct nlattr *opt) in pie_init() argument
442 struct pie_sched_data *q = qdisc_priv(sch); in pie_init()
446 sch->limit = q->params.limit; in pie_init()
448 setup_timer(&q->adapt_timer, pie_timer, (unsigned long)sch); in pie_init()
451 int err = pie_change(sch, opt); in pie_init()
461 static int pie_dump(struct Qdisc *sch, struct sk_buff *skb) in pie_dump() argument
463 struct pie_sched_data *q = qdisc_priv(sch); in pie_dump()
474 nla_put_u32(skb, TCA_PIE_LIMIT, sch->limit) || in pie_dump()
490 static int pie_dump_stats(struct Qdisc *sch, struct gnet_dump *d) in pie_dump_stats() argument
492 struct pie_sched_data *q = qdisc_priv(sch); in pie_dump_stats()
510 static struct sk_buff *pie_qdisc_dequeue(struct Qdisc *sch) in pie_qdisc_dequeue() argument
513 skb = __qdisc_dequeue_head(sch, &sch->q); in pie_qdisc_dequeue()
518 pie_process_dequeue(sch, skb); in pie_qdisc_dequeue()
522 static void pie_reset(struct Qdisc *sch) in pie_reset() argument
524 struct pie_sched_data *q = qdisc_priv(sch); in pie_reset()
525 qdisc_reset_queue(sch); in pie_reset()
529 static void pie_destroy(struct Qdisc *sch) in pie_destroy() argument
531 struct pie_sched_data *q = qdisc_priv(sch); in pie_destroy()