Lines Matching refs:pst

208 	struct pie_status *pst = (struct pie_status *) x;
211 pprms = pst->parms;
212 prob = pst->drop_prob;
219 pst->current_qdelay = ((uint64_t)pst->pq->ni.len_bytes *
220 pst->avg_dq_time) >> PIE_DQ_THRESHOLD_BITS;
222 if (!pst->pq->ni.len_bytes)
223 pst->current_qdelay = 0;
227 ((int64_t)pst->current_qdelay - (int64_t)pprms->qdelay_ref);
229 ((int64_t)pst->current_qdelay - (int64_t)pst->qdelay_old);
290 if (pst->current_qdelay == 0 && pst->qdelay_old == 0) {
300 pst->drop_prob = prob;
303 pst->qdelay_old = pst->current_qdelay;
306 if ((pst->sflags & PIE_ACTIVE) && pst->burst_allowance>0) {
308 if (pst->burst_allowance > pprms->tupdate )
309 pst->burst_allowance -= pprms->tupdate;
311 pst->burst_allowance = 0;
315 if (pst->sflags & PIE_ACTIVE)
316 callout_reset_sbt(&pst->aqm_pie_callout,
317 (uint64_t)pprms->tupdate * SBT_1US, 0, calculate_drop_prob, pst, 0);
319 mtx_unlock(&pst->lock_mtx);
361 init_activate_pie(struct pie_status *pst, int resettimer)
365 mtx_lock(&pst->lock_mtx);
366 pprms = pst->parms;
367 pst->drop_prob = 0;
368 pst->qdelay_old = 0;
369 pst->burst_allowance = pprms->max_burst;
370 pst->accu_prob = 0;
371 pst->dq_count = 0;
372 pst->avg_dq_time = 0;
373 pst->sflags = PIE_INMEASUREMENT;
374 pst->measurement_start = AQM_UNOW;
377 pst->sflags |= PIE_ACTIVE;
378 callout_reset_sbt(&pst->aqm_pie_callout,
380 0, calculate_drop_prob, pst, 0);
383 mtx_unlock(&pst->lock_mtx);
390 deactivate_pie(struct pie_status *pst)
392 mtx_lock(&pst->lock_mtx);
393 pst->sflags &= ~(PIE_ACTIVE | PIE_INMEASUREMENT);
394 callout_stop(&pst->aqm_pie_callout);
396 mtx_unlock(&pst->lock_mtx);
409 struct pie_status *pst;
414 pst = q->aqm_status;
415 pprms = pst->parms;
421 if (!m || !(pst->sflags & PIE_ACTIVE))
427 if(pst->sflags & PIE_INMEASUREMENT) {
428 pst->dq_count += m->m_pkthdr.len;
430 if (pst->dq_count >= PIE_DQ_THRESHOLD) {
431 dq_time = now - pst->measurement_start;
437 if(pst->avg_dq_time == 0)
438 pst->avg_dq_time = dq_time;
446 pst->avg_dq_time = (dq_time* w
447 + (pst->avg_dq_time * ((1L << 8) - w))) >> 8;
448 pst->sflags &= ~PIE_INMEASUREMENT;
457 if(!(pst->sflags & PIE_INMEASUREMENT) &&
459 pst->sflags |= PIE_INMEASUREMENT;
460 pst->measurement_start = now;
461 pst->dq_count = 0;
466 pst->current_qdelay = now - pkt_ts;
483 struct pie_status *pst;
488 pst = q->aqm_status;
489 if(!pst) {
497 pprms = pst->parms;
508 else if ((pst->sflags & PIE_ACTIVE) && pst->burst_allowance==0
509 && drop_early(pst, q->ni.len_bytes) == DROP) {
514 if ((pprms->flags & PIE_ECN_ENABLED) && pst->drop_prob <
523 if (!(pst->sflags & PIE_ACTIVE) && qlen >= pst->one_third_q_size) {
524 init_activate_pie(pst, 1);
528 if ((pst->sflags & PIE_ACTIVE) && pst->drop_prob == 0 &&
529 pst->current_qdelay < (pprms->qdelay_ref >> 1) &&
530 pst->qdelay_old < (pprms->qdelay_ref >> 1)) {
532 pst->burst_allowance = pprms->max_burst;
534 deactivate_pie(pst);
561 pst->accu_prob = 0;
575 struct pie_status *pst;
596 pst = q->aqm_status;
600 pst->pq = q;
601 pst->parms = pprms;
605 pst->one_third_q_size = q->fs->fs.qsize/3;
607 mtx_init(&pst->lock_mtx, "mtx_pie", NULL, MTX_DEF);
608 callout_init_mtx(&pst->aqm_pie_callout, &pst->lock_mtx,
611 pst->current_qdelay = 0;
612 init_activate_pie(pst, !(pprms->flags & PIE_ON_OFF_MODE_ENABLED));
627 struct pie_status *pst = (struct pie_status *) x;
629 mtx_unlock(&pst->lock_mtx);
630 mtx_destroy(&pst->lock_mtx);
649 struct pie_status *pst = q->aqm_status;
650 if(!pst) {
670 mtx_lock(&pst->lock_mtx);
671 callout_reset_sbt(&pst->aqm_pie_callout,
672 SBT_1US, 0, pie_callout_cleanup, pst, 0);
674 mtx_unlock(&pst->lock_mtx);