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()
239 qdisc_tree_reduce_backlog(sch, qlen - sch->q.qlen, dropped); in pie_change()
248 struct pie_sched_data *q = qdisc_priv(sch); in pie_process_dequeue() local
255 if (qlen >= QUEUE_THRESHOLD && q->vars.dq_count == DQCOUNT_INVALID) { in pie_process_dequeue()
256 q->vars.dq_tstamp = psched_get_time(); in pie_process_dequeue()
257 q->vars.dq_count = 0; in pie_process_dequeue()
269 if (q->vars.dq_count != DQCOUNT_INVALID) { in pie_process_dequeue()
270 q->vars.dq_count += skb->len; in pie_process_dequeue()
272 if (q->vars.dq_count >= QUEUE_THRESHOLD) { in pie_process_dequeue()
274 u32 dtime = now - q->vars.dq_tstamp; in pie_process_dequeue()
275 u32 count = q->vars.dq_count << PIE_SCALE; in pie_process_dequeue()
282 if (q->vars.avg_dq_rate == 0) in pie_process_dequeue()
283 q->vars.avg_dq_rate = count; in pie_process_dequeue()
285 q->vars.avg_dq_rate = in pie_process_dequeue()
286 (q->vars.avg_dq_rate - in pie_process_dequeue()
287 (q->vars.avg_dq_rate >> 3)) + (count >> 3); in pie_process_dequeue()
295 q->vars.dq_count = DQCOUNT_INVALID; in pie_process_dequeue()
297 q->vars.dq_count = 0; in pie_process_dequeue()
298 q->vars.dq_tstamp = psched_get_time(); in pie_process_dequeue()
301 if (q->vars.burst_time > 0) { in pie_process_dequeue()
302 if (q->vars.burst_time > dtime) in pie_process_dequeue()
303 q->vars.burst_time -= dtime; in pie_process_dequeue()
305 q->vars.burst_time = 0; in pie_process_dequeue()
313 struct pie_sched_data *q = qdisc_priv(sch); in calculate_probability() local
316 psched_time_t qdelay_old = q->vars.qdelay; /* in pschedtime */ in calculate_probability()
322 q->vars.qdelay_old = q->vars.qdelay; in calculate_probability()
324 if (q->vars.avg_dq_rate > 0) in calculate_probability()
325 qdelay = (qlen << PIE_SCALE) / q->vars.avg_dq_rate; in calculate_probability()
346 if (q->vars.prob < MAX_PROB / 100) { in calculate_probability()
348 (q->params.alpha * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 7; in calculate_probability()
350 (q->params.beta * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 7; in calculate_probability()
351 } else if (q->vars.prob < MAX_PROB / 10) { in calculate_probability()
353 (q->params.alpha * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 5; in calculate_probability()
355 (q->params.beta * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 5; in calculate_probability()
358 (q->params.alpha * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 4; in calculate_probability()
360 (q->params.beta * (MAX_PROB / PSCHED_TICKS_PER_SEC)) >> 4; in calculate_probability()
364 delta += alpha * ((qdelay - q->params.target)); in calculate_probability()
367 oldprob = q->vars.prob; in calculate_probability()
371 q->vars.prob >= MAX_PROB / 10) in calculate_probability()
382 q->vars.prob += delta; in calculate_probability()
386 if (q->vars.prob < oldprob) { in calculate_probability()
387 q->vars.prob = MAX_PROB; in calculate_probability()
397 if (q->vars.prob > oldprob) in calculate_probability()
398 q->vars.prob = 0; in calculate_probability()
406 q->vars.prob = (q->vars.prob * 98) / 100; in calculate_probability()
408 q->vars.qdelay = qdelay; in calculate_probability()
409 q->vars.qlen_old = qlen; in calculate_probability()
417 if ((q->vars.qdelay < q->params.target / 2) && in calculate_probability()
418 (q->vars.qdelay_old < q->params.target / 2) && in calculate_probability()
419 (q->vars.prob == 0) && in calculate_probability()
420 (q->vars.avg_dq_rate > 0)) in calculate_probability()
421 pie_vars_init(&q->vars); in calculate_probability()
427 struct pie_sched_data *q = qdisc_priv(sch); in pie_timer() local
434 if (q->params.tupdate) in pie_timer()
435 mod_timer(&q->adapt_timer, jiffies + q->params.tupdate); in pie_timer()
442 struct pie_sched_data *q = qdisc_priv(sch); in pie_init() local
444 pie_params_init(&q->params); in pie_init()
445 pie_vars_init(&q->vars); 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()
457 mod_timer(&q->adapt_timer, jiffies + HZ / 2); in pie_init()
463 struct pie_sched_data *q = qdisc_priv(sch); in pie_dump() local
472 ((u32) PSCHED_TICKS2NS(q->params.target)) / in pie_dump()
475 nla_put_u32(skb, TCA_PIE_TUPDATE, jiffies_to_usecs(q->params.tupdate)) || in pie_dump()
476 nla_put_u32(skb, TCA_PIE_ALPHA, q->params.alpha) || in pie_dump()
477 nla_put_u32(skb, TCA_PIE_BETA, q->params.beta) || in pie_dump()
478 nla_put_u32(skb, TCA_PIE_ECN, q->params.ecn) || in pie_dump()
479 nla_put_u32(skb, TCA_PIE_BYTEMODE, q->params.bytemode)) in pie_dump()
492 struct pie_sched_data *q = qdisc_priv(sch); in pie_dump_stats() local
494 .prob = q->vars.prob, in pie_dump_stats()
495 .delay = ((u32) PSCHED_TICKS2NS(q->vars.qdelay)) / in pie_dump_stats()
498 .avg_dq_rate = q->vars.avg_dq_rate * in pie_dump_stats()
500 .packets_in = q->stats.packets_in, in pie_dump_stats()
501 .overlimit = q->stats.overlimit, in pie_dump_stats()
502 .maxq = q->stats.maxq, in pie_dump_stats()
503 .dropped = q->stats.dropped, in pie_dump_stats()
504 .ecn_mark = q->stats.ecn_mark, in pie_dump_stats()
513 skb = __qdisc_dequeue_head(sch, &sch->q); in pie_qdisc_dequeue()
524 struct pie_sched_data *q = qdisc_priv(sch); in pie_reset() local
526 pie_vars_init(&q->vars); in pie_reset()
531 struct pie_sched_data *q = qdisc_priv(sch); in pie_destroy() local
532 q->params.tupdate = 0; in pie_destroy()
533 del_timer_sync(&q->adapt_timer); in pie_destroy()