Lines Matching refs:q
100 struct pie_sched_data *q = qdisc_priv(sch); in drop_early() local
102 u32 local_prob = q->vars.prob; in drop_early()
106 if (q->vars.burst_time > 0) in drop_early()
112 if ((q->vars.qdelay < q->params.target / 2) in drop_early()
113 && (q->vars.prob < MAX_PROB / 5)) in drop_early()
125 if (q->params.bytemode && packet_size <= mtu) in drop_early()
128 local_prob = q->vars.prob; in drop_early()
139 struct pie_sched_data *q = qdisc_priv(sch); in pie_qdisc_enqueue() local
143 q->stats.overlimit++; in pie_qdisc_enqueue()
149 } else if (q->params.ecn && (q->vars.prob <= MAX_PROB / 10) && in pie_qdisc_enqueue()
154 q->stats.ecn_mark++; in pie_qdisc_enqueue()
160 q->stats.packets_in++; 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()
168 q->stats.dropped++; in pie_qdisc_enqueue()
184 struct pie_sched_data *q = qdisc_priv(sch); in pie_change() local
204 q->params.target = PSCHED_NS2TICKS((u64)target * NSEC_PER_USEC); in pie_change()
209 q->params.tupdate = usecs_to_jiffies(nla_get_u32(tb[TCA_PIE_TUPDATE])); in pie_change()
214 q->params.limit = limit; in pie_change()
219 q->params.alpha = nla_get_u32(tb[TCA_PIE_ALPHA]); in pie_change()
222 q->params.beta = nla_get_u32(tb[TCA_PIE_BETA]); in pie_change()
225 q->params.ecn = nla_get_u32(tb[TCA_PIE_ECN]); in pie_change()
228 q->params.bytemode = nla_get_u32(tb[TCA_PIE_BYTEMODE]); 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()
238 qdisc_tree_decrease_qlen(sch, qlen - sch->q.qlen); in pie_change()
247 struct pie_sched_data *q = qdisc_priv(sch); in pie_process_dequeue() local
254 if (qlen >= QUEUE_THRESHOLD && q->vars.dq_count == DQCOUNT_INVALID) { in pie_process_dequeue()
255 q->vars.dq_tstamp = psched_get_time(); in pie_process_dequeue()
256 q->vars.dq_count = 0; in pie_process_dequeue()
268 if (q->vars.dq_count != DQCOUNT_INVALID) { in pie_process_dequeue()
269 q->vars.dq_count += skb->len; in pie_process_dequeue()
271 if (q->vars.dq_count >= QUEUE_THRESHOLD) { in pie_process_dequeue()
273 u32 dtime = now - q->vars.dq_tstamp; in pie_process_dequeue()
274 u32 count = q->vars.dq_count << PIE_SCALE; in pie_process_dequeue()
281 if (q->vars.avg_dq_rate == 0) in pie_process_dequeue()
282 q->vars.avg_dq_rate = count; in pie_process_dequeue()
284 q->vars.avg_dq_rate = in pie_process_dequeue()
285 (q->vars.avg_dq_rate - in pie_process_dequeue()
286 (q->vars.avg_dq_rate >> 3)) + (count >> 3); in pie_process_dequeue()
294 q->vars.dq_count = DQCOUNT_INVALID; in pie_process_dequeue()
296 q->vars.dq_count = 0; in pie_process_dequeue()
297 q->vars.dq_tstamp = psched_get_time(); in pie_process_dequeue()
300 if (q->vars.burst_time > 0) { in pie_process_dequeue()
301 if (q->vars.burst_time > dtime) in pie_process_dequeue()
302 q->vars.burst_time -= dtime; in pie_process_dequeue()
304 q->vars.burst_time = 0; in pie_process_dequeue()
312 struct pie_sched_data *q = qdisc_priv(sch); in calculate_probability() local
315 psched_time_t qdelay_old = q->vars.qdelay; /* in pschedtime */ in calculate_probability()
321 q->vars.qdelay_old = q->vars.qdelay; in calculate_probability()
323 if (q->vars.avg_dq_rate > 0) in calculate_probability()
324 qdelay = (qlen << PIE_SCALE) / q->vars.avg_dq_rate; in calculate_probability()
345 if (q->vars.prob < MAX_PROB / 100) { in calculate_probability()
347 (q->params.alpha * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 7; in calculate_probability()
349 (q->params.beta * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 7; in calculate_probability()
350 } else if (q->vars.prob < MAX_PROB / 10) { in calculate_probability()
352 (q->params.alpha * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 5; in calculate_probability()
354 (q->params.beta * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 5; in calculate_probability()
357 (q->params.alpha * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 4; in calculate_probability()
359 (q->params.beta * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 4; in calculate_probability()
363 delta += alpha * ((qdelay - q->params.target)); in calculate_probability()
366 oldprob = q->vars.prob; in calculate_probability()
370 q->vars.prob >= MAX_PROB / 10) in calculate_probability()
381 q->vars.prob += delta; in calculate_probability()
385 if (q->vars.prob < oldprob) { in calculate_probability()
386 q->vars.prob = MAX_PROB; in calculate_probability()
396 if (q->vars.prob > oldprob) in calculate_probability()
397 q->vars.prob = 0; in calculate_probability()
405 q->vars.prob = (q->vars.prob * 98) / 100; in calculate_probability()
407 q->vars.qdelay = qdelay; in calculate_probability()
408 q->vars.qlen_old = qlen; in calculate_probability()
416 if ((q->vars.qdelay < q->params.target / 2) && in calculate_probability()
417 (q->vars.qdelay_old < q->params.target / 2) && in calculate_probability()
418 (q->vars.prob == 0) && in calculate_probability()
419 (q->vars.avg_dq_rate > 0)) in calculate_probability()
420 pie_vars_init(&q->vars); in calculate_probability()
426 struct pie_sched_data *q = qdisc_priv(sch); in pie_timer() local
433 if (q->params.tupdate) in pie_timer()
434 mod_timer(&q->adapt_timer, jiffies + q->params.tupdate); in pie_timer()
441 struct pie_sched_data *q = qdisc_priv(sch); in pie_init() local
443 pie_params_init(&q->params); in pie_init()
444 pie_vars_init(&q->vars); 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()
456 mod_timer(&q->adapt_timer, jiffies + HZ / 2); in pie_init()
462 struct pie_sched_data *q = qdisc_priv(sch); in pie_dump() local
471 ((u32) PSCHED_TICKS2NS(q->params.target)) / in pie_dump()
474 nla_put_u32(skb, TCA_PIE_TUPDATE, jiffies_to_usecs(q->params.tupdate)) || in pie_dump()
475 nla_put_u32(skb, TCA_PIE_ALPHA, q->params.alpha) || in pie_dump()
476 nla_put_u32(skb, TCA_PIE_BETA, q->params.beta) || in pie_dump()
477 nla_put_u32(skb, TCA_PIE_ECN, q->params.ecn) || in pie_dump()
478 nla_put_u32(skb, TCA_PIE_BYTEMODE, q->params.bytemode)) in pie_dump()
491 struct pie_sched_data *q = qdisc_priv(sch); in pie_dump_stats() local
493 .prob = q->vars.prob, in pie_dump_stats()
494 .delay = ((u32) PSCHED_TICKS2NS(q->vars.qdelay)) / in pie_dump_stats()
497 .avg_dq_rate = q->vars.avg_dq_rate * in pie_dump_stats()
499 .packets_in = q->stats.packets_in, in pie_dump_stats()
500 .overlimit = q->stats.overlimit, in pie_dump_stats()
501 .maxq = q->stats.maxq, in pie_dump_stats()
502 .dropped = q->stats.dropped, in pie_dump_stats()
503 .ecn_mark = q->stats.ecn_mark, in pie_dump_stats()
512 skb = __qdisc_dequeue_head(sch, &sch->q); in pie_qdisc_dequeue()
523 struct pie_sched_data *q = qdisc_priv(sch); in pie_reset() local
525 pie_vars_init(&q->vars); in pie_reset()
530 struct pie_sched_data *q = qdisc_priv(sch); in pie_destroy() local
531 q->params.tupdate = 0; in pie_destroy()
532 del_timer_sync(&q->adapt_timer); in pie_destroy()