* [PATCH net-next] net: bnx2x: use ethtool string helpers
@ 2024-10-30 20:51 Rosen Penev
2024-11-03 21:59 ` Jakub Kicinski
0 siblings, 1 reply; 4+ messages in thread
From: Rosen Penev @ 2024-10-30 20:51 UTC (permalink / raw)
To: netdev
Cc: Sudarsana Kalluru, Manish Chopra, Andrew Lunn, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list
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>
---
v1: split off from main broadcom patch.
.../ethernet/broadcom/bnx2x/bnx2x_ethtool.c | 66 ++++++++-----------
1 file changed, 29 insertions(+), 37 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
index adf7b6b94941..65d65aabf16a 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
@@ -39,34 +39,34 @@ static const struct {
int size;
char string[ETH_GSTRING_LEN];
} bnx2x_q_stats_arr[] = {
-/* 1 */ { Q_STATS_OFFSET32(total_bytes_received_hi), 8, "[%s]: rx_bytes" },
+/* 1 */ { Q_STATS_OFFSET32(total_bytes_received_hi), 8, "[%d]: rx_bytes" },
{ Q_STATS_OFFSET32(total_unicast_packets_received_hi),
- 8, "[%s]: rx_ucast_packets" },
+ 8, "[%d]: rx_ucast_packets" },
{ Q_STATS_OFFSET32(total_multicast_packets_received_hi),
- 8, "[%s]: rx_mcast_packets" },
+ 8, "[%d]: rx_mcast_packets" },
{ Q_STATS_OFFSET32(total_broadcast_packets_received_hi),
- 8, "[%s]: rx_bcast_packets" },
- { Q_STATS_OFFSET32(no_buff_discard_hi), 8, "[%s]: rx_discards" },
+ 8, "[%d]: rx_bcast_packets" },
+ { Q_STATS_OFFSET32(no_buff_discard_hi), 8, "[%d]: rx_discards" },
{ Q_STATS_OFFSET32(rx_err_discard_pkt),
- 4, "[%s]: rx_phy_ip_err_discards"},
+ 4, "[%d]: rx_phy_ip_err_discards"},
{ Q_STATS_OFFSET32(rx_skb_alloc_failed),
- 4, "[%s]: rx_skb_alloc_discard" },
- { Q_STATS_OFFSET32(hw_csum_err), 4, "[%s]: rx_csum_offload_errors" },
- { Q_STATS_OFFSET32(driver_xoff), 4, "[%s]: tx_exhaustion_events" },
- { Q_STATS_OFFSET32(total_bytes_transmitted_hi), 8, "[%s]: tx_bytes" },
+ 4, "[%d]: rx_skb_alloc_discard" },
+ { Q_STATS_OFFSET32(hw_csum_err), 4, "[%d]: rx_csum_offload_errors" },
+ { Q_STATS_OFFSET32(driver_xoff), 4, "[%d]: tx_exhaustion_events" },
+ { Q_STATS_OFFSET32(total_bytes_transmitted_hi), 8, "[%d]: tx_bytes" },
/* 10 */{ Q_STATS_OFFSET32(total_unicast_packets_transmitted_hi),
- 8, "[%s]: tx_ucast_packets" },
+ 8, "[%d]: tx_ucast_packets" },
{ Q_STATS_OFFSET32(total_multicast_packets_transmitted_hi),
- 8, "[%s]: tx_mcast_packets" },
+ 8, "[%d]: tx_mcast_packets" },
{ Q_STATS_OFFSET32(total_broadcast_packets_transmitted_hi),
- 8, "[%s]: tx_bcast_packets" },
+ 8, "[%d]: tx_bcast_packets" },
{ Q_STATS_OFFSET32(total_tpa_aggregations_hi),
- 8, "[%s]: tpa_aggregations" },
+ 8, "[%d]: tpa_aggregations" },
{ Q_STATS_OFFSET32(total_tpa_aggregated_frames_hi),
- 8, "[%s]: tpa_aggregated_frames"},
- { Q_STATS_OFFSET32(total_tpa_bytes_hi), 8, "[%s]: tpa_bytes"},
+ 8, "[%d]: tpa_aggregated_frames"},
+ { Q_STATS_OFFSET32(total_tpa_bytes_hi), 8, "[%d]: tpa_bytes"},
{ Q_STATS_OFFSET32(driver_filtered_tx_pkt),
- 4, "[%s]: driver_filtered_tx_pkt" }
+ 4, "[%d]: driver_filtered_tx_pkt" }
};
#define BNX2X_NUM_Q_STATS ARRAY_SIZE(bnx2x_q_stats_arr)
@@ -3184,32 +3184,24 @@ static u32 bnx2x_get_private_flags(struct net_device *dev)
static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
{
struct bnx2x *bp = netdev_priv(dev);
- int i, j, k, start;
- char queue_name[MAX_QUEUE_NAME_LEN+1];
+ const char *str;
+ int i, j, start;
switch (stringset) {
case ETH_SS_STATS:
- k = 0;
if (is_multi(bp)) {
for_each_eth_queue(bp, i) {
- memset(queue_name, 0, sizeof(queue_name));
- snprintf(queue_name, sizeof(queue_name),
- "%d", i);
- for (j = 0; j < BNX2X_NUM_Q_STATS; j++)
- snprintf(buf + (k + j)*ETH_GSTRING_LEN,
- ETH_GSTRING_LEN,
- bnx2x_q_stats_arr[j].string,
- queue_name);
- k += BNX2X_NUM_Q_STATS;
+ for (j = 0; j < BNX2X_NUM_Q_STATS; j++) {
+ str = bnx2x_q_stats_arr[j].string;
+ ethtool_sprintf(&buf, str, i);
+ }
}
}
- for (i = 0, j = 0; i < BNX2X_NUM_STATS; i++) {
+ for (i = 0; i < BNX2X_NUM_STATS; i++) {
if (HIDE_PORT_STAT(bp) && IS_PORT_STAT(i))
continue;
- strcpy(buf + (k + j)*ETH_GSTRING_LEN,
- bnx2x_stats_arr[i].string);
- j++;
+ ethtool_puts(&buf, bnx2x_stats_arr[i].string);
}
break;
@@ -3220,13 +3212,13 @@ static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
start = 0;
else
start = 4;
- memcpy(buf, bnx2x_tests_str_arr + start,
- ETH_GSTRING_LEN * BNX2X_NUM_TESTS(bp));
+ for (i = start; i < BNX2X_NUM_TESTS_SF; i++)
+ ethtool_puts(&buf, bnx2x_tests_str_arr[i]);
break;
case ETH_SS_PRIV_FLAGS:
- memcpy(buf, bnx2x_private_arr,
- ETH_GSTRING_LEN * BNX2X_PRI_FLAG_LEN);
+ for (i = 0; i < BNX2X_PRI_FLAG_LEN; i++)
+ ethtool_puts(&buf, bnx2x_private_arr[i]);
break;
}
}
--
2.47.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net-next] net: bnx2x: use ethtool string helpers
2024-10-30 20:51 [PATCH net-next] net: bnx2x: use ethtool string helpers Rosen Penev
@ 2024-11-03 21:59 ` Jakub Kicinski
2024-11-04 0:03 ` Rosen Penev
0 siblings, 1 reply; 4+ messages in thread
From: Jakub Kicinski @ 2024-11-03 21:59 UTC (permalink / raw)
To: Rosen Penev
Cc: netdev, Sudarsana Kalluru, Manish Chopra, Andrew Lunn,
David S. Miller, Eric Dumazet, Paolo Abeni, open list
On Wed, 30 Oct 2024 13:51:47 -0700 Rosen Penev wrote:
> @@ -3220,13 +3212,13 @@ static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
> start = 0;
> else
> start = 4;
> - memcpy(buf, bnx2x_tests_str_arr + start,
> - ETH_GSTRING_LEN * BNX2X_NUM_TESTS(bp));
> + for (i = start; i < BNX2X_NUM_TESTS_SF; i++)
> + ethtool_puts(&buf, bnx2x_tests_str_arr[i]);
There are three cases - MF, SF and VF.
You seem to have covered SF and MF, but not VF.
--
pw-bot: cr
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH net-next] net: bnx2x: use ethtool string helpers
2024-11-03 21:59 ` Jakub Kicinski
@ 2024-11-04 0:03 ` Rosen Penev
2024-11-04 0:08 ` Rosen Penev
0 siblings, 1 reply; 4+ messages in thread
From: Rosen Penev @ 2024-11-04 0:03 UTC (permalink / raw)
To: Jakub Kicinski
Cc: netdev, Sudarsana Kalluru, Manish Chopra, Andrew Lunn,
David S. Miller, Eric Dumazet, Paolo Abeni, open list
On Sun, Nov 3, 2024 at 2:00 PM Jakub Kicinski <kuba@kernel.org> wrote:
>
> On Wed, 30 Oct 2024 13:51:47 -0700 Rosen Penev wrote:
> > @@ -3220,13 +3212,13 @@ static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
> > start = 0;
> > else
> > start = 4;
> > - memcpy(buf, bnx2x_tests_str_arr + start,
> > - ETH_GSTRING_LEN * BNX2X_NUM_TESTS(bp));
> > + for (i = start; i < BNX2X_NUM_TESTS_SF; i++)
> > + ethtool_puts(&buf, bnx2x_tests_str_arr[i]);
>
> There are three cases - MF, SF and VF.
> You seem to have covered SF and MF, but not VF.
#define BNX2X_NUM_TESTS_SF 7
#define BNX2X_NUM_TESTS_MF 3
#define BNX2X_NUM_TESTS(bp) (IS_MF(bp) ? BNX2X_NUM_TESTS_MF : \
IS_VF(bp) ? 0 : BNX2X_NUM_TESTS_SF)
VF is SF.
> --
> pw-bot: cr
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH net-next] net: bnx2x: use ethtool string helpers
2024-11-04 0:03 ` Rosen Penev
@ 2024-11-04 0:08 ` Rosen Penev
0 siblings, 0 replies; 4+ messages in thread
From: Rosen Penev @ 2024-11-04 0:08 UTC (permalink / raw)
To: Jakub Kicinski
Cc: netdev, Sudarsana Kalluru, Manish Chopra, Andrew Lunn,
David S. Miller, Eric Dumazet, Paolo Abeni, open list
On Sun, Nov 3, 2024 at 4:03 PM Rosen Penev <rosenp@gmail.com> wrote:
>
> On Sun, Nov 3, 2024 at 2:00 PM Jakub Kicinski <kuba@kernel.org> wrote:
> >
> > On Wed, 30 Oct 2024 13:51:47 -0700 Rosen Penev wrote:
> > > @@ -3220,13 +3212,13 @@ static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
> > > start = 0;
> > > else
> > > start = 4;
> > > - memcpy(buf, bnx2x_tests_str_arr + start,
> > > - ETH_GSTRING_LEN * BNX2X_NUM_TESTS(bp));
> > > + for (i = start; i < BNX2X_NUM_TESTS_SF; i++)
> > > + ethtool_puts(&buf, bnx2x_tests_str_arr[i]);
> >
> > There are three cases - MF, SF and VF.
> > You seem to have covered SF and MF, but not VF.
> #define BNX2X_NUM_TESTS_SF 7
> #define BNX2X_NUM_TESTS_MF 3
> #define BNX2X_NUM_TESTS(bp) (IS_MF(bp) ? BNX2X_NUM_TESTS_MF : \
> IS_VF(bp) ? 0 : BNX2X_NUM_TESTS_SF)
>
> VF is SF.
hrm so BNX2X_NUM_TESTS returns 0, 3, or 7. Makes sense to do an early exit.
> > --
> > pw-bot: cr
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-11-04 0:09 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-30 20:51 [PATCH net-next] net: bnx2x: use ethtool string helpers Rosen Penev
2024-11-03 21:59 ` Jakub Kicinski
2024-11-04 0:03 ` Rosen Penev
2024-11-04 0:08 ` Rosen Penev
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).