Fix port throughput related statistics for i40e virtual functions 77/68177/4
authorXavier Simonart <xavier.simonart@intel.com>
Mon, 1 Jul 2019 15:11:54 +0000 (17:11 +0200)
committerPatrice Buriez <patrice.buriez@intel.com>
Fri, 11 Oct 2019 12:01:52 +0000 (12:01 +0000)
When CRC stripping is enabled (default PROX behavior), the number of
rx bytes received by the NIC returned by DPDK usually does not take the
CRC 4 bytes into account.
However, for i40e virtual functions those 4 bytes are counted as part of
the received bytes. This resulted in both DPDK and PROX taking those 4 bytes
into account causing the RX % to be above 100%.

Change-Id: I59883b638ed67a6778f80c4dd6bfbfc4f9f2f528
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
VNFs/DPPD-PROX/display_ports.c

index 5475510..79a5a2d 100644 (file)
@@ -179,10 +179,10 @@ static void display_ports_draw_per_sec_stats(void)
                /* Take 20 bytes overhead (or 24 if crc strip is enabled) into accound */
                struct percent rx_percent;
                struct percent tx_percent;
-               if (strcmp(prox_port_cfg[port_id].short_name, "i40e") == 0) {
+               if (strcmp(prox_port_cfg[port_id].short_name, "i40e_vf") == 0) {
 #if defined (DEV_RX_OFFLOAD_CRC_STRIP)
                        if (prox_port_cfg[port_id].requested_rx_offload & DEV_RX_OFFLOAD_CRC_STRIP) {
-                               rx_percent = calc_percent(last->rx_bytes - prev->rx_bytes + 24 * (last->rx_tot - prev->rx_tot), delta_t);
+                               rx_percent = calc_percent(last->rx_bytes - prev->rx_bytes + 20 * (last->rx_tot - prev->rx_tot), delta_t);
                                tx_percent = calc_percent(last->tx_bytes - prev->tx_bytes + 24 * (last->tx_tot - prev->tx_tot), delta_t);
                        } else {
                                rx_percent = calc_percent(last->rx_bytes - prev->rx_bytes + 20 * (last->rx_tot - prev->rx_tot), delta_t);
@@ -203,7 +203,7 @@ static void display_ports_draw_per_sec_stats(void)
                                rx_percent = calc_percent(last->rx_bytes - prev->rx_bytes + 20 * (last->rx_tot - prev->rx_tot), delta_t);
                                tx_percent = calc_percent(last->tx_bytes - prev->tx_bytes + 20 * (last->tx_tot - prev->tx_tot), delta_t);
                        } else {
-                               rx_percent = calc_percent(last->rx_bytes - prev->rx_bytes + 24 * (last->rx_tot - prev->rx_tot), delta_t);
+                               rx_percent = calc_percent(last->rx_bytes - prev->rx_bytes + 20 * (last->rx_tot - prev->rx_tot), delta_t);
                                tx_percent = calc_percent(last->tx_bytes - prev->tx_bytes + 24 * (last->tx_tot - prev->tx_tot), delta_t);
                        }
                } else {