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

Function rte_pie_dequeue

dpdk/lib/sched/rte_pie.h:348–377  ·  view source on GitHub ↗

* @brief PIE rate estimation method * Called on each packet departure. * * @param pie [in] data pointer to PIE runtime data * @param pkt_len [in] packet length in bytes * @param time [in] current time stamp in cpu cycles */

Source from the content-addressed store, hash-verified

346 * @param time [in] current time stamp in cpu cycles
347 */
348static inline void
349rte_pie_dequeue(struct rte_pie *pie,
350 uint32_t pkt_len,
351 uint64_t time)
352{
353 /* Dequeue rate estimation */
354 if (pie->in_measurement) {
355 pie->departed_bytes_count += pkt_len;
356
357 /* Start a new measurement cycle when enough packets */
358 if (pie->departed_bytes_count >= RTE_DQ_THRESHOLD) {
359 uint64_t dq_time = time - pie->start_measurement;
360
361 if (pie->avg_dq_time == 0)
362 pie->avg_dq_time = dq_time;
363 else
364 pie->avg_dq_time = dq_time * RTE_DQ_WEIGHT + pie->avg_dq_time
365 * (1 - RTE_DQ_WEIGHT);
366
367 pie->in_measurement = 0;
368 }
369 }
370
371 /* Start measurement cycle when enough data in the queue */
372 if ((pie->qlen_bytes >= RTE_DQ_THRESHOLD) && (pie->in_measurement == 0)) {
373 pie->in_measurement = 1;
374 pie->start_measurement = time;
375 pie->departed_bytes_count = 0;
376 }
377}
378
379#ifdef __cplusplus
380}

Callers 2

enqueue_dequeue_perfFunction · 0.85

Calls

no outgoing calls

Tested by 1

enqueue_dequeue_perfFunction · 0.68