Skip to content

Commit 99edb26

Browse files
committed
net: bnxt: use ethtool string helpers
JIRA: https://issues.redhat.com/browse/RHEL-107291 commit 9b4b2e0 Author: Rosen Penev <rosenp@gmail.com> Date: Tue Oct 29 16:32:29 2024 -0700 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> Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
1 parent acc5d25 commit 99edb26

File tree

1 file changed

+54
-61
lines changed

1 file changed

+54
-61
lines changed

drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c

Lines changed: 54 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -706,112 +706,105 @@ static void bnxt_get_ethtool_stats(struct net_device *dev,
706706
static void bnxt_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
707707
{
708708
struct bnxt *bp = netdev_priv(dev);
709-
static const char * const *str;
710709
u32 i, j, num_str;
710+
const char *str;
711711

712712
switch (stringset) {
713713
case ETH_SS_STATS:
714714
for (i = 0; i < bp->cp_nr_rings; i++) {
715-
if (is_rx_ring(bp, i)) {
716-
num_str = NUM_RING_RX_HW_STATS;
717-
for (j = 0; j < num_str; j++) {
718-
sprintf(buf, "[%d]: %s", i,
719-
bnxt_ring_rx_stats_str[j]);
720-
buf += ETH_GSTRING_LEN;
715+
if (is_rx_ring(bp, i))
716+
for (j = 0; j < NUM_RING_RX_HW_STATS; j++) {
717+
str = bnxt_ring_rx_stats_str[j];
718+
ethtool_sprintf(&buf, "[%d]: %s", i,
719+
str);
721720
}
722-
}
723-
if (is_tx_ring(bp, i)) {
724-
num_str = NUM_RING_TX_HW_STATS;
725-
for (j = 0; j < num_str; j++) {
726-
sprintf(buf, "[%d]: %s", i,
727-
bnxt_ring_tx_stats_str[j]);
728-
buf += ETH_GSTRING_LEN;
721+
if (is_tx_ring(bp, i))
722+
for (j = 0; j < NUM_RING_TX_HW_STATS; j++) {
723+
str = bnxt_ring_tx_stats_str[j];
724+
ethtool_sprintf(&buf, "[%d]: %s", i,
725+
str);
729726
}
730-
}
731727
num_str = bnxt_get_num_tpa_ring_stats(bp);
732728
if (!num_str || !is_rx_ring(bp, i))
733729
goto skip_tpa_stats;
734730

735731
if (bp->max_tpa_v2)
736-
str = bnxt_ring_tpa2_stats_str;
732+
for (j = 0; j < num_str; j++) {
733+
str = bnxt_ring_tpa2_stats_str[j];
734+
ethtool_sprintf(&buf, "[%d]: %s", i,
735+
str);
736+
}
737737
else
738-
str = bnxt_ring_tpa_stats_str;
739-
740-
for (j = 0; j < num_str; j++) {
741-
sprintf(buf, "[%d]: %s", i, str[j]);
742-
buf += ETH_GSTRING_LEN;
743-
}
744-
skip_tpa_stats:
745-
if (is_rx_ring(bp, i)) {
746-
num_str = NUM_RING_RX_SW_STATS;
747738
for (j = 0; j < num_str; j++) {
748-
sprintf(buf, "[%d]: %s", i,
749-
bnxt_rx_sw_stats_str[j]);
750-
buf += ETH_GSTRING_LEN;
739+
str = bnxt_ring_tpa_stats_str[j];
740+
ethtool_sprintf(&buf, "[%d]: %s", i,
741+
str);
751742
}
743+
skip_tpa_stats:
744+
if (is_rx_ring(bp, i))
745+
for (j = 0; j < NUM_RING_RX_SW_STATS; j++) {
746+
str = bnxt_rx_sw_stats_str[j];
747+
ethtool_sprintf(&buf, "[%d]: %s", i,
748+
str);
749+
}
750+
for (j = 0; j < NUM_RING_CMN_SW_STATS; j++) {
751+
str = bnxt_cmn_sw_stats_str[j];
752+
ethtool_sprintf(&buf, "[%d]: %s", i, str);
752753
}
753-
num_str = NUM_RING_CMN_SW_STATS;
754-
for (j = 0; j < num_str; j++) {
755-
sprintf(buf, "[%d]: %s", i,
756-
bnxt_cmn_sw_stats_str[j]);
757-
buf += ETH_GSTRING_LEN;
758-
}
759-
}
760-
for (i = 0; i < BNXT_NUM_RING_ERR_STATS; i++) {
761-
strscpy(buf, bnxt_ring_err_stats_arr[i], ETH_GSTRING_LEN);
762-
buf += ETH_GSTRING_LEN;
763754
}
755+
for (i = 0; i < BNXT_NUM_RING_ERR_STATS; i++)
756+
ethtool_puts(&buf, bnxt_ring_err_stats_arr[i]);
764757

765-
if (bp->flags & BNXT_FLAG_PORT_STATS) {
758+
if (bp->flags & BNXT_FLAG_PORT_STATS)
766759
for (i = 0; i < BNXT_NUM_PORT_STATS; i++) {
767-
strcpy(buf, bnxt_port_stats_arr[i].string);
768-
buf += ETH_GSTRING_LEN;
760+
str = bnxt_port_stats_arr[i].string;
761+
ethtool_puts(&buf, str);
769762
}
770-
}
763+
771764
if (bp->flags & BNXT_FLAG_PORT_STATS_EXT) {
772765
u32 len;
773766

774767
len = min_t(u32, bp->fw_rx_stats_ext_size,
775768
ARRAY_SIZE(bnxt_port_stats_ext_arr));
776769
for (i = 0; i < len; i++) {
777-
strcpy(buf, bnxt_port_stats_ext_arr[i].string);
778-
buf += ETH_GSTRING_LEN;
770+
str = bnxt_port_stats_ext_arr[i].string;
771+
ethtool_puts(&buf, str);
779772
}
773+
780774
len = min_t(u32, bp->fw_tx_stats_ext_size,
781775
ARRAY_SIZE(bnxt_tx_port_stats_ext_arr));
782776
for (i = 0; i < len; i++) {
783-
strcpy(buf,
784-
bnxt_tx_port_stats_ext_arr[i].string);
785-
buf += ETH_GSTRING_LEN;
777+
str = bnxt_tx_port_stats_ext_arr[i].string;
778+
ethtool_puts(&buf, str);
786779
}
780+
787781
if (bp->pri2cos_valid) {
788782
for (i = 0; i < 8; i++) {
789-
strcpy(buf,
790-
bnxt_rx_bytes_pri_arr[i].string);
791-
buf += ETH_GSTRING_LEN;
783+
str = bnxt_rx_bytes_pri_arr[i].string;
784+
ethtool_puts(&buf, str);
792785
}
786+
793787
for (i = 0; i < 8; i++) {
794-
strcpy(buf,
795-
bnxt_rx_pkts_pri_arr[i].string);
796-
buf += ETH_GSTRING_LEN;
788+
str = bnxt_rx_pkts_pri_arr[i].string;
789+
ethtool_puts(&buf, str);
797790
}
791+
798792
for (i = 0; i < 8; i++) {
799-
strcpy(buf,
800-
bnxt_tx_bytes_pri_arr[i].string);
801-
buf += ETH_GSTRING_LEN;
793+
str = bnxt_tx_bytes_pri_arr[i].string;
794+
ethtool_puts(&buf, str);
802795
}
796+
803797
for (i = 0; i < 8; i++) {
804-
strcpy(buf,
805-
bnxt_tx_pkts_pri_arr[i].string);
806-
buf += ETH_GSTRING_LEN;
798+
str = bnxt_tx_pkts_pri_arr[i].string;
799+
ethtool_puts(&buf, str);
807800
}
808801
}
809802
}
810803
break;
811804
case ETH_SS_TEST:
812805
if (bp->num_tests)
813-
memcpy(buf, bp->test_info->string,
814-
bp->num_tests * ETH_GSTRING_LEN);
806+
for (i = 0; i < bp->num_tests; i++)
807+
ethtool_puts(&buf, bp->test_info->string[i]);
815808
break;
816809
default:
817810
netdev_err(bp->dev, "bnxt_get_strings invalid request %x\n",

0 commit comments

Comments
 (0)