Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d283e8c authored by David Woodhouse's avatar David Woodhouse Committed by John W. Linville
Browse files

libertas: Fix ethtool statistics



Fix various problems:
 - We converted MESH_ACCESS to a direct command but missed this caller.
 - We were trying to access mesh stats even on meshless firmware.
 - We should really zero the buffer if something goes wrong.

Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
Acked-by: default avatarDan Williams <dcbw@redhat.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 0d580a77
Loading
Loading
Loading
Loading
+13 −14
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ out:
}

static void lbs_ethtool_get_stats(struct net_device *dev,
				struct ethtool_stats * stats, u64 * data)
				  struct ethtool_stats *stats, uint64_t *data)
{
	struct lbs_private *priv = dev->priv;
	struct cmd_ds_mesh_access mesh_access;
@@ -83,12 +83,12 @@ static void lbs_ethtool_get_stats(struct net_device * dev,
	lbs_deb_enter(LBS_DEB_ETHTOOL);

	/* Get Mesh Statistics */
	ret = lbs_prepare_and_send_command(priv,
			CMD_MESH_ACCESS, CMD_ACT_MESH_GET_STATS,
			CMD_OPTION_WAITFORRSP, 0, &mesh_access);
	ret = lbs_mesh_access(priv, CMD_ACT_MESH_GET_STATS, &mesh_access);

	if (ret)
	if (ret) {
		memset(data, 0, MESH_STATS_NUM*(sizeof(uint64_t)));
		return;
	}

	priv->mstats.fwd_drop_rbt = le32_to_cpu(mesh_access.data[0]);
	priv->mstats.fwd_drop_ttl = le32_to_cpu(mesh_access.data[1]);
@@ -113,17 +113,16 @@ static void lbs_ethtool_get_stats(struct net_device * dev,

static int lbs_ethtool_get_sset_count(struct net_device *dev, int sset)
{
	switch (sset) {
	case ETH_SS_STATS:
	struct lbs_private *priv = dev->priv;

	if (sset == ETH_SS_STATS && dev == priv->mesh_dev)
		return MESH_STATS_NUM;
	default:

	return -EOPNOTSUPP;
}
}

static void lbs_ethtool_get_strings(struct net_device *dev,
					  u32 stringset,
					  u8 * s)
				    uint32_t stringset, uint8_t *s)
{
	int i;