mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:38:03 +00:00
net: marvell: 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: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20241024195833.176843-1-rosenp@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
77693e6c14
commit
2d7dfe2d0b
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user