]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: marvell: use ethtool string helpers
authorRosen Penev <rosenp@gmail.com>
Thu, 24 Oct 2024 19:58:33 +0000 (12:58 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 29 Oct 2024 23:21:37 +0000 (16:21 -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: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20241024195833.176843-1-rosenp@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
drivers/net/ethernet/marvell/octeon_ep/octep_ethtool.c
drivers/net/ethernet/marvell/octeon_ep_vf/octep_vf_ethtool.c
drivers/net/ethernet/marvell/octeontx2/nic/otx2_ethtool.c
drivers/net/ethernet/marvell/skge.c
drivers/net/ethernet/marvell/sky2.c

index 103632ba78a26e224b150c8b97630cef472ca6ae..571631a3032024f5f34f0d09d36ff76a0ae0e8c7 100644 (file)
@@ -1985,45 +1985,32 @@ static void mvpp2_ethtool_get_strings(struct net_device *netdev, u32 sset,
                                      u8 *data)
 {
        struct mvpp2_port *port = netdev_priv(netdev);
+       const char *str;
        int i, q;
 
        if (sset != ETH_SS_STATS)
                return;
 
-       for (i = 0; i < ARRAY_SIZE(mvpp2_ethtool_mib_regs); i++) {
-               strscpy(data, mvpp2_ethtool_mib_regs[i].string,
-                       ETH_GSTRING_LEN);
-               data += ETH_GSTRING_LEN;
-       }
+       for (i = 0; i < ARRAY_SIZE(mvpp2_ethtool_mib_regs); i++)
+               ethtool_puts(&data, mvpp2_ethtool_mib_regs[i].string);
 
-       for (i = 0; i < ARRAY_SIZE(mvpp2_ethtool_port_regs); i++) {
-               strscpy(data, mvpp2_ethtool_port_regs[i].string,
-                       ETH_GSTRING_LEN);
-               data += ETH_GSTRING_LEN;
-       }
+       for (i = 0; i < ARRAY_SIZE(mvpp2_ethtool_port_regs); i++)
+               ethtool_puts(&data, mvpp2_ethtool_port_regs[i].string);
 
-       for (q = 0; q < port->ntxqs; q++) {
+       for (q = 0; q < port->ntxqs; q++)
                for (i = 0; i < ARRAY_SIZE(mvpp2_ethtool_txq_regs); i++) {
-                       snprintf(data, ETH_GSTRING_LEN,
-                                mvpp2_ethtool_txq_regs[i].string, q);
-                       data += ETH_GSTRING_LEN;
+                       str = mvpp2_ethtool_txq_regs[i].string;
+                       ethtool_sprintf(&data, str, q);
                }
-       }
 
-       for (q = 0; q < port->nrxqs; q++) {
+       for (q = 0; q < port->nrxqs; q++)
                for (i = 0; i < ARRAY_SIZE(mvpp2_ethtool_rxq_regs); i++) {
-                       snprintf(data, ETH_GSTRING_LEN,
-                                mvpp2_ethtool_rxq_regs[i].string,
-                                q);
-                       data += ETH_GSTRING_LEN;
+                       str = mvpp2_ethtool_rxq_regs[i].string;
+                       ethtool_sprintf(&data, str, q);
                }
-       }
 
-       for (i = 0; i < ARRAY_SIZE(mvpp2_ethtool_xdp); i++) {
-               strscpy(data, mvpp2_ethtool_xdp[i].string,
-                       ETH_GSTRING_LEN);
-               data += ETH_GSTRING_LEN;
-       }
+       for (i = 0; i < ARRAY_SIZE(mvpp2_ethtool_xdp); i++)
+               ethtool_puts(&data, mvpp2_ethtool_xdp[i].string);
 }
 
 static void
index 7d0124b283dacee4e24849e44eb7e20bd15c548a..4f4d5818911885b6b9f47c9e1a0c10ee734f5ac1 100644 (file)
@@ -47,7 +47,7 @@ static const char octep_gstrings_global_stats[][ETH_GSTRING_LEN] = {
        "rx_err_pkts",
 };
 
-#define OCTEP_GLOBAL_STATS_CNT (sizeof(octep_gstrings_global_stats) / ETH_GSTRING_LEN)
+#define OCTEP_GLOBAL_STATS_CNT ARRAY_SIZE(octep_gstrings_global_stats)
 
 static const char octep_gstrings_tx_q_stats[][ETH_GSTRING_LEN] = {
        "tx_packets_posted[Q-%u]",
@@ -56,7 +56,7 @@ static const char octep_gstrings_tx_q_stats[][ETH_GSTRING_LEN] = {
        "tx_busy[Q-%u]",
 };
 
-#define OCTEP_TX_Q_STATS_CNT (sizeof(octep_gstrings_tx_q_stats) / ETH_GSTRING_LEN)
+#define OCTEP_TX_Q_STATS_CNT ARRAY_SIZE(octep_gstrings_tx_q_stats)
 
 static const char octep_gstrings_rx_q_stats[][ETH_GSTRING_LEN] = {
        "rx_packets[Q-%u]",
@@ -64,7 +64,7 @@ static const char octep_gstrings_rx_q_stats[][ETH_GSTRING_LEN] = {
        "rx_alloc_errors[Q-%u]",
 };
 
-#define OCTEP_RX_Q_STATS_CNT (sizeof(octep_gstrings_rx_q_stats) / ETH_GSTRING_LEN)
+#define OCTEP_RX_Q_STATS_CNT ARRAY_SIZE(octep_gstrings_rx_q_stats)
 
 static void octep_get_drvinfo(struct net_device *netdev,
                              struct ethtool_drvinfo *info)
@@ -80,32 +80,25 @@ static void octep_get_strings(struct net_device *netdev,
 {
        struct octep_device *oct = netdev_priv(netdev);
        u16 num_queues = CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf);
-       char *strings = (char *)data;
+       const char *str;
        int i, j;
 
        switch (stringset) {
        case ETH_SS_STATS:
-               for (i = 0; i < OCTEP_GLOBAL_STATS_CNT; i++) {
-                       snprintf(strings, ETH_GSTRING_LEN,
-                                octep_gstrings_global_stats[i]);
-                       strings += ETH_GSTRING_LEN;
-               }
+               for (i = 0; i < OCTEP_GLOBAL_STATS_CNT; i++)
+                       ethtool_puts(&data, octep_gstrings_global_stats[i]);
 
-               for (i = 0; i < num_queues; i++) {
+               for (i = 0; i < num_queues; i++)
                        for (j = 0; j < OCTEP_TX_Q_STATS_CNT; j++) {
-                               snprintf(strings, ETH_GSTRING_LEN,
-                                        octep_gstrings_tx_q_stats[j], i);
-                               strings += ETH_GSTRING_LEN;
+                               str = octep_gstrings_tx_q_stats[j];
+                               ethtool_sprintf(&data, str, i);
                        }
-               }
 
-               for (i = 0; i < num_queues; i++) {
+               for (i = 0; i < num_queues; i++)
                        for (j = 0; j < OCTEP_RX_Q_STATS_CNT; j++) {
-                               snprintf(strings, ETH_GSTRING_LEN,
-                                        octep_gstrings_rx_q_stats[j], i);
-                               strings += ETH_GSTRING_LEN;
+                               str = octep_gstrings_rx_q_stats[j];
+                               ethtool_sprintf(&data, str, i);
                        }
-               }
                break;
        default:
                break;
index a1979b45e355c6fc1fc5cca2cc96b87427c81099..7b21439a315f2bbd3b48ec8ead843340ec15de82 100644 (file)
@@ -25,7 +25,7 @@ static const char octep_vf_gstrings_global_stats[][ETH_GSTRING_LEN] = {
        "rx_dropped_bytes_fifo_full",
 };
 
-#define OCTEP_VF_GLOBAL_STATS_CNT (sizeof(octep_vf_gstrings_global_stats) / ETH_GSTRING_LEN)
+#define OCTEP_VF_GLOBAL_STATS_CNT ARRAY_SIZE(octep_vf_gstrings_global_stats)
 
 static const char octep_vf_gstrings_tx_q_stats[][ETH_GSTRING_LEN] = {
        "tx_packets_posted[Q-%u]",
@@ -34,7 +34,7 @@ static const char octep_vf_gstrings_tx_q_stats[][ETH_GSTRING_LEN] = {
        "tx_busy[Q-%u]",
 };
 
-#define OCTEP_VF_TX_Q_STATS_CNT (sizeof(octep_vf_gstrings_tx_q_stats) / ETH_GSTRING_LEN)
+#define OCTEP_VF_TX_Q_STATS_CNT ARRAY_SIZE(octep_vf_gstrings_tx_q_stats)
 
 static const char octep_vf_gstrings_rx_q_stats[][ETH_GSTRING_LEN] = {
        "rx_packets[Q-%u]",
@@ -42,7 +42,7 @@ static const char octep_vf_gstrings_rx_q_stats[][ETH_GSTRING_LEN] = {
        "rx_alloc_errors[Q-%u]",
 };
 
-#define OCTEP_VF_RX_Q_STATS_CNT (sizeof(octep_vf_gstrings_rx_q_stats) / ETH_GSTRING_LEN)
+#define OCTEP_VF_RX_Q_STATS_CNT ARRAY_SIZE(octep_vf_gstrings_rx_q_stats)
 
 static void octep_vf_get_drvinfo(struct net_device *netdev,
                                 struct ethtool_drvinfo *info)
@@ -58,32 +58,25 @@ static void octep_vf_get_strings(struct net_device *netdev,
 {
        struct octep_vf_device *oct = netdev_priv(netdev);
        u16 num_queues = CFG_GET_PORTS_ACTIVE_IO_RINGS(oct->conf);
-       char *strings = (char *)data;
+       const char *str;
        int i, j;
 
        switch (stringset) {
        case ETH_SS_STATS:
-               for (i = 0; i < OCTEP_VF_GLOBAL_STATS_CNT; i++) {
-                       snprintf(strings, ETH_GSTRING_LEN,
-                                octep_vf_gstrings_global_stats[i]);
-                       strings += ETH_GSTRING_LEN;
-               }
+               for (i = 0; i < OCTEP_VF_GLOBAL_STATS_CNT; i++)
+                       ethtool_puts(&data, octep_vf_gstrings_global_stats[i]);
 
-               for (i = 0; i < num_queues; i++) {
+               for (i = 0; i < num_queues; i++)
                        for (j = 0; j < OCTEP_VF_TX_Q_STATS_CNT; j++) {
-                               snprintf(strings, ETH_GSTRING_LEN,
-                                        octep_vf_gstrings_tx_q_stats[j], i);
-                               strings += ETH_GSTRING_LEN;
+                               str = octep_vf_gstrings_tx_q_stats[j];
+                               ethtool_sprintf(&data, str, i);
                        }
-               }
 
-               for (i = 0; i < num_queues; i++) {
+               for (i = 0; i < num_queues; i++)
                        for (j = 0; j < OCTEP_VF_RX_Q_STATS_CNT; j++) {
-                               snprintf(strings, ETH_GSTRING_LEN,
-                                        octep_vf_gstrings_rx_q_stats[j], i);
-                               strings += ETH_GSTRING_LEN;
+                               str = octep_vf_gstrings_rx_q_stats[j];
+                               ethtool_sprintf(&data, str, i);
                        }
-               }
                break;
        default:
                break;
index 5197ce816581e3cf503e4b671fb81c067a98adc3..2d53dc77ef1eff42e2d368cb4e874bc2ee9b17eb 100644 (file)
@@ -85,26 +85,22 @@ static void otx2_get_qset_strings(struct otx2_nic *pfvf, u8 **data, int qset)
        int start_qidx = qset * pfvf->hw.rx_queues;
        int qidx, stats;
 
-       for (qidx = 0; qidx < pfvf->hw.rx_queues; qidx++) {
-               for (stats = 0; stats < otx2_n_queue_stats; stats++) {
-                       sprintf(*data, "rxq%d: %s", qidx + start_qidx,
-                               otx2_queue_stats[stats].name);
-                       *data += ETH_GSTRING_LEN;
-               }
-       }
+       for (qidx = 0; qidx < pfvf->hw.rx_queues; qidx++)
+               for (stats = 0; stats < otx2_n_queue_stats; stats++)
+                       ethtool_sprintf(data, "rxq%d: %s", qidx + start_qidx,
+                                       otx2_queue_stats[stats].name);
 
-       for (qidx = 0; qidx < otx2_get_total_tx_queues(pfvf); qidx++) {
-               for (stats = 0; stats < otx2_n_queue_stats; stats++) {
+       for (qidx = 0; qidx < otx2_get_total_tx_queues(pfvf); qidx++)
+               for (stats = 0; stats < otx2_n_queue_stats; stats++)
                        if (qidx >= pfvf->hw.non_qos_queues)
-                               sprintf(*data, "txq_qos%d: %s",
-                                       qidx + start_qidx - pfvf->hw.non_qos_queues,
-                                       otx2_queue_stats[stats].name);
+                               ethtool_sprintf(data, "txq_qos%d: %s",
+                                               qidx + start_qidx -
+                                                       pfvf->hw.non_qos_queues,
+                                               otx2_queue_stats[stats].name);
                        else
-                               sprintf(*data, "txq%d: %s", qidx + start_qidx,
-                                       otx2_queue_stats[stats].name);
-                       *data += ETH_GSTRING_LEN;
-               }
-       }
+                               ethtool_sprintf(data, "txq%d: %s",
+                                               qidx + start_qidx,
+                                               otx2_queue_stats[stats].name);
 }
 
 static void otx2_get_strings(struct net_device *netdev, u32 sset, u8 *data)
@@ -115,36 +111,25 @@ static void otx2_get_strings(struct net_device *netdev, u32 sset, u8 *data)
        if (sset != ETH_SS_STATS)
                return;
 
-       for (stats = 0; stats < otx2_n_dev_stats; stats++) {
-               memcpy(data, otx2_dev_stats[stats].name, ETH_GSTRING_LEN);
-               data += ETH_GSTRING_LEN;
-       }
+       for (stats = 0; stats < otx2_n_dev_stats; stats++)
+               ethtool_puts(&data, otx2_dev_stats[stats].name);
 
-       for (stats = 0; stats < otx2_n_drv_stats; stats++) {
-               memcpy(data, otx2_drv_stats[stats].name, ETH_GSTRING_LEN);
-               data += ETH_GSTRING_LEN;
-       }
+       for (stats = 0; stats < otx2_n_drv_stats; stats++)
+               ethtool_puts(&data, otx2_drv_stats[stats].name);
 
        otx2_get_qset_strings(pfvf, &data, 0);
 
        if (!test_bit(CN10K_RPM, &pfvf->hw.cap_flag)) {
-               for (stats = 0; stats < CGX_RX_STATS_COUNT; stats++) {
-                       sprintf(data, "cgx_rxstat%d: ", stats);
-                       data += ETH_GSTRING_LEN;
-               }
+               for (stats = 0; stats < CGX_RX_STATS_COUNT; stats++)
+                       ethtool_sprintf(&data, "cgx_rxstat%d: ", stats);
 
-               for (stats = 0; stats < CGX_TX_STATS_COUNT; stats++) {
-                       sprintf(data, "cgx_txstat%d: ", stats);
-                       data += ETH_GSTRING_LEN;
-               }
+               for (stats = 0; stats < CGX_TX_STATS_COUNT; stats++)
+                       ethtool_sprintf(&data, "cgx_txstat%d: ", stats);
        }
 
-       strcpy(data, "reset_count");
-       data += ETH_GSTRING_LEN;
-       sprintf(data, "Fec Corrected Errors: ");
-       data += ETH_GSTRING_LEN;
-       sprintf(data, "Fec Uncorrected Errors: ");
-       data += ETH_GSTRING_LEN;
+       ethtool_puts(&data, "reset_count");
+       ethtool_puts(&data, "Fec Corrected Errors: ");
+       ethtool_puts(&data, "Fec Uncorrected Errors: ");
 }
 
 static void otx2_get_qset_stats(struct otx2_nic *pfvf,
@@ -1375,20 +1360,15 @@ static void otx2vf_get_strings(struct net_device *netdev, u32 sset, u8 *data)
        if (sset != ETH_SS_STATS)
                return;
 
-       for (stats = 0; stats < otx2_n_dev_stats; stats++) {
-               memcpy(data, otx2_dev_stats[stats].name, ETH_GSTRING_LEN);
-               data += ETH_GSTRING_LEN;
-       }
+       for (stats = 0; stats < otx2_n_dev_stats; stats++)
+               ethtool_puts(&data, otx2_dev_stats[stats].name);
 
-       for (stats = 0; stats < otx2_n_drv_stats; stats++) {
-               memcpy(data, otx2_drv_stats[stats].name, ETH_GSTRING_LEN);
-               data += ETH_GSTRING_LEN;
-       }
+       for (stats = 0; stats < otx2_n_drv_stats; stats++)
+               ethtool_puts(&data, otx2_drv_stats[stats].name);
 
        otx2_get_qset_strings(vf, &data, 0);
 
-       strcpy(data, "reset_count");
-       data += ETH_GSTRING_LEN;
+       ethtool_puts(&data, "reset_count");
 }
 
 static void otx2vf_get_ethtool_stats(struct net_device *netdev,
index fcfb34561882b0804206504cc03619228b5ffa20..25bf6ec4428964a485cbae3d856097cb19e83d44 100644 (file)
@@ -484,8 +484,7 @@ static void skge_get_strings(struct net_device *dev, u32 stringset, u8 *data)
        switch (stringset) {
        case ETH_SS_STATS:
                for (i = 0; i < ARRAY_SIZE(skge_stats); i++)
-                       memcpy(data + i * ETH_GSTRING_LEN,
-                              skge_stats[i].name, ETH_GSTRING_LEN);
+                       ethtool_puts(&data, skge_stats[i].name);
                break;
        }
 }
index a7a16eac189134e3822c346b7bb741096f8945ae..3914cd9210d49aa9c15b2b192dd54a2722feeb92 100644 (file)
@@ -3800,8 +3800,7 @@ static void sky2_get_strings(struct net_device *dev, u32 stringset, u8 * data)
        switch (stringset) {
        case ETH_SS_STATS:
                for (i = 0; i < ARRAY_SIZE(sky2_stats); i++)
-                       memcpy(data + i * ETH_GSTRING_LEN,
-                              sky2_stats[i].name, ETH_GSTRING_LEN);
+                       ethtool_puts(&data, sky2_stats[i].name);
                break;
        }
 }