intel: Update drivers to use ethtool_sprintf
authorAlexander Duyck <alexanderduyck@fb.com>
Wed, 17 Mar 2021 00:30:44 +0000 (17:30 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Mar 2021 18:42:30 +0000 (11:42 -0700)
Update the Intel drivers to make use of ethtool_sprintf. The general idea
is to reduce code size and overhead by replacing the repeated pattern of
string printf statements and ETH_STRING_LEN counter increments.

Signed-off-by: Alexander Duyck <alexanderduyck@fb.com>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/i40e/i40e_ethtool.c
drivers/net/ethernet/intel/ice/ice_ethtool.c
drivers/net/ethernet/intel/igb/igb_ethtool.c
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c

index c70dec6..3c9054e 100644 (file)
@@ -2368,21 +2368,15 @@ static void i40e_get_priv_flag_strings(struct net_device *netdev, u8 *data)
        struct i40e_netdev_priv *np = netdev_priv(netdev);
        struct i40e_vsi *vsi = np->vsi;
        struct i40e_pf *pf = vsi->back;
-       char *p = (char *)data;
        unsigned int i;
+       u8 *p = data;
 
-       for (i = 0; i < I40E_PRIV_FLAGS_STR_LEN; i++) {
-               snprintf(p, ETH_GSTRING_LEN, "%s",
-                        i40e_gstrings_priv_flags[i].flag_string);
-               p += ETH_GSTRING_LEN;
-       }
+       for (i = 0; i < I40E_PRIV_FLAGS_STR_LEN; i++)
+               ethtool_sprintf(&p, i40e_gstrings_priv_flags[i].flag_string);
        if (pf->hw.pf_id != 0)
                return;
-       for (i = 0; i < I40E_GL_PRIV_FLAGS_STR_LEN; i++) {
-               snprintf(p, ETH_GSTRING_LEN, "%s",
-                        i40e_gl_gstrings_priv_flags[i].flag_string);
-               p += ETH_GSTRING_LEN;
-       }
+       for (i = 0; i < I40E_GL_PRIV_FLAGS_STR_LEN; i++)
+               ethtool_sprintf(&p, i40e_gl_gstrings_priv_flags[i].flag_string);
 }
 
 static void i40e_get_strings(struct net_device *netdev, u32 stringset,
index 2dcfa68..4f73842 100644 (file)
@@ -871,68 +871,47 @@ static void ice_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
 {
        struct ice_netdev_priv *np = netdev_priv(netdev);
        struct ice_vsi *vsi = np->vsi;
-       char *p = (char *)data;
        unsigned int i;
+       u8 *p = data;
 
        switch (stringset) {
        case ETH_SS_STATS:
-               for (i = 0; i < ICE_VSI_STATS_LEN; i++) {
-                       snprintf(p, ETH_GSTRING_LEN, "%s",
-                                ice_gstrings_vsi_stats[i].stat_string);
-                       p += ETH_GSTRING_LEN;
-               }
+               for (i = 0; i < ICE_VSI_STATS_LEN; i++)
+                       ethtool_sprintf(&p,
+                                       ice_gstrings_vsi_stats[i].stat_string);
 
                ice_for_each_alloc_txq(vsi, i) {
-                       snprintf(p, ETH_GSTRING_LEN,
-                                "tx_queue_%u_packets", i);
-                       p += ETH_GSTRING_LEN;
-                       snprintf(p, ETH_GSTRING_LEN, "tx_queue_%u_bytes", i);
-                       p += ETH_GSTRING_LEN;
+                       ethtool_sprintf(&p, "tx_queue_%u_packets", i);
+                       ethtool_sprintf(&p, "tx_queue_%u_bytes", i);
                }
 
                ice_for_each_alloc_rxq(vsi, i) {
-                       snprintf(p, ETH_GSTRING_LEN,
-                                "rx_queue_%u_packets", i);
-                       p += ETH_GSTRING_LEN;
-                       snprintf(p, ETH_GSTRING_LEN, "rx_queue_%u_bytes", i);
-                       p += ETH_GSTRING_LEN;
+                       ethtool_sprintf(&p, "rx_queue_%u_packets", i);
+                       ethtool_sprintf(&p, "rx_queue_%u_bytes", i);
                }
 
                if (vsi->type != ICE_VSI_PF)
                        return;
 
-               for (i = 0; i < ICE_PF_STATS_LEN; i++) {
-                       snprintf(p, ETH_GSTRING_LEN, "%s",
-                                ice_gstrings_pf_stats[i].stat_string);
-                       p += ETH_GSTRING_LEN;
-               }
+               for (i = 0; i < ICE_PF_STATS_LEN; i++)
+                       ethtool_sprintf(&p,
+                                       ice_gstrings_pf_stats[i].stat_string);
 
                for (i = 0; i < ICE_MAX_USER_PRIORITY; i++) {
-                       snprintf(p, ETH_GSTRING_LEN,
-                                "tx_priority_%u_xon.nic", i);
-                       p += ETH_GSTRING_LEN;
-                       snprintf(p, ETH_GSTRING_LEN,
-                                "tx_priority_%u_xoff.nic", i);
-                       p += ETH_GSTRING_LEN;
+                       ethtool_sprintf(&p, "tx_priority_%u_xon.nic", i);
+                       ethtool_sprintf(&p, "tx_priority_%u_xoff.nic", i);
                }
                for (i = 0; i < ICE_MAX_USER_PRIORITY; i++) {
-                       snprintf(p, ETH_GSTRING_LEN,
-                                "rx_priority_%u_xon.nic", i);
-                       p += ETH_GSTRING_LEN;
-                       snprintf(p, ETH_GSTRING_LEN,
-                                "rx_priority_%u_xoff.nic", i);
-                       p += ETH_GSTRING_LEN;
+                       ethtool_sprintf(&p, "rx_priority_%u_xon.nic", i);
+                       ethtool_sprintf(&p, "rx_priority_%u_xoff.nic", i);
                }
                break;
        case ETH_SS_TEST:
                memcpy(data, ice_gstrings_test, ICE_TEST_LEN * ETH_GSTRING_LEN);
                break;
        case ETH_SS_PRIV_FLAGS:
-               for (i = 0; i < ICE_PRIV_FLAG_ARRAY_SIZE; i++) {
-                       snprintf(p, ETH_GSTRING_LEN, "%s",
-                                ice_gstrings_priv_flags[i].name);
-                       p += ETH_GSTRING_LEN;
-               }
+               for (i = 0; i < ICE_PRIV_FLAG_ARRAY_SIZE; i++)
+                       ethtool_sprintf(&p, ice_gstrings_priv_flags[i].name);
                break;
        default:
                break;
index 28baf20..4ab9f46 100644 (file)
@@ -2347,35 +2347,23 @@ static void igb_get_strings(struct net_device *netdev, u32 stringset, u8 *data)
                        IGB_TEST_LEN*ETH_GSTRING_LEN);
                break;
        case ETH_SS_STATS:
-               for (i = 0; i < IGB_GLOBAL_STATS_LEN; i++) {
-                       memcpy(p, igb_gstrings_stats[i].stat_string,
-                              ETH_GSTRING_LEN);
-                       p += ETH_GSTRING_LEN;
-               }
-               for (i = 0; i < IGB_NETDEV_STATS_LEN; i++) {
-                       memcpy(p, igb_gstrings_net_stats[i].stat_string,
-                              ETH_GSTRING_LEN);
-                       p += ETH_GSTRING_LEN;
-               }
+               for (i = 0; i < IGB_GLOBAL_STATS_LEN; i++)
+                       ethtool_sprintf(&p,
+                                       igb_gstrings_stats[i].stat_string);
+               for (i = 0; i < IGB_NETDEV_STATS_LEN; i++)
+                       ethtool_sprintf(&p,
+                                       igb_gstrings_net_stats[i].stat_string);
                for (i = 0; i < adapter->num_tx_queues; i++) {
-                       sprintf(p, "tx_queue_%u_packets", i);
-                       p += ETH_GSTRING_LEN;
-                       sprintf(p, "tx_queue_%u_bytes", i);
-                       p += ETH_GSTRING_LEN;
-                       sprintf(p, "tx_queue_%u_restart", i);
-                       p += ETH_GSTRING_LEN;
+                       ethtool_sprintf(&p, "tx_queue_%u_packets", i);
+                       ethtool_sprintf(&p, "tx_queue_%u_bytes", i);
+                       ethtool_sprintf(&p, "tx_queue_%u_restart", i);
                }
                for (i = 0; i < adapter->num_rx_queues; i++) {
-                       sprintf(p, "rx_queue_%u_packets", i);
-                       p += ETH_GSTRING_LEN;
-                       sprintf(p, "rx_queue_%u_bytes", i);
-                       p += ETH_GSTRING_LEN;
-                       sprintf(p, "rx_queue_%u_drops", i);
-                       p += ETH_GSTRING_LEN;
-                       sprintf(p, "rx_queue_%u_csum_err", i);
-                       p += ETH_GSTRING_LEN;
-                       sprintf(p, "rx_queue_%u_alloc_failed", i);
-                       p += ETH_GSTRING_LEN;
+                       ethtool_sprintf(&p, "rx_queue_%u_packets", i);
+                       ethtool_sprintf(&p, "rx_queue_%u_bytes", i);
+                       ethtool_sprintf(&p, "rx_queue_%u_drops", i);
+                       ethtool_sprintf(&p, "rx_queue_%u_csum_err", i);
+                       ethtool_sprintf(&p, "rx_queue_%u_alloc_failed", i);
                }
                /* BUG_ON(p - data != IGB_STATS_LEN * ETH_GSTRING_LEN); */
                break;
index a280aa3..4ceaca0 100644 (file)
@@ -1368,45 +1368,33 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
 static void ixgbe_get_strings(struct net_device *netdev, u32 stringset,
                              u8 *data)
 {
-       char *p = (char *)data;
        unsigned int i;
+       u8 *p = data;
 
        switch (stringset) {
        case ETH_SS_TEST:
-               for (i = 0; i < IXGBE_TEST_LEN; i++) {
-                       memcpy(data, ixgbe_gstrings_test[i], ETH_GSTRING_LEN);
-                       data += ETH_GSTRING_LEN;
-               }
+               for (i = 0; i < IXGBE_TEST_LEN; i++)
+                       ethtool_sprintf(&p, ixgbe_gstrings_test[i]);
                break;
        case ETH_SS_STATS:
-               for (i = 0; i < IXGBE_GLOBAL_STATS_LEN; i++) {
-                       memcpy(p, ixgbe_gstrings_stats[i].stat_string,
-                              ETH_GSTRING_LEN);
-                       p += ETH_GSTRING_LEN;
-               }
+               for (i = 0; i < IXGBE_GLOBAL_STATS_LEN; i++)
+                       ethtool_sprintf(&p,
+                                       ixgbe_gstrings_stats[i].stat_string);
                for (i = 0; i < netdev->num_tx_queues; i++) {
-                       sprintf(p, "tx_queue_%u_packets", i);
-                       p += ETH_GSTRING_LEN;
-                       sprintf(p, "tx_queue_%u_bytes", i);
-                       p += ETH_GSTRING_LEN;
+                       ethtool_sprintf(&p, "tx_queue_%u_packets", i);
+                       ethtool_sprintf(&p, "tx_queue_%u_bytes", i);
                }
                for (i = 0; i < IXGBE_NUM_RX_QUEUES; i++) {
-                       sprintf(p, "rx_queue_%u_packets", i);
-                       p += ETH_GSTRING_LEN;
-                       sprintf(p, "rx_queue_%u_bytes", i);
-                       p += ETH_GSTRING_LEN;
+                       ethtool_sprintf(&p, "rx_queue_%u_packets", i);
+                       ethtool_sprintf(&p, "rx_queue_%u_bytes", i);
                }
                for (i = 0; i < IXGBE_MAX_PACKET_BUFFERS; i++) {
-                       sprintf(p, "tx_pb_%u_pxon", i);
-                       p += ETH_GSTRING_LEN;
-                       sprintf(p, "tx_pb_%u_pxoff", i);
-                       p += ETH_GSTRING_LEN;
+                       ethtool_sprintf(&p, "tx_pb_%u_pxon", i);
+                       ethtool_sprintf(&p, "tx_pb_%u_pxoff", i);
                }
                for (i = 0; i < IXGBE_MAX_PACKET_BUFFERS; i++) {
-                       sprintf(p, "rx_pb_%u_pxon", i);
-                       p += ETH_GSTRING_LEN;
-                       sprintf(p, "rx_pb_%u_pxoff", i);
-                       p += ETH_GSTRING_LEN;
+                       ethtool_sprintf(&p, "rx_pb_%u_pxon", i);
+                       ethtool_sprintf(&p, "rx_pb_%u_pxoff", i);
                }
                /* BUG_ON(p - data != IXGBE_STATS_LEN * ETH_GSTRING_LEN); */
                break;