MCPcopy Create free account
hub / github.com/F-Stack/f-stack / calc_moving_average

Function calc_moving_average

freebsd/netinet/cc/cc_cdg.c:522–564  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

520}
521
522static inline void
523calc_moving_average(struct cdg *cdg_data, long qdiff_max, long qdiff_min)
524{
525 struct qdiff_sample *qds;
526
527 ++cdg_data->num_samples;
528 if (cdg_data->num_samples > cdg_data->sample_q_size) {
529 /* Minimum RTT. */
530 qds = STAILQ_FIRST(&cdg_data->qdiffmin_q);
531 cdg_data->min_qtrend = cdg_data->min_qtrend +
532 (qdiff_min - qds->qdiff) / cdg_data->sample_q_size;
533 STAILQ_REMOVE_HEAD(&cdg_data->qdiffmin_q, qdiff_lnk);
534 qds->qdiff = qdiff_min;
535 STAILQ_INSERT_TAIL(&cdg_data->qdiffmin_q, qds, qdiff_lnk);
536
537 /* Maximum RTT. */
538 qds = STAILQ_FIRST(&cdg_data->qdiffmax_q);
539 cdg_data->max_qtrend = cdg_data->max_qtrend +
540 (qdiff_max - qds->qdiff) / cdg_data->sample_q_size;
541 STAILQ_REMOVE_HEAD(&cdg_data->qdiffmax_q, qdiff_lnk);
542 qds->qdiff = qdiff_max;
543 STAILQ_INSERT_TAIL(&cdg_data->qdiffmax_q, qds, qdiff_lnk);
544 --cdg_data->num_samples;
545 } else {
546 qds = uma_zalloc(qdiffsample_zone, M_NOWAIT);
547 if (qds != NULL) {
548 cdg_data->min_qtrend = cdg_data->min_qtrend +
549 qdiff_min / cdg_data->sample_q_size;
550 qds->qdiff = qdiff_min;
551 STAILQ_INSERT_TAIL(&cdg_data->qdiffmin_q, qds,
552 qdiff_lnk);
553 }
554
555 qds = uma_zalloc(qdiffsample_zone, M_NOWAIT);
556 if (qds) {
557 cdg_data->max_qtrend = cdg_data->max_qtrend +
558 qdiff_max / cdg_data->sample_q_size;
559 qds->qdiff = qdiff_max;
560 STAILQ_INSERT_TAIL(&cdg_data->qdiffmax_q, qds,
561 qdiff_lnk);
562 }
563 }
564}
565
566static void
567cdg_ack_received(struct cc_var *ccv, uint16_t ack_type)

Callers 1

cdg_ack_receivedFunction · 0.85

Calls 1

uma_zallocFunction · 0.50

Tested by

no test coverage detected