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

net: freescale: 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: default avatarRosen Penev <rosenp@gmail.com>
Reviewed-by: default avatarLee Trager <lee@trager.us>
Link: https://patch.msgid.link/20241025203757.288367-1-rosenp@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent cf44bd08
Loading
Loading
Loading
Loading
+13 −27
Original line number Diff line number Diff line
@@ -243,38 +243,24 @@ static void dpaa_get_ethtool_stats(struct net_device *net_dev,
static void dpaa_get_strings(struct net_device *net_dev, u32 stringset,
			     u8 *data)
{
	unsigned int i, j, num_cpus, size;
	char string_cpu[ETH_GSTRING_LEN];
	u8 *strings;
	unsigned int i, j, num_cpus;

	memset(string_cpu, 0, sizeof(string_cpu));
	strings   = data;
	num_cpus = num_online_cpus();
	size      = DPAA_STATS_GLOBAL_LEN * ETH_GSTRING_LEN;

	for (i = 0; i < DPAA_STATS_PERCPU_LEN; i++) {
		for (j = 0; j < num_cpus; j++) {
			snprintf(string_cpu, ETH_GSTRING_LEN, "%s [CPU %d]",
		for (j = 0; j < num_cpus; j++)
			ethtool_sprintf(&data, "%s [CPU %d]",
					dpaa_stats_percpu[i], j);
			memcpy(strings, string_cpu, ETH_GSTRING_LEN);
			strings += ETH_GSTRING_LEN;
		}
		snprintf(string_cpu, ETH_GSTRING_LEN, "%s [TOTAL]",
			 dpaa_stats_percpu[i]);
		memcpy(strings, string_cpu, ETH_GSTRING_LEN);
		strings += ETH_GSTRING_LEN;
	}
	for (j = 0; j < num_cpus; j++) {
		snprintf(string_cpu, ETH_GSTRING_LEN,
			 "bpool [CPU %d]", j);
		memcpy(strings, string_cpu, ETH_GSTRING_LEN);
		strings += ETH_GSTRING_LEN;

		ethtool_sprintf(&data, "%s [TOTAL]", dpaa_stats_percpu[i]);
	}
	snprintf(string_cpu, ETH_GSTRING_LEN, "bpool [TOTAL]");
	memcpy(strings, string_cpu, ETH_GSTRING_LEN);
	strings += ETH_GSTRING_LEN;
	for (i = 0; i < num_cpus; i++)
		ethtool_sprintf(&data, "bpool [CPU %d]", i);

	ethtool_puts(&data, "bpool [TOTAL]");

	memcpy(strings, dpaa_stats_global, size);
	for (i = 0; i < DPAA_STATS_GLOBAL_LEN; i++)
		ethtool_puts(&data, dpaa_stats_global[i]);
}

static int dpaa_get_hash_opts(struct net_device *dev,
+5 −10
Original line number Diff line number Diff line
@@ -217,20 +217,15 @@ static int dpaa2_eth_set_pauseparam(struct net_device *net_dev,
static void dpaa2_eth_get_strings(struct net_device *netdev, u32 stringset,
				  u8 *data)
{
	u8 *p = data;
	int i;

	switch (stringset) {
	case ETH_SS_STATS:
		for (i = 0; i < DPAA2_ETH_NUM_STATS; i++) {
			strscpy(p, dpaa2_ethtool_stats[i], ETH_GSTRING_LEN);
			p += ETH_GSTRING_LEN;
		}
		for (i = 0; i < DPAA2_ETH_NUM_EXTRA_STATS; i++) {
			strscpy(p, dpaa2_ethtool_extras[i], ETH_GSTRING_LEN);
			p += ETH_GSTRING_LEN;
		}
		dpaa2_mac_get_strings(p);
		for (i = 0; i < DPAA2_ETH_NUM_STATS; i++)
			ethtool_puts(&data, dpaa2_ethtool_stats[i]);
		for (i = 0; i < DPAA2_ETH_NUM_EXTRA_STATS; i++)
			ethtool_puts(&data, dpaa2_ethtool_extras[i]);
		dpaa2_mac_get_strings(&data);
		break;
	}
}
+3 −6
Original line number Diff line number Diff line
@@ -558,15 +558,12 @@ int dpaa2_mac_get_sset_count(void)
	return DPAA2_MAC_NUM_STATS;
}

void dpaa2_mac_get_strings(u8 *data)
void dpaa2_mac_get_strings(u8 **data)
{
	u8 *p = data;
	int i;

	for (i = 0; i < DPAA2_MAC_NUM_STATS; i++) {
		strscpy(p, dpaa2_mac_ethtool_stats[i], ETH_GSTRING_LEN);
		p += ETH_GSTRING_LEN;
	}
	for (i = 0; i < DPAA2_MAC_NUM_STATS; i++)
		ethtool_puts(data, dpaa2_mac_ethtool_stats[i]);
}

void dpaa2_mac_get_ethtool_stats(struct dpaa2_mac *mac, u64 *data)
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ void dpaa2_mac_disconnect(struct dpaa2_mac *mac);

int dpaa2_mac_get_sset_count(void);

void dpaa2_mac_get_strings(u8 *data);
void dpaa2_mac_get_strings(u8 **data);

void dpaa2_mac_get_ethtool_stats(struct dpaa2_mac *mac, u64 *data);

+4 −5
Original line number Diff line number Diff line
@@ -170,17 +170,16 @@ dpaa2_switch_ethtool_get_sset_count(struct net_device *netdev, int sset)
static void dpaa2_switch_ethtool_get_strings(struct net_device *netdev,
					     u32 stringset, u8 *data)
{
	u8 *p = data;
	const char *str;
	int i;

	switch (stringset) {
	case ETH_SS_STATS:
		for (i = 0; i < DPAA2_SWITCH_NUM_COUNTERS; i++) {
			memcpy(p, dpaa2_switch_ethtool_counters[i].name,
			       ETH_GSTRING_LEN);
			p += ETH_GSTRING_LEN;
			str = dpaa2_switch_ethtool_counters[i].name;
			ethtool_puts(&data, str);
		}
		dpaa2_mac_get_strings(p);
		dpaa2_mac_get_strings(&data);
		break;
	}
}
Loading