Hi Reshma,
> > > Latency calculation logic is not correct for the case where > packets gets dropped before TX. As for the dropped packets, > the timestamp is not cleared, and such packets still gets > counted for latency calculation in next runs, that will result > in inaccurate latency measurement. > > So fix this issue as below, > > Before setting timestamp in mbuf, check mbuf don't have > any prior valid time stamp flag set and after marking > the timestamp, set mbuf flags to indicate timestamp is > valid. > > Before calculating timestamp check mbuf flags are set to > indicate timestamp is valid. > > With the above logic it is guaranteed that correct timestamps > have been used. > > Fixes: 5cd3cac9ed ("latency: added new library for latency stats") > > Reported-by: Bao-Long Tran <long...@viettel.com.vn> > Signed-off-by: Reshma Pattan <reshma.pat...@intel.com> > Tested-by: Bao-Long Tran <long...@viettel.com.vn> > > --- > v2: remove check for mbuf->timestamp > --- > lib/librte_latencystats/rte_latencystats.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/lib/librte_latencystats/rte_latencystats.c > b/lib/librte_latencystats/rte_latencystats.c > index 1fdec68e3..0f702b722 100644 > --- a/lib/librte_latencystats/rte_latencystats.c > +++ b/lib/librte_latencystats/rte_latencystats.c > @@ -125,8 +125,11 @@ add_time_stamps(uint16_t pid __rte_unused, > for (i = 0; i < nb_pkts; i++) { > diff_tsc = now - prev_tsc; > timer_tsc += diff_tsc; > - if (timer_tsc >= samp_intvl) { > + > + if ((pkts[i]->ol_flags & PKT_RX_TIMESTAMP) == 0 > + && (timer_tsc >= samp_intvl)) { As a nit - I think you need extra tab here, to follow dpdk codying style. Apart from that: Acked-by: Konstantin Ananyev <konstantin.anan...@intel.com> > pkts[i]->timestamp = now; > + pkts[i]->ol_flags |= PKT_RX_TIMESTAMP; > timer_tsc = 0; > } > prev_tsc = now; > @@ -156,7 +159,7 @@ calc_latency(uint16_t pid __rte_unused, > > now = rte_rdtsc(); > for (i = 0; i < nb_pkts; i++) { > - if (pkts[i]->timestamp) > + if (pkts[i]->ol_flags & PKT_RX_TIMESTAMP) > latency[cnt++] = now - pkts[i]->timestamp; > } > > -- > 2.14.4