Skip to content

Commit 4253381

Browse files
committed
net: bnxt: use ethtool string helpers
JIRA: https://issues.redhat.com/browse/RHEL-106550 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 a8f5a2b commit 4253381

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
@@ -707,112 +707,105 @@ static void bnxt_get_ethtool_stats(struct net_device *dev,
707707
static void bnxt_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
708708
{
709709
struct bnxt *bp = netdev_priv(dev);
710-
static const char * const *str;
711710
u32 i, j, num_str;
711+
const char *str;
712712

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

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

766-
if (bp->flags & BNXT_FLAG_PORT_STATS) {
759+
if (bp->flags & BNXT_FLAG_PORT_STATS)
767760
for (i = 0; i < BNXT_NUM_PORT_STATS; i++) {
768-
strcpy(buf, bnxt_port_stats_arr[i].string);
769-
buf += ETH_GSTRING_LEN;
761+
str = bnxt_port_stats_arr[i].string;
762+
ethtool_puts(&buf, str);
770763
}
771-
}
764+
772765
if (bp->flags & BNXT_FLAG_PORT_STATS_EXT) {
773766
u32 len;
774767

775768
len = min_t(u32, bp->fw_rx_stats_ext_size,
776769
ARRAY_SIZE(bnxt_port_stats_ext_arr));
777770
for (i = 0; i < len; i++) {
778-
strcpy(buf, bnxt_port_stats_ext_arr[i].string);
779-
buf += ETH_GSTRING_LEN;
771+
str = bnxt_port_stats_ext_arr[i].string;
772+
ethtool_puts(&buf, str);
780773
}
774+
781775
len = min_t(u32, bp->fw_tx_stats_ext_size,
782776
ARRAY_SIZE(bnxt_tx_port_stats_ext_arr));
783777
for (i = 0; i < len; i++) {
784-
strcpy(buf,
785-
bnxt_tx_port_stats_ext_arr[i].string);
786-
buf += ETH_GSTRING_LEN;
778+
str = bnxt_tx_port_stats_ext_arr[i].string;
779+
ethtool_puts(&buf, str);
787780
}
781+
788782
if (bp->pri2cos_valid) {
789783
for (i = 0; i < 8; i++) {
790-
strcpy(buf,
791-
bnxt_rx_bytes_pri_arr[i].string);
792-
buf += ETH_GSTRING_LEN;
784+
str = bnxt_rx_bytes_pri_arr[i].string;
785+
ethtool_puts(&buf, str);
793786
}
787+
794788
for (i = 0; i < 8; i++) {
795-
strcpy(buf,
796-
bnxt_rx_pkts_pri_arr[i].string);
797-
buf += ETH_GSTRING_LEN;
789+
str = bnxt_rx_pkts_pri_arr[i].string;
790+
ethtool_puts(&buf, str);
798791
}
792+
799793
for (i = 0; i < 8; i++) {
800-
strcpy(buf,
801-
bnxt_tx_bytes_pri_arr[i].string);
802-
buf += ETH_GSTRING_LEN;
794+
str = bnxt_tx_bytes_pri_arr[i].string;
795+
ethtool_puts(&buf, str);
803796
}
797+
804798
for (i = 0; i < 8; i++) {
805-
strcpy(buf,
806-
bnxt_tx_pkts_pri_arr[i].string);
807-
buf += ETH_GSTRING_LEN;
799+
str = bnxt_tx_pkts_pri_arr[i].string;
800+
ethtool_puts(&buf, str);
808801
}
809802
}
810803
}
811804
break;
812805
case ETH_SS_TEST:
813806
if (bp->num_tests)
814-
memcpy(buf, bp->test_info->string,
815-
bp->num_tests * ETH_GSTRING_LEN);
807+
for (i = 0; i < bp->num_tests; i++)
808+
ethtool_puts(&buf, bp->test_info->string[i]);
816809
break;
817810
default:
818811
netdev_err(bp->dev, "bnxt_get_strings invalid request %x\n",

0 commit comments

Comments
 (0)