Commit e749c7d4 authored by Arend van Spriel's avatar Arend van Spriel Committed by Kalle Valo
Browse files

brcmfmac: show firmware release info in ethtool driver info



The ethtool driver info already contained the unique firmware
identifier. This patch adds the firmware release version.

   $ ethtool -i wlan4
   driver: brcmfmac
   version: 6.10.224.22
   firmware-version: 01-32bd010f

Reviewed-by: default avatarHante Meuleman <meuleman@broadcom.com>
Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 48622903
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -601,9 +601,11 @@ static void brcmf_ethtool_get_drvinfo(struct net_device *ndev,
{
	struct brcmf_if *ifp = netdev_priv(ndev);
	struct brcmf_pub *drvr = ifp->drvr;
	char drev[BRCMU_DOTREV_LEN];

	strlcpy(info->driver, KBUILD_MODNAME, sizeof(info->driver));
	snprintf(info->version, sizeof(info->version), "n/a");
	strlcpy(info->version, brcmu_dotrev_str(drvr->revinfo.driverrev, drev),
		sizeof(info->version));
	strlcpy(info->fw_version, drvr->fwver, sizeof(info->fw_version));
	strlcpy(info->bus_info, dev_name(drvr->bus_if->dev),
		sizeof(info->bus_info));
+27 −0
Original line number Diff line number Diff line
@@ -277,6 +277,33 @@ char *brcmu_boardrev_str(u32 brev, char *buf)
}
EXPORT_SYMBOL(brcmu_boardrev_str);

char *brcmu_dotrev_str(u32 dotrev, char *buf)
{
	u8 dotval[4];

	if (!dotrev) {
		snprintf(buf, BRCMU_DOTREV_LEN, "unknown");
		return buf;
	}
	dotval[0] = (dotrev >> 24) & 0xFF;
	dotval[1] = (dotrev >> 16) & 0xFF;
	dotval[2] = (dotrev >> 8) & 0xFF;
	dotval[3] = dotrev & 0xFF;

	if (dotval[3])
		snprintf(buf, BRCMU_DOTREV_LEN, "%d.%d.%d.%d", dotval[0],
			dotval[1], dotval[2], dotval[3]);
	else if (dotval[2])
		snprintf(buf, BRCMU_DOTREV_LEN, "%d.%d.%d", dotval[0],
			dotval[1], dotval[2]);
	else
		snprintf(buf, BRCMU_DOTREV_LEN, "%d.%d", dotval[0],
			dotval[1]);

	return buf;
}
EXPORT_SYMBOL(brcmu_dotrev_str);

#if defined(DEBUG)
/* pretty hex print a pkt buffer chain */
void brcmu_prpkt(const char *msg, struct sk_buff *p0)
+2 −0
Original line number Diff line number Diff line
@@ -219,7 +219,9 @@ void brcmu_dbg_hex_dump(const void *data, size_t size, const char *fmt, ...)
#endif

#define BRCMU_BOARDREV_LEN	8
#define BRCMU_DOTREV_LEN	16

char *brcmu_boardrev_str(u32 brev, char *buf);
char *brcmu_dotrev_str(u32 dotrev, char *buf);

#endif				/* _BRCMU_UTILS_H_ */