mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
net: freescale: use ethtool string helpers
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>
This commit is contained in:
parent
cf44bd08cd
commit
f611cc3892
|
|
@ -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;
|
||||
}
|
||||
snprintf(string_cpu, ETH_GSTRING_LEN, "bpool [TOTAL]");
|
||||
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);
|
||||
|
||||
memcpy(strings, dpaa_stats_global, size);
|
||||
ethtool_sprintf(&data, "%s [TOTAL]", dpaa_stats_percpu[i]);
|
||||
}
|
||||
for (i = 0; i < num_cpus; i++)
|
||||
ethtool_sprintf(&data, "bpool [CPU %d]", i);
|
||||
|
||||
ethtool_puts(&data, "bpool [TOTAL]");
|
||||
|
||||
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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user