New upstream version 17.11.5
[deb_dpdk.git] / lib / librte_latencystats / rte_latencystats.c
index ce029a1..b038c81 100644 (file)
@@ -135,7 +135,7 @@ rte_latencystats_fill_values(struct rte_metric_value *values)
 }
 
 static uint16_t
-add_time_stamps(uint8_t pid __rte_unused,
+add_time_stamps(uint16_t pid __rte_unused,
                uint16_t qid __rte_unused,
                struct rte_mbuf **pkts,
                uint16_t nb_pkts,
@@ -153,8 +153,11 @@ add_time_stamps(uint8_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)) {
                        pkts[i]->timestamp = now;
+                       pkts[i]->ol_flags |= PKT_RX_TIMESTAMP;
                        timer_tsc = 0;
                }
                prev_tsc = now;
@@ -165,7 +168,7 @@ add_time_stamps(uint8_t pid __rte_unused,
 }
 
 static uint16_t
-calc_latency(uint8_t pid __rte_unused,
+calc_latency(uint16_t pid __rte_unused,
                uint16_t qid __rte_unused,
                struct rte_mbuf **pkts,
                uint16_t nb_pkts,
@@ -184,7 +187,7 @@ calc_latency(uint8_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;
        }
 
@@ -226,10 +229,10 @@ rte_latencystats_init(uint64_t app_samp_intvl,
                rte_latency_stats_flow_type_fn user_cb)
 {
        unsigned int i;
-       uint8_t pid;
+       uint16_t pid;
        uint16_t qid;
        struct rxtx_cbs *cbs = NULL;
-       const uint8_t nb_ports = rte_eth_dev_count();
+       const uint16_t nb_ports = rte_eth_dev_count();
        const char *ptr_strings[NUM_LATENCY_STATS] = {0};
        const struct rte_memzone *mz = NULL;
        const unsigned int flags = 0;
@@ -290,11 +293,11 @@ rte_latencystats_init(uint64_t app_samp_intvl,
 int
 rte_latencystats_uninit(void)
 {
-       uint8_t pid;
+       uint16_t pid;
        uint16_t qid;
        int ret = 0;
        struct rxtx_cbs *cbs = NULL;
-       const uint8_t nb_ports = rte_eth_dev_count();
+       const uint16_t nb_ports = rte_eth_dev_count();
 
        /** De register Rx/Tx callbacks */
        for (pid = 0; pid < nb_ports; pid++) {