Refactor mana_get_strings() and mana_get_sset_count() from if/else to
switch statements in preparation for adding ethtool private flags
support which requires handling ETH_SS_PRIV_FLAGS.

No functional change.

Signed-off-by: Dipayaan Roy <[email protected]>
---
 .../ethernet/microsoft/mana/mana_ethtool.c    | 75 ++++++++++++-------
 1 file changed, 46 insertions(+), 29 deletions(-)

diff --git a/drivers/net/ethernet/microsoft/mana/mana_ethtool.c 
b/drivers/net/ethernet/microsoft/mana/mana_ethtool.c
index 6a4b42fe0944..a28ca461c135 100644
--- a/drivers/net/ethernet/microsoft/mana/mana_ethtool.c
+++ b/drivers/net/ethernet/microsoft/mana/mana_ethtool.c
@@ -138,53 +138,70 @@ static int mana_get_sset_count(struct net_device *ndev, 
int stringset)
        struct mana_port_context *apc = netdev_priv(ndev);
        unsigned int num_queues = apc->num_queues;
 
-       if (stringset != ETH_SS_STATS)
+       switch (stringset) {
+       case ETH_SS_STATS:
+               return ARRAY_SIZE(mana_eth_stats) +
+                      ARRAY_SIZE(mana_phy_stats) +
+                      ARRAY_SIZE(mana_hc_stats)  +
+                      num_queues * (MANA_STATS_RX_COUNT + MANA_STATS_TX_COUNT);
+       default:
                return -EINVAL;
-
-       return ARRAY_SIZE(mana_eth_stats) + ARRAY_SIZE(mana_phy_stats) + 
ARRAY_SIZE(mana_hc_stats) +
-                       num_queues * (MANA_STATS_RX_COUNT + 
MANA_STATS_TX_COUNT);
+       }
 }
 
-static void mana_get_strings(struct net_device *ndev, u32 stringset, u8 *data)
+static void mana_get_strings_stats(struct mana_port_context *apc, u8 **data)
 {
-       struct mana_port_context *apc = netdev_priv(ndev);
        unsigned int num_queues = apc->num_queues;
        int i, j;
 
-       if (stringset != ETH_SS_STATS)
-               return;
        for (i = 0; i < ARRAY_SIZE(mana_eth_stats); i++)
-               ethtool_puts(&data, mana_eth_stats[i].name);
+               ethtool_puts(data, mana_eth_stats[i].name);
 
        for (i = 0; i < ARRAY_SIZE(mana_hc_stats); i++)
-               ethtool_puts(&data, mana_hc_stats[i].name);
+               ethtool_puts(data, mana_hc_stats[i].name);
 
        for (i = 0; i < ARRAY_SIZE(mana_phy_stats); i++)
-               ethtool_puts(&data, mana_phy_stats[i].name);
+               ethtool_puts(data, mana_phy_stats[i].name);
 
        for (i = 0; i < num_queues; i++) {
-               ethtool_sprintf(&data, "rx_%d_packets", i);
-               ethtool_sprintf(&data, "rx_%d_bytes", i);
-               ethtool_sprintf(&data, "rx_%d_xdp_drop", i);
-               ethtool_sprintf(&data, "rx_%d_xdp_tx", i);
-               ethtool_sprintf(&data, "rx_%d_xdp_redirect", i);
-               ethtool_sprintf(&data, "rx_%d_pkt_len0_err", i);
+               ethtool_sprintf(data, "rx_%d_packets", i);
+               ethtool_sprintf(data, "rx_%d_bytes", i);
+               ethtool_sprintf(data, "rx_%d_xdp_drop", i);
+               ethtool_sprintf(data, "rx_%d_xdp_tx", i);
+               ethtool_sprintf(data, "rx_%d_xdp_redirect", i);
+               ethtool_sprintf(data, "rx_%d_pkt_len0_err", i);
                for (j = 0; j < MANA_RXCOMP_OOB_NUM_PPI - 1; j++)
-                       ethtool_sprintf(&data, "rx_%d_coalesced_cqe_%d", i, j + 
2);
+                       ethtool_sprintf(data,
+                                       "rx_%d_coalesced_cqe_%d",
+                                       i,
+                                       j + 2);
        }
 
        for (i = 0; i < num_queues; i++) {
-               ethtool_sprintf(&data, "tx_%d_packets", i);
-               ethtool_sprintf(&data, "tx_%d_bytes", i);
-               ethtool_sprintf(&data, "tx_%d_xdp_xmit", i);
-               ethtool_sprintf(&data, "tx_%d_tso_packets", i);
-               ethtool_sprintf(&data, "tx_%d_tso_bytes", i);
-               ethtool_sprintf(&data, "tx_%d_tso_inner_packets", i);
-               ethtool_sprintf(&data, "tx_%d_tso_inner_bytes", i);
-               ethtool_sprintf(&data, "tx_%d_long_pkt_fmt", i);
-               ethtool_sprintf(&data, "tx_%d_short_pkt_fmt", i);
-               ethtool_sprintf(&data, "tx_%d_csum_partial", i);
-               ethtool_sprintf(&data, "tx_%d_mana_map_err", i);
+               ethtool_sprintf(data, "tx_%d_packets", i);
+               ethtool_sprintf(data, "tx_%d_bytes", i);
+               ethtool_sprintf(data, "tx_%d_xdp_xmit", i);
+               ethtool_sprintf(data, "tx_%d_tso_packets", i);
+               ethtool_sprintf(data, "tx_%d_tso_bytes", i);
+               ethtool_sprintf(data, "tx_%d_tso_inner_packets", i);
+               ethtool_sprintf(data, "tx_%d_tso_inner_bytes", i);
+               ethtool_sprintf(data, "tx_%d_long_pkt_fmt", i);
+               ethtool_sprintf(data, "tx_%d_short_pkt_fmt", i);
+               ethtool_sprintf(data, "tx_%d_csum_partial", i);
+               ethtool_sprintf(data, "tx_%d_mana_map_err", i);
+       }
+}
+
+static void mana_get_strings(struct net_device *ndev, u32 stringset, u8 *data)
+{
+       struct mana_port_context *apc = netdev_priv(ndev);
+
+       switch (stringset) {
+       case ETH_SS_STATS:
+               mana_get_strings_stats(apc, &data);
+               break;
+       default:
+               break;
        }
 }
 
-- 
2.43.0


Reply via email to