enetc: Clean up of ehtool stats len
authorClaudiu Manoil <claudiu.manoil@nxp.com>
Tue, 10 Mar 2020 12:51:22 +0000 (14:51 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 10 Mar 2020 22:48:54 +0000 (15:48 -0700)
Refactor the stats len computation code to make it easier
to add new stats counters.

Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c

index 301ee0d..888d45f 100644 (file)
@@ -195,15 +195,21 @@ static const char tx_ring_stats[][ETH_GSTRING_LEN] = {
 static int enetc_get_sset_count(struct net_device *ndev, int sset)
 {
        struct enetc_ndev_priv *priv = netdev_priv(ndev);
+       int len;
+
+       if (sset != ETH_SS_STATS)
+               return -EOPNOTSUPP;
 
-       if (sset == ETH_SS_STATS)
-               return ARRAY_SIZE(enetc_si_counters) +
-                       ARRAY_SIZE(tx_ring_stats) * priv->num_tx_rings +
-                       ARRAY_SIZE(rx_ring_stats) * priv->num_rx_rings +
-                       (enetc_si_is_pf(priv->si) ?
-                       ARRAY_SIZE(enetc_port_counters) : 0);
+       len = ARRAY_SIZE(enetc_si_counters) +
+             ARRAY_SIZE(tx_ring_stats) * priv->num_tx_rings +
+             ARRAY_SIZE(rx_ring_stats) * priv->num_rx_rings;
 
-       return -EOPNOTSUPP;
+       if (!enetc_si_is_pf(priv->si))
+               return len;
+
+       len += ARRAY_SIZE(enetc_port_counters);
+
+       return len;
 }
 
 static void enetc_get_strings(struct net_device *ndev, u32 stringset, u8 *data)