]> git.baikalelectronics.ru Git - kernel.git/commitdiff
dpaa2-eth: fix ethtool statistics
authorIoana Ciornei <ioana.ciornei@nxp.com>
Wed, 15 Dec 2021 10:58:31 +0000 (12:58 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 16 Dec 2021 01:48:54 +0000 (17:48 -0800)
Unfortunately, with the blamed commit I also added a side effect in the
ethtool stats shown. Because I added two more fields in the per channel
structure without verifying if its size is used in any way, part of the
ethtool statistics were off by 2.
Fix this by not looking up the size of the structure but instead on a
fixed value kept in a macro.

Fixes: eb2caa7be715 ("net: dpaa2: add adaptive interrupt coalescing")
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Link: https://lore.kernel.org/r/20211215105831.290070-1-ioana.ciornei@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c

index 2085844227fe535d190df8ec73d52975638367d2..e54e70ebdd059fa1a4ed98af2721b4f726d865af 100644 (file)
@@ -388,6 +388,8 @@ struct dpaa2_eth_ch_stats {
        __u64 bytes_per_cdan;
 };
 
+#define DPAA2_ETH_CH_STATS     7
+
 /* Maximum number of queues associated with a DPNI */
 #define DPAA2_ETH_MAX_TCS              8
 #define DPAA2_ETH_MAX_RX_QUEUES_PER_TC 16
index adb8ce5306ee84240f6b8b637d1dcd64d8694d61..3fdbf87dccb1ea5abb0841d6c4d452e673c10b01 100644 (file)
@@ -278,7 +278,7 @@ static void dpaa2_eth_get_ethtool_stats(struct net_device *net_dev,
        /* Per-channel stats */
        for (k = 0; k < priv->num_channels; k++) {
                ch_stats = &priv->channel[k]->stats;
-               for (j = 0; j < sizeof(*ch_stats) / sizeof(__u64) - 1; j++)
+               for (j = 0; j < DPAA2_ETH_CH_STATS; j++)
                        *((__u64 *)data + i + j) += *((__u64 *)ch_stats + j);
        }
        i += j;