Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: broadcom: 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>
Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://patch.msgid.link/20241104205317.306140-1-rosenp@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Rosen Penev and committed by
Jakub Kicinski
fda96035 4ea3e221

+19 -31
+3 -3
drivers/net/ethernet/broadcom/asp2/bcmasp_ethtool.c
··· 101 101 static void bcmasp_get_strings(struct net_device *dev, u32 stringset, 102 102 u8 *data) 103 103 { 104 + const char *str; 104 105 unsigned int i; 105 106 106 107 switch (stringset) { 107 108 case ETH_SS_STATS: 108 109 for (i = 0; i < BCMASP_STATS_LEN; i++) { 109 - memcpy(data + i * ETH_GSTRING_LEN, 110 - bcmasp_gstrings_stats[i].stat_string, 111 - ETH_GSTRING_LEN); 110 + str = bcmasp_gstrings_stats[i].stat_string; 111 + ethtool_puts(&data, str); 112 112 } 113 113 break; 114 114 default:
+6 -6
drivers/net/ethernet/broadcom/bcm63xx_enet.c
··· 1339 1339 static void bcm_enet_get_strings(struct net_device *netdev, 1340 1340 u32 stringset, u8 *data) 1341 1341 { 1342 + const char *str; 1342 1343 int i; 1343 1344 1344 1345 switch (stringset) { 1345 1346 case ETH_SS_STATS: 1346 1347 for (i = 0; i < BCM_ENET_STATS_LEN; i++) { 1347 - memcpy(data + i * ETH_GSTRING_LEN, 1348 - bcm_enet_gstrings_stats[i].stat_string, 1349 - ETH_GSTRING_LEN); 1348 + str = bcm_enet_gstrings_stats[i].stat_string; 1349 + ethtool_puts(&data, str); 1350 1350 } 1351 1351 break; 1352 1352 } ··· 2503 2503 static void bcm_enetsw_get_strings(struct net_device *netdev, 2504 2504 u32 stringset, u8 *data) 2505 2505 { 2506 + const char *str; 2506 2507 int i; 2507 2508 2508 2509 switch (stringset) { 2509 2510 case ETH_SS_STATS: 2510 2511 for (i = 0; i < BCM_ENETSW_STATS_LEN; i++) { 2511 - memcpy(data + i * ETH_GSTRING_LEN, 2512 - bcm_enetsw_gstrings_stats[i].stat_string, 2513 - ETH_GSTRING_LEN); 2512 + str = bcm_enetsw_gstrings_stats[i].stat_string; 2513 + ethtool_puts(&data, str); 2514 2514 } 2515 2515 break; 2516 2516 }
+5 -15
drivers/net/ethernet/broadcom/bcmsysport.c
··· 346 346 { 347 347 struct bcm_sysport_priv *priv = netdev_priv(dev); 348 348 const struct bcm_sysport_stats *s; 349 - char buf[128]; 350 - int i, j; 349 + int i; 351 350 352 351 switch (stringset) { 353 352 case ETH_SS_STATS: 354 - for (i = 0, j = 0; i < BCM_SYSPORT_STATS_LEN; i++) { 353 + for (i = 0; i < BCM_SYSPORT_STATS_LEN; i++) { 355 354 s = &bcm_sysport_gstrings_stats[i]; 356 355 if (priv->is_lite && 357 356 !bcm_sysport_lite_stat_valid(s->type)) 358 357 continue; 359 358 360 - memcpy(data + j * ETH_GSTRING_LEN, s->stat_string, 361 - ETH_GSTRING_LEN); 362 - j++; 359 + ethtool_puts(&data, s->stat_string); 363 360 } 364 361 365 362 for (i = 0; i < dev->num_tx_queues; i++) { 366 - snprintf(buf, sizeof(buf), "txq%d_packets", i); 367 - memcpy(data + j * ETH_GSTRING_LEN, buf, 368 - ETH_GSTRING_LEN); 369 - j++; 370 - 371 - snprintf(buf, sizeof(buf), "txq%d_bytes", i); 372 - memcpy(data + j * ETH_GSTRING_LEN, buf, 373 - ETH_GSTRING_LEN); 374 - j++; 363 + ethtool_sprintf(&data, "txq%d_packets", i); 364 + ethtool_sprintf(&data, "txq%d_bytes", i); 375 365 } 376 366 break; 377 367 default:
+1 -2
drivers/net/ethernet/broadcom/bgmac.c
··· 1367 1367 return; 1368 1368 1369 1369 for (i = 0; i < BGMAC_STATS_LEN; i++) 1370 - strscpy(data + i * ETH_GSTRING_LEN, 1371 - bgmac_get_strings_stats[i].name, ETH_GSTRING_LEN); 1370 + ethtool_puts(&data, bgmac_get_strings_stats[i].name); 1372 1371 } 1373 1372 1374 1373 static void bgmac_get_ethtool_stats(struct net_device *dev,
+3 -3
drivers/net/ethernet/broadcom/genet/bcmgenet.c
··· 1144 1144 static void bcmgenet_get_strings(struct net_device *dev, u32 stringset, 1145 1145 u8 *data) 1146 1146 { 1147 + const char *str; 1147 1148 int i; 1148 1149 1149 1150 switch (stringset) { 1150 1151 case ETH_SS_STATS: 1151 1152 for (i = 0; i < BCMGENET_STATS_LEN; i++) { 1152 - memcpy(data + i * ETH_GSTRING_LEN, 1153 - bcmgenet_gstrings_stats[i].stat_string, 1154 - ETH_GSTRING_LEN); 1153 + str = bcmgenet_gstrings_stats[i].stat_string; 1154 + ethtool_puts(&data, str); 1155 1155 } 1156 1156 break; 1157 1157 }
+1 -2
drivers/net/phy/bcm-phy-lib.c
··· 523 523 unsigned int i; 524 524 525 525 for (i = 0; i < ARRAY_SIZE(bcm_phy_hw_stats); i++) 526 - strscpy(data + i * ETH_GSTRING_LEN, 527 - bcm_phy_hw_stats[i].string, ETH_GSTRING_LEN); 526 + ethtool_puts(&data, bcm_phy_hw_stats[i].string); 528 527 } 529 528 EXPORT_SYMBOL_GPL(bcm_phy_get_strings); 530 529