Commit f12b3638 authored by Rosen Penev's avatar Rosen Penev Committed by Jakub Kicinski
Browse files

net: dsa: use ethtool string helpers



These are the preferred way to copy ethtool strings.

Avoids incrementing pointers all over the place.

Signed-off-by: default avatarRosen Penev <rosenp@gmail.com>
(for hellcreek driver)
Reviewed-by: default avatarKurt Kanzenbach <kurt@linutronix.de>
Link: https://patch.msgid.link/20241028044828.1639668-1-rosenp@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 574583c3
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -989,8 +989,7 @@ void b53_get_strings(struct dsa_switch *ds, int port, u32 stringset,

	if (stringset == ETH_SS_STATS) {
		for (i = 0; i < mib_size; i++)
			strscpy(data + i * ETH_GSTRING_LEN,
				mibs[i].name, ETH_GSTRING_LEN);
			ethtool_puts(&data, mibs[i].name);
	} else if (stringset == ETH_SS_PHY_STATS) {
		phydev = b53_get_phy_device(ds, port);
		if (!phydev)
+2 −2
Original line number Diff line number Diff line
@@ -1183,8 +1183,8 @@ static void bcm_sf2_sw_get_strings(struct dsa_switch *ds, int port,
	int cnt = b53_get_sset_count(ds, port, stringset);

	b53_get_strings(ds, port, stringset, data);
	bcm_sf2_cfp_get_strings(ds, port, stringset,
				data + cnt * ETH_GSTRING_LEN);
	data += cnt * ETH_GSTRING_LEN;
	bcm_sf2_cfp_get_strings(ds, port, stringset, &data);
}

static void bcm_sf2_sw_get_ethtool_stats(struct dsa_switch *ds, int port,
+2 −2
Original line number Diff line number Diff line
@@ -228,8 +228,8 @@ int bcm_sf2_set_rxnfc(struct dsa_switch *ds, int port,
int bcm_sf2_cfp_rst(struct bcm_sf2_priv *priv);
void bcm_sf2_cfp_exit(struct dsa_switch *ds);
int bcm_sf2_cfp_resume(struct dsa_switch *ds);
void bcm_sf2_cfp_get_strings(struct dsa_switch *ds, int port,
			     u32 stringset, uint8_t *data);
void bcm_sf2_cfp_get_strings(struct dsa_switch *ds, int port, u32 stringset,
			     uint8_t **data);
void bcm_sf2_cfp_get_ethtool_stats(struct dsa_switch *ds, int port,
				   uint64_t *data);
int bcm_sf2_cfp_get_sset_count(struct dsa_switch *ds, int port, int sset);
+7 −15
Original line number Diff line number Diff line
@@ -1279,27 +1279,19 @@ static const struct bcm_sf2_cfp_stat {
	},
};

void bcm_sf2_cfp_get_strings(struct dsa_switch *ds, int port,
			     u32 stringset, uint8_t *data)
void bcm_sf2_cfp_get_strings(struct dsa_switch *ds, int port, u32 stringset,
			     uint8_t **data)
{
	struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
	unsigned int s = ARRAY_SIZE(bcm_sf2_cfp_stats);
	char buf[ETH_GSTRING_LEN];
	unsigned int i, j, iter;
	unsigned int i, j;

	if (stringset != ETH_SS_STATS)
		return;

	for (i = 1; i < priv->num_cfp_rules; i++) {
		for (j = 0; j < s; j++) {
			snprintf(buf, sizeof(buf),
				 "CFP%03d_%sCntr",
				 i, bcm_sf2_cfp_stats[j].name);
			iter = (i - 1) * s + j;
			strscpy(data + iter * ETH_GSTRING_LEN,
				buf, ETH_GSTRING_LEN);
		}
	}
	for (i = 1; i < priv->num_cfp_rules; i++)
		for (j = 0; j < ARRAY_SIZE(bcm_sf2_cfp_stats); j++)
			ethtool_sprintf(data, "CFP%03d_%sCntr", i,
					bcm_sf2_cfp_stats[j].name);
}

void bcm_sf2_cfp_get_ethtool_stats(struct dsa_switch *ds, int port,
+1 −2
Original line number Diff line number Diff line
@@ -121,8 +121,7 @@ static void dsa_loop_get_strings(struct dsa_switch *ds, int port,
		return;

	for (i = 0; i < __DSA_LOOP_CNT_MAX; i++)
		memcpy(data + i * ETH_GSTRING_LEN,
		       ps->ports[port].mib[i].name, ETH_GSTRING_LEN);
		ethtool_puts(&data, ps->ports[port].mib[i].name);
}

static void dsa_loop_get_ethtool_stats(struct dsa_switch *ds, int port,
Loading