Lines Matching refs:pst

206 	struct pie_status *pst = (struct pie_status *) x;  in calculate_drop_prob()  local
209 pprms = pst->parms; in calculate_drop_prob()
210 prob = pst->drop_prob; in calculate_drop_prob()
217 pst->current_qdelay = ((uint64_t)pst->pq->ni.len_bytes * in calculate_drop_prob()
218 pst->avg_dq_time) >> PIE_DQ_THRESHOLD_BITS; in calculate_drop_prob()
220 if (!pst->pq->ni.len_bytes) in calculate_drop_prob()
221 pst->current_qdelay = 0; in calculate_drop_prob()
225 ((int64_t)pst->current_qdelay - (int64_t)pprms->qdelay_ref); in calculate_drop_prob()
227 ((int64_t)pst->current_qdelay - (int64_t)pst->qdelay_old); in calculate_drop_prob()
288 if (pst->current_qdelay == 0 && pst->qdelay_old == 0) { in calculate_drop_prob()
298 pst->drop_prob = prob; in calculate_drop_prob()
301 pst->qdelay_old = pst->current_qdelay; in calculate_drop_prob()
304 if ((pst->sflags & PIE_ACTIVE) && pst->burst_allowance>0) { in calculate_drop_prob()
306 if (pst->burst_allowance > pprms->tupdate ) in calculate_drop_prob()
307 pst->burst_allowance -= pprms->tupdate; in calculate_drop_prob()
309 pst->burst_allowance = 0; in calculate_drop_prob()
313 if (pst->sflags & PIE_ACTIVE) in calculate_drop_prob()
314 callout_reset_sbt(&pst->aqm_pie_callout, in calculate_drop_prob()
315 (uint64_t)pprms->tupdate * SBT_1US, 0, calculate_drop_prob, pst, 0); in calculate_drop_prob()
317 mtx_unlock(&pst->lock_mtx); in calculate_drop_prob()
365 init_activate_pie(struct pie_status *pst, int resettimer) in init_activate_pie() argument
369 mtx_lock(&pst->lock_mtx); in init_activate_pie()
370 pprms = pst->parms; in init_activate_pie()
371 pst->drop_prob = 0; in init_activate_pie()
372 pst->qdelay_old = 0; in init_activate_pie()
373 pst->burst_allowance = pprms->max_burst; in init_activate_pie()
374 pst->accu_prob = 0; in init_activate_pie()
375 pst->dq_count = 0; in init_activate_pie()
376 pst->avg_dq_time = 0; in init_activate_pie()
377 pst->sflags = PIE_INMEASUREMENT; in init_activate_pie()
378 pst->measurement_start = AQM_UNOW; in init_activate_pie()
381 pst->sflags |= PIE_ACTIVE; in init_activate_pie()
382 callout_reset_sbt(&pst->aqm_pie_callout, in init_activate_pie()
384 0, calculate_drop_prob, pst, 0); in init_activate_pie()
387 mtx_unlock(&pst->lock_mtx); in init_activate_pie()
394 deactivate_pie(struct pie_status *pst) in deactivate_pie() argument
396 mtx_lock(&pst->lock_mtx); in deactivate_pie()
397 pst->sflags &= ~(PIE_ACTIVE | PIE_INMEASUREMENT); in deactivate_pie()
398 callout_stop(&pst->aqm_pie_callout); in deactivate_pie()
400 mtx_unlock(&pst->lock_mtx); in deactivate_pie()
412 struct pie_status *pst; in aqm_pie_dequeue() local
417 pst = q->aqm_status; in aqm_pie_dequeue()
418 pprms = pst->parms; in aqm_pie_dequeue()
423 if (!m || !(pst->sflags & PIE_ACTIVE)) in aqm_pie_dequeue()
429 if(pst->sflags & PIE_INMEASUREMENT) { in aqm_pie_dequeue()
430 pst->dq_count += m->m_pkthdr.len; in aqm_pie_dequeue()
432 if (pst->dq_count >= PIE_DQ_THRESHOLD) { in aqm_pie_dequeue()
433 dq_time = now - pst->measurement_start; in aqm_pie_dequeue()
439 if(pst->avg_dq_time == 0) in aqm_pie_dequeue()
440 pst->avg_dq_time = dq_time; in aqm_pie_dequeue()
448 pst->avg_dq_time = (dq_time* w in aqm_pie_dequeue()
449 + (pst->avg_dq_time * ((1L << 8) - w))) >> 8; in aqm_pie_dequeue()
450 pst->sflags &= ~PIE_INMEASUREMENT; in aqm_pie_dequeue()
459 if(!(pst->sflags & PIE_INMEASUREMENT) && in aqm_pie_dequeue()
461 pst->sflags |= PIE_INMEASUREMENT; in aqm_pie_dequeue()
462 pst->measurement_start = now; in aqm_pie_dequeue()
463 pst->dq_count = 0; in aqm_pie_dequeue()
468 pst->current_qdelay = now - pkt_ts; in aqm_pie_dequeue()
485 struct pie_status *pst; in aqm_pie_enqueue() local
490 pst = q->aqm_status; in aqm_pie_enqueue()
491 if(!pst) { in aqm_pie_enqueue()
499 pprms = pst->parms; in aqm_pie_enqueue()
510 else if ((pst->sflags & PIE_ACTIVE) && pst->burst_allowance==0 in aqm_pie_enqueue()
511 && drop_early(pst, q->ni.len_bytes) == DROP) { in aqm_pie_enqueue()
516 if ((pprms->flags & PIE_ECN_ENABLED) && pst->drop_prob < in aqm_pie_enqueue()
525 if (!(pst->sflags & PIE_ACTIVE) && qlen >= pst->one_third_q_size) { in aqm_pie_enqueue()
526 init_activate_pie(pst, 1); in aqm_pie_enqueue()
530 if ((pst->sflags & PIE_ACTIVE) && pst->drop_prob == 0 && in aqm_pie_enqueue()
531 pst->current_qdelay < (pprms->qdelay_ref >> 1) && in aqm_pie_enqueue()
532 pst->qdelay_old < (pprms->qdelay_ref >> 1)) { in aqm_pie_enqueue()
533 pst->burst_allowance = pprms->max_burst; in aqm_pie_enqueue()
535 deactivate_pie(pst); in aqm_pie_enqueue()
562 pst->accu_prob = 0; in aqm_pie_enqueue()
576 struct pie_status *pst; in aqm_pie_init() local
597 pst = q->aqm_status; in aqm_pie_init()
603 pst->pq = q; in aqm_pie_init()
604 pst->parms = pprms; in aqm_pie_init()
608 pst->one_third_q_size = q->fs->fs.qsize/3; in aqm_pie_init()
610 mtx_init(&pst->lock_mtx, "mtx_pie", NULL, MTX_DEF); in aqm_pie_init()
611 callout_init_mtx(&pst->aqm_pie_callout, &pst->lock_mtx, in aqm_pie_init()
614 pst->current_qdelay = 0; in aqm_pie_init()
615 init_activate_pie(pst, !(pprms->flags & PIE_ON_OFF_MODE_ENABLED)); in aqm_pie_init()
630 struct pie_status *pst = (struct pie_status *) x; in pie_callout_cleanup() local
632 mtx_unlock(&pst->lock_mtx); in pie_callout_cleanup()
633 mtx_destroy(&pst->lock_mtx); in pie_callout_cleanup()
652 struct pie_status *pst = q->aqm_status; in aqm_pie_cleanup() local
653 if(!pst) { in aqm_pie_cleanup()
673 mtx_lock(&pst->lock_mtx); in aqm_pie_cleanup()
674 callout_reset_sbt(&pst->aqm_pie_callout, in aqm_pie_cleanup()
675 SBT_1US, 0, pie_callout_cleanup, pst, 0); in aqm_pie_cleanup()
677 mtx_unlock(&pst->lock_mtx); in aqm_pie_cleanup()