mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 13:23:35 -04:00
net: bnxt: use ethtool string helpers
Avoids having to use manual pointer manipulation. Signed-off-by: Rosen Penev <rosenp@gmail.com> Reviewed-by: Michael Chan <michael.chan@broadcom.com> Link: https://patch.msgid.link/20241029233229.9385-1-rosenp@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
1441df3a37
commit
9b4b2e02c1
@@ -705,112 +705,105 @@ static void bnxt_get_ethtool_stats(struct net_device *dev,
|
||||
static void bnxt_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
|
||||
{
|
||||
struct bnxt *bp = netdev_priv(dev);
|
||||
static const char * const *str;
|
||||
u32 i, j, num_str;
|
||||
const char *str;
|
||||
|
||||
switch (stringset) {
|
||||
case ETH_SS_STATS:
|
||||
for (i = 0; i < bp->cp_nr_rings; i++) {
|
||||
if (is_rx_ring(bp, i)) {
|
||||
num_str = NUM_RING_RX_HW_STATS;
|
||||
for (j = 0; j < num_str; j++) {
|
||||
sprintf(buf, "[%d]: %s", i,
|
||||
bnxt_ring_rx_stats_str[j]);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
if (is_rx_ring(bp, i))
|
||||
for (j = 0; j < NUM_RING_RX_HW_STATS; j++) {
|
||||
str = bnxt_ring_rx_stats_str[j];
|
||||
ethtool_sprintf(&buf, "[%d]: %s", i,
|
||||
str);
|
||||
}
|
||||
}
|
||||
if (is_tx_ring(bp, i)) {
|
||||
num_str = NUM_RING_TX_HW_STATS;
|
||||
for (j = 0; j < num_str; j++) {
|
||||
sprintf(buf, "[%d]: %s", i,
|
||||
bnxt_ring_tx_stats_str[j]);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
if (is_tx_ring(bp, i))
|
||||
for (j = 0; j < NUM_RING_TX_HW_STATS; j++) {
|
||||
str = bnxt_ring_tx_stats_str[j];
|
||||
ethtool_sprintf(&buf, "[%d]: %s", i,
|
||||
str);
|
||||
}
|
||||
}
|
||||
num_str = bnxt_get_num_tpa_ring_stats(bp);
|
||||
if (!num_str || !is_rx_ring(bp, i))
|
||||
goto skip_tpa_stats;
|
||||
|
||||
if (bp->max_tpa_v2)
|
||||
str = bnxt_ring_tpa2_stats_str;
|
||||
else
|
||||
str = bnxt_ring_tpa_stats_str;
|
||||
|
||||
for (j = 0; j < num_str; j++) {
|
||||
sprintf(buf, "[%d]: %s", i, str[j]);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
}
|
||||
skip_tpa_stats:
|
||||
if (is_rx_ring(bp, i)) {
|
||||
num_str = NUM_RING_RX_SW_STATS;
|
||||
for (j = 0; j < num_str; j++) {
|
||||
sprintf(buf, "[%d]: %s", i,
|
||||
bnxt_rx_sw_stats_str[j]);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
str = bnxt_ring_tpa2_stats_str[j];
|
||||
ethtool_sprintf(&buf, "[%d]: %s", i,
|
||||
str);
|
||||
}
|
||||
}
|
||||
num_str = NUM_RING_CMN_SW_STATS;
|
||||
for (j = 0; j < num_str; j++) {
|
||||
sprintf(buf, "[%d]: %s", i,
|
||||
bnxt_cmn_sw_stats_str[j]);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
else
|
||||
for (j = 0; j < num_str; j++) {
|
||||
str = bnxt_ring_tpa_stats_str[j];
|
||||
ethtool_sprintf(&buf, "[%d]: %s", i,
|
||||
str);
|
||||
}
|
||||
skip_tpa_stats:
|
||||
if (is_rx_ring(bp, i))
|
||||
for (j = 0; j < NUM_RING_RX_SW_STATS; j++) {
|
||||
str = bnxt_rx_sw_stats_str[j];
|
||||
ethtool_sprintf(&buf, "[%d]: %s", i,
|
||||
str);
|
||||
}
|
||||
for (j = 0; j < NUM_RING_CMN_SW_STATS; j++) {
|
||||
str = bnxt_cmn_sw_stats_str[j];
|
||||
ethtool_sprintf(&buf, "[%d]: %s", i, str);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < BNXT_NUM_RING_ERR_STATS; i++) {
|
||||
strscpy(buf, bnxt_ring_err_stats_arr[i], ETH_GSTRING_LEN);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
}
|
||||
for (i = 0; i < BNXT_NUM_RING_ERR_STATS; i++)
|
||||
ethtool_puts(&buf, bnxt_ring_err_stats_arr[i]);
|
||||
|
||||
if (bp->flags & BNXT_FLAG_PORT_STATS) {
|
||||
if (bp->flags & BNXT_FLAG_PORT_STATS)
|
||||
for (i = 0; i < BNXT_NUM_PORT_STATS; i++) {
|
||||
strcpy(buf, bnxt_port_stats_arr[i].string);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
str = bnxt_port_stats_arr[i].string;
|
||||
ethtool_puts(&buf, str);
|
||||
}
|
||||
}
|
||||
|
||||
if (bp->flags & BNXT_FLAG_PORT_STATS_EXT) {
|
||||
u32 len;
|
||||
|
||||
len = min_t(u32, bp->fw_rx_stats_ext_size,
|
||||
ARRAY_SIZE(bnxt_port_stats_ext_arr));
|
||||
for (i = 0; i < len; i++) {
|
||||
strcpy(buf, bnxt_port_stats_ext_arr[i].string);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
str = bnxt_port_stats_ext_arr[i].string;
|
||||
ethtool_puts(&buf, str);
|
||||
}
|
||||
|
||||
len = min_t(u32, bp->fw_tx_stats_ext_size,
|
||||
ARRAY_SIZE(bnxt_tx_port_stats_ext_arr));
|
||||
for (i = 0; i < len; i++) {
|
||||
strcpy(buf,
|
||||
bnxt_tx_port_stats_ext_arr[i].string);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
str = bnxt_tx_port_stats_ext_arr[i].string;
|
||||
ethtool_puts(&buf, str);
|
||||
}
|
||||
|
||||
if (bp->pri2cos_valid) {
|
||||
for (i = 0; i < 8; i++) {
|
||||
strcpy(buf,
|
||||
bnxt_rx_bytes_pri_arr[i].string);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
str = bnxt_rx_bytes_pri_arr[i].string;
|
||||
ethtool_puts(&buf, str);
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
strcpy(buf,
|
||||
bnxt_rx_pkts_pri_arr[i].string);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
str = bnxt_rx_pkts_pri_arr[i].string;
|
||||
ethtool_puts(&buf, str);
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
strcpy(buf,
|
||||
bnxt_tx_bytes_pri_arr[i].string);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
str = bnxt_tx_bytes_pri_arr[i].string;
|
||||
ethtool_puts(&buf, str);
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
strcpy(buf,
|
||||
bnxt_tx_pkts_pri_arr[i].string);
|
||||
buf += ETH_GSTRING_LEN;
|
||||
str = bnxt_tx_pkts_pri_arr[i].string;
|
||||
ethtool_puts(&buf, str);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ETH_SS_TEST:
|
||||
if (bp->num_tests)
|
||||
memcpy(buf, bp->test_info->string,
|
||||
bp->num_tests * ETH_GSTRING_LEN);
|
||||
for (i = 0; i < bp->num_tests; i++)
|
||||
ethtool_puts(&buf, bp->test_info->string[i]);
|
||||
break;
|
||||
default:
|
||||
netdev_err(bp->dev, "bnxt_get_strings invalid request %x\n",
|
||||
|
||||
Reference in New Issue
Block a user