]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: freescale: use ethtool string helpers
authorRosen Penev <rosenp@gmail.com>
Fri, 25 Oct 2024 20:37:57 +0000 (13:37 -0700)
committerJakub Kicinski <kuba@kernel.org>
Fri, 1 Nov 2024 01:34:48 +0000 (18:34 -0700)
The latter is the preferred way to copy ethtool strings.

Avoids manually incrementing the pointer. Cleans up the code quite well.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Lee Trager <lee@trager.us>
Link: https://patch.msgid.link/20241025203757.288367-1-rosenp@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.h
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch-ethtool.c
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c
drivers/net/ethernet/freescale/gianfar_ethtool.c
drivers/net/ethernet/freescale/ucc_geth_ethtool.c

index b0060cf96090e8196896ae5c75530e08d12a85c5..9986f6e1f5877478df87db152e33fa2127e939a6 100644 (file)
@@ -243,38 +243,24 @@ static void dpaa_get_ethtool_stats(struct net_device *net_dev,
 static void dpaa_get_strings(struct net_device *net_dev, u32 stringset,
                             u8 *data)
 {
-       unsigned int i, j, num_cpus, size;
-       char string_cpu[ETH_GSTRING_LEN];
-       u8 *strings;
+       unsigned int i, j, num_cpus;
 
-       memset(string_cpu, 0, sizeof(string_cpu));
-       strings   = data;
-       num_cpus  = num_online_cpus();
-       size      = DPAA_STATS_GLOBAL_LEN * ETH_GSTRING_LEN;
+       num_cpus = num_online_cpus();
 
        for (i = 0; i < DPAA_STATS_PERCPU_LEN; i++) {
-               for (j = 0; j < num_cpus; j++) {
-                       snprintf(string_cpu, ETH_GSTRING_LEN, "%s [CPU %d]",
-                                dpaa_stats_percpu[i], j);
-                       memcpy(strings, string_cpu, ETH_GSTRING_LEN);
-                       strings += ETH_GSTRING_LEN;
-               }
-               snprintf(string_cpu, ETH_GSTRING_LEN, "%s [TOTAL]",
-                        dpaa_stats_percpu[i]);
-               memcpy(strings, string_cpu, ETH_GSTRING_LEN);
-               strings += ETH_GSTRING_LEN;
-       }
-       for (j = 0; j < num_cpus; j++) {
-               snprintf(string_cpu, ETH_GSTRING_LEN,
-                        "bpool [CPU %d]", j);
-               memcpy(strings, string_cpu, ETH_GSTRING_LEN);
-               strings += ETH_GSTRING_LEN;
+               for (j = 0; j < num_cpus; j++)
+                       ethtool_sprintf(&data, "%s [CPU %d]",
+                                       dpaa_stats_percpu[i], j);
+
+               ethtool_sprintf(&data, "%s [TOTAL]", dpaa_stats_percpu[i]);
        }
-       snprintf(string_cpu, ETH_GSTRING_LEN, "bpool [TOTAL]");
-       memcpy(strings, string_cpu, ETH_GSTRING_LEN);
-       strings += ETH_GSTRING_LEN;
+       for (i = 0; i < num_cpus; i++)
+               ethtool_sprintf(&data, "bpool [CPU %d]", i);
+
+       ethtool_puts(&data, "bpool [TOTAL]");
 
-       memcpy(strings, dpaa_stats_global, size);
+       for (i = 0; i < DPAA_STATS_GLOBAL_LEN; i++)
+               ethtool_puts(&data, dpaa_stats_global[i]);
 }
 
 static int dpaa_get_hash_opts(struct net_device *dev,
index 7f476519b7adf8039d4ec7c0b4dadfdb435ff7cf..74ef77cb70780c5f96b302e97be832dd28537940 100644 (file)
@@ -217,20 +217,15 @@ static int dpaa2_eth_set_pauseparam(struct net_device *net_dev,
 static void dpaa2_eth_get_strings(struct net_device *netdev, u32 stringset,
                                  u8 *data)
 {
-       u8 *p = data;
        int i;
 
        switch (stringset) {
        case ETH_SS_STATS:
-               for (i = 0; i < DPAA2_ETH_NUM_STATS; i++) {
-                       strscpy(p, dpaa2_ethtool_stats[i], ETH_GSTRING_LEN);
-                       p += ETH_GSTRING_LEN;
-               }
-               for (i = 0; i < DPAA2_ETH_NUM_EXTRA_STATS; i++) {
-                       strscpy(p, dpaa2_ethtool_extras[i], ETH_GSTRING_LEN);
-                       p += ETH_GSTRING_LEN;
-               }
-               dpaa2_mac_get_strings(p);
+               for (i = 0; i < DPAA2_ETH_NUM_STATS; i++)
+                       ethtool_puts(&data, dpaa2_ethtool_stats[i]);
+               for (i = 0; i < DPAA2_ETH_NUM_EXTRA_STATS; i++)
+                       ethtool_puts(&data, dpaa2_ethtool_extras[i]);
+               dpaa2_mac_get_strings(&data);
                break;
        }
 }
index a69bb22c37eaba5248ab5789a32f1db9e2b41351..422ce13a7c94984b89f8713b4656891a40cc3520 100644 (file)
@@ -558,15 +558,12 @@ int dpaa2_mac_get_sset_count(void)
        return DPAA2_MAC_NUM_STATS;
 }
 
-void dpaa2_mac_get_strings(u8 *data)
+void dpaa2_mac_get_strings(u8 **data)
 {
-       u8 *p = data;
        int i;
 
-       for (i = 0; i < DPAA2_MAC_NUM_STATS; i++) {
-               strscpy(p, dpaa2_mac_ethtool_stats[i], ETH_GSTRING_LEN);
-               p += ETH_GSTRING_LEN;
-       }
+       for (i = 0; i < DPAA2_MAC_NUM_STATS; i++)
+               ethtool_puts(data, dpaa2_mac_ethtool_stats[i]);
 }
 
 void dpaa2_mac_get_ethtool_stats(struct dpaa2_mac *mac, u64 *data)
index c1ec9efd413ac3f50f209ad0a8c63b9c8542c63e..53f8d106d11e1330af21a81492d7ae93a3dd45ed 100644 (file)
@@ -49,7 +49,7 @@ void dpaa2_mac_disconnect(struct dpaa2_mac *mac);
 
 int dpaa2_mac_get_sset_count(void);
 
-void dpaa2_mac_get_strings(u8 *data);
+void dpaa2_mac_get_strings(u8 **data);
 
 void dpaa2_mac_get_ethtool_stats(struct dpaa2_mac *mac, u64 *data);
 
index 6bc1988be31122dbef2e12d41a326c1ab47f6f93..a888f6e6e9b00b2ef24bd8690d4d4d2aecaf26a2 100644 (file)
@@ -170,17 +170,16 @@ dpaa2_switch_ethtool_get_sset_count(struct net_device *netdev, int sset)
 static void dpaa2_switch_ethtool_get_strings(struct net_device *netdev,
                                             u32 stringset, u8 *data)
 {
-       u8 *p = data;
+       const char *str;
        int i;
 
        switch (stringset) {
        case ETH_SS_STATS:
                for (i = 0; i < DPAA2_SWITCH_NUM_COUNTERS; i++) {
-                       memcpy(p, dpaa2_switch_ethtool_counters[i].name,
-                              ETH_GSTRING_LEN);
-                       p += ETH_GSTRING_LEN;
+                       str = dpaa2_switch_ethtool_counters[i].name;
+                       ethtool_puts(&data, str);
                }
-               dpaa2_mac_get_strings(p);
+               dpaa2_mac_get_strings(&data);
                break;
        }
 }
index 2563eb8ac7b63aef67458323b4c3244c289a74e1..e1745b89362decb221a6606f0081eb6b33ba38b6 100644 (file)
@@ -247,38 +247,25 @@ static int enetc_get_sset_count(struct net_device *ndev, int sset)
 static void enetc_get_strings(struct net_device *ndev, u32 stringset, u8 *data)
 {
        struct enetc_ndev_priv *priv = netdev_priv(ndev);
-       u8 *p = data;
        int i, j;
 
        switch (stringset) {
        case ETH_SS_STATS:
-               for (i = 0; i < ARRAY_SIZE(enetc_si_counters); i++) {
-                       strscpy(p, enetc_si_counters[i].name, ETH_GSTRING_LEN);
-                       p += ETH_GSTRING_LEN;
-               }
-               for (i = 0; i < priv->num_tx_rings; i++) {
-                       for (j = 0; j < ARRAY_SIZE(tx_ring_stats); j++) {
-                               snprintf(p, ETH_GSTRING_LEN, tx_ring_stats[j],
-                                        i);
-                               p += ETH_GSTRING_LEN;
-                       }
-               }
-               for (i = 0; i < priv->num_rx_rings; i++) {
-                       for (j = 0; j < ARRAY_SIZE(rx_ring_stats); j++) {
-                               snprintf(p, ETH_GSTRING_LEN, rx_ring_stats[j],
-                                        i);
-                               p += ETH_GSTRING_LEN;
-                       }
-               }
+               for (i = 0; i < ARRAY_SIZE(enetc_si_counters); i++)
+                       ethtool_puts(&data, enetc_si_counters[i].name);
+               for (i = 0; i < priv->num_tx_rings; i++)
+                       for (j = 0; j < ARRAY_SIZE(tx_ring_stats); j++)
+                               ethtool_sprintf(&data, tx_ring_stats[j], i);
+               for (i = 0; i < priv->num_rx_rings; i++)
+                       for (j = 0; j < ARRAY_SIZE(rx_ring_stats); j++)
+                               ethtool_sprintf(&data, rx_ring_stats[j], i);
 
                if (!enetc_si_is_pf(priv->si))
                        break;
 
-               for (i = 0; i < ARRAY_SIZE(enetc_port_counters); i++) {
-                       strscpy(p, enetc_port_counters[i].name,
-                               ETH_GSTRING_LEN);
-                       p += ETH_GSTRING_LEN;
-               }
+               for (i = 0; i < ARRAY_SIZE(enetc_port_counters); i++)
+                       ethtool_puts(&data, enetc_port_counters[i].name);
+
                break;
        }
 }
index a99b95c4bcfbc5976d10d9a08553169a2c236091..781d92e703cb3dc3d93d80ee16ccd29222634b83 100644 (file)
@@ -115,12 +115,14 @@ static const char stat_gstrings[][ETH_GSTRING_LEN] = {
 static void gfar_gstrings(struct net_device *dev, u32 stringset, u8 * buf)
 {
        struct gfar_private *priv = netdev_priv(dev);
+       int i;
 
        if (priv->device_flags & FSL_GIANFAR_DEV_HAS_RMON)
-               memcpy(buf, stat_gstrings, GFAR_STATS_LEN * ETH_GSTRING_LEN);
+               for (i = 0; i < GFAR_STATS_LEN; i++)
+                       ethtool_puts(&buf, stat_gstrings[i]);
        else
-               memcpy(buf, stat_gstrings,
-                      GFAR_EXTRA_STATS_LEN * ETH_GSTRING_LEN);
+               for (i = 0; i < GFAR_EXTRA_STATS_LEN; i++)
+                       ethtool_puts(&buf, stat_gstrings[i]);
 }
 
 /* Fill in an array of 64-bit statistics from various sources.
index 601beb93d3b3bc46e8e0dbb53d745fa6f49aaa96..699f346faf5cd745c1db93783847700a2d7cf5b5 100644 (file)
@@ -287,20 +287,17 @@ static void uec_get_strings(struct net_device *netdev, u32 stringset, u8 *buf)
 {
        struct ucc_geth_private *ugeth = netdev_priv(netdev);
        u32 stats_mode = ugeth->ug_info->statisticsMode;
+       int i;
 
-       if (stats_mode & UCC_GETH_STATISTICS_GATHERING_MODE_HARDWARE) {
-               memcpy(buf, hw_stat_gstrings, UEC_HW_STATS_LEN *
-                               ETH_GSTRING_LEN);
-               buf += UEC_HW_STATS_LEN * ETH_GSTRING_LEN;
-       }
-       if (stats_mode & UCC_GETH_STATISTICS_GATHERING_MODE_FIRMWARE_TX) {
-               memcpy(buf, tx_fw_stat_gstrings, UEC_TX_FW_STATS_LEN *
-                               ETH_GSTRING_LEN);
-               buf += UEC_TX_FW_STATS_LEN * ETH_GSTRING_LEN;
-       }
+       if (stats_mode & UCC_GETH_STATISTICS_GATHERING_MODE_HARDWARE)
+               for (i = 0; i < UEC_HW_STATS_LEN; i++)
+                       ethtool_puts(&buf, hw_stat_gstrings[i]);
+       if (stats_mode & UCC_GETH_STATISTICS_GATHERING_MODE_FIRMWARE_TX)
+               for (i = 0; i < UEC_TX_FW_STATS_LEN; i++)
+                       ethtool_puts(&buf, tx_fw_stat_gstrings[i]);
        if (stats_mode & UCC_GETH_STATISTICS_GATHERING_MODE_FIRMWARE_RX)
-               memcpy(buf, rx_fw_stat_gstrings, UEC_RX_FW_STATS_LEN *
-                               ETH_GSTRING_LEN);
+               for (i = 0; i < UEC_RX_FW_STATS_LEN; i++)
+                       ethtool_puts(&buf, rx_fw_stat_gstrings[i]);
 }
 
 static void uec_get_ethtool_stats(struct net_device *netdev,