[ovs-dev] [PATCH] netdev-linux: remove sum of vport stats and kernel netdev stats

姜立东 jianglidong3 at jd.com
Thu Apr 23 05:35:14 UTC 2020


From df9ff3b67f11e467928ca0873031d81b87f3d0c5 Mon Sep 17 00:00:00 2001
From: Jiang Lidong <jianglidong3 at jd.com>
Date: Thu, 23 Apr 2020 11:07:28 +0800
Subject: [PATCH] netdev-linux: remove sum of vport stats and kernel netdev stats
    When using kernel veth as OVS interface, doubled drop counter
    value is shown when veth drops packets due to traffic overrun.

    In netdev_linux_get_stats, it reads both vport stats and kernel
    netdev stats, in case vport stats retrieve failure. If both of
    them success, error counters are added to include errors from
    different layers. But implementation of ovs_vport_get_stats in
    kernel data path has included kernel netdev stats by calling
    dev_get_stats. When drop or other error counters is not zero,
    its value is doubled by netdev_linux_get_stats.

    In this change, adding kernel netdev stats into vport stats
    is removed, since vport stats includes all information of
    kernel netdev stats.

Signed-off-by: Jiang Lidong <jianglidong3 at jd.com>
---
 lib/netdev-linux.c | 27 +--------------------------
 1 file changed, 1 insertion(+), 26 deletions(-)

diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
index ff045cb..6d139d0 100644
--- a/lib/netdev-linux.c
+++ b/lib/netdev-linux.c
@@ -2207,33 +2207,8 @@ netdev_linux_get_stats(const struct netdev *netdev_,
     } else if (netdev->vport_stats_error) {
         /* stats not available from OVS then use netdev stats. */
         *stats = dev_stats;
-    } else {
-        /* Use kernel netdev's packet and byte counts since vport's counters
-         * do not reflect packet counts on the wire when GSO, TSO or GRO are
-         * enabled. */
-        stats->rx_packets = dev_stats.rx_packets;
-        stats->rx_bytes = dev_stats.rx_bytes;
-        stats->tx_packets = dev_stats.tx_packets;
-        stats->tx_bytes = dev_stats.tx_bytes;
-
-        stats->rx_errors           += dev_stats.rx_errors;
-        stats->tx_errors           += dev_stats.tx_errors;
-        stats->rx_dropped          += dev_stats.rx_dropped;
-        stats->tx_dropped          += dev_stats.tx_dropped;
-        stats->multicast           += dev_stats.multicast;
-        stats->collisions          += dev_stats.collisions;
-        stats->rx_length_errors    += dev_stats.rx_length_errors;
-        stats->rx_over_errors      += dev_stats.rx_over_errors;
-        stats->rx_crc_errors       += dev_stats.rx_crc_errors;
-        stats->rx_frame_errors     += dev_stats.rx_frame_errors;
-        stats->rx_fifo_errors      += dev_stats.rx_fifo_errors;
-        stats->rx_missed_errors    += dev_stats.rx_missed_errors;
-        stats->tx_aborted_errors   += dev_stats.tx_aborted_errors;
-        stats->tx_carrier_errors   += dev_stats.tx_carrier_errors;
-        stats->tx_fifo_errors      += dev_stats.tx_fifo_errors;
-        stats->tx_heartbeat_errors += dev_stats.tx_heartbeat_errors;
-        stats->tx_window_errors    += dev_stats.tx_window_errors;
     }
+
     ovs_mutex_unlock(&netdev->mutex);
 
     return error;
-- 
1.8.3.1


More information about the dev mailing list