1 #ifndef NDNDPDK_CORE_RTTEST_H
2 #define NDNDPDK_CORE_RTTEST_H
6 #include "../dpdk/tsc.h"
17 static_assert(
sizeof(
RttValue) ==
sizeof(uint64_t),
"");
19 __attribute__((nonnull))
static __rte_always_inline
TscDuration
26 #define RttEstAlpha (1.0 * RttEstAlphaDividend / RttEstAlphaDivisor)
27 #define RttEstBeta (1.0 * RttEstBetaDividend / RttEstBetaDivisor)
37 __attribute__((nonnull))
static inline void
39 if (unlikely(*(uint64_t*)rttv == 0)) {
62 __attribute__((nonnull))
void
65 __attribute__((nonnull))
static inline void
74 __attribute__((nonnull))
static inline void
77 if (likely(rtte->
next_ > now)) {
81 RttValue_Push(&rtte->
rttv, rtt);
82 RttEst_SetRTO_(rtte, RttValue_RTO(&rtte->
rttv));
87 __attribute__((nonnull))
static inline void
88 RttEst_Backoff(
RttEst* rtte) {
89 RttEst_SetRTO_(rtte, rtte->
rto * 2);
#define CLAMP(x, lo, hi)
Definition: common.h:106
@ RttEstK
Definition: rttest-enum.h:7
#define RttEstAlpha
Definition: rttest.h:26
TscDuration RttEstTscMinRto
Definition: rttest.c:8
struct RttValue RttValue
SRTT and RTTVAR values in RTT estimator.
#define RttEstBeta
Definition: rttest.h:27
TscDuration RttEstTscMaxRto
Definition: rttest.c:9
struct RttEst RttEst
RTT estimator.
void RttEst_Init(RttEst *rtte)
Definition: rttest.c:19
RTT estimator.
Definition: rttest.h:55
TscDuration last
Definition: rttest.h:58
TscTime next_
Definition: rttest.h:59
TscDuration rto
Definition: rttest.h:57
RttValue rttv
Definition: rttest.h:56
SRTT and RTTVAR values in RTT estimator.
Definition: rttest.h:13
float sRtt
Definition: rttest.h:14
float rttVar
Definition: rttest.h:15
int64_t TscDuration
Duration in TscTime unit.
Definition: tsc.h:12
uint64_t TscTime
TSC clock time point.
Definition: tsc.h:9