Open manishmatey opened 3 years ago
My guess is, this was part of the original BSD code and it actually refers to timer granularity and not to the returned value.
/*
We always use 1ms granularity independent of hz. */ static __inline u_int tcp_ts_getticks(void) { struct timeval tv; u_long ms;
/*
return (ms); }
I guess is referring to this: https://tools.ietf.org/html/rfc1323 "Based upon these considerations, we choose a timestamp clock frequency in the range 1 ms to 1 sec per tick. This range also matches the requirements of the RTTM mechanism, which does not need much more resolution than the granularity of the retransmit timer, e.g., tens or hundreds of milliseconds."
Ofp uses a OFP_TIMER_RESOLUTION_US of 10000UL (10ms) (most of the times).
OFP function tcp_ts_getticks() calls below ODP API's:
ofp_timer_ticks_u64(0) -> odp_timer_current_tick(shm->socket_timer_pool) -> rte_get_timer_cycles()
rte_get_timer_cycles() returns big value (in my case : 604475915736788 ) but tcp_ts_getticks() expect value between 1 to 1000 as per below comment on function: /*
tcp_ts_getticks() in ms, should be 1ms < x < 1000ms according to RFC 1323. We always use 1ms granularity independent of hz. / static __inline uint32_t tcp_ts_getticks(void) { return (ofp_timer_ticks(0) (OFP_TIMER_RESOLUTION_US / 1000)); }
Issue : TCP connection RESET while handshake.
Current ODP/OFP version : OFP : 3.0 ODP : 1.23
Please help me on this above issue.
I have some queries as well :