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

Commit dac10a9f authored by Holger Schurig's avatar Holger Schurig Committed by David S. Miller
Browse files

libertas: always show firmware release



Always shows the firmware release.

Also converts the firmware release into something that is easily comparable.

Signed-off-by: default avatarHolger Schurig <hs4233@mail.mn-solutions.de>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 4365929d
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -60,13 +60,24 @@ int lbs_update_hw_spec(struct lbs_private *priv)
		goto out;

	priv->fwcapinfo = le32_to_cpu(cmd.fwcapinfo);
	memcpy(priv->fwreleasenumber, cmd.fwreleasenumber, 4);

	lbs_deb_cmd("GET_HW_SPEC: firmware release %u.%u.%up%u\n",
		    priv->fwreleasenumber[2], priv->fwreleasenumber[1],
		    priv->fwreleasenumber[0], priv->fwreleasenumber[3]);
	lbs_deb_cmd("GET_HW_SPEC: MAC addr %s\n",
		    print_mac(mac, cmd.permanentaddr));
	/* The firmware release is in an interesting format: the patch
	 * level is in the most significant nibble ... so fix that: */
	priv->fwrelease = le32_to_cpu(cmd.fwrelease);
	priv->fwrelease = (priv->fwrelease << 8) |
		(priv->fwrelease >> 24 & 0xff);

	/* Some firmware capabilities:
	 * CF card    firmware 5.0.16p0:   cap 0x00000303
	 * USB dongle firmware 5.110.17p2: cap 0x00000303
	 */
	printk("libertas: %s, fw %u.%u.%up%u, cap 0x%08x\n",
		print_mac(mac, cmd.permanentaddr),
		priv->fwrelease >> 24 & 0xff,
		priv->fwrelease >> 16 & 0xff,
		priv->fwrelease >>  8 & 0xff,
		priv->fwrelease       & 0xff,
		priv->fwcapinfo);
	lbs_deb_cmd("GET_HW_SPEC: hardware interface 0x%x, hardware spec 0x%04x\n",
		    cmd.hwifversion, cmd.version);

+1 −1
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@ struct lbs_private {

	/** Wlan adapter data structure*/
	/** STATUS variables */
	u8 fwreleasenumber[4];
	u32 fwrelease;
	u32 fwcapinfo;
	/* protected with big lock */

+2 −2
Original line number Diff line number Diff line
@@ -136,8 +136,8 @@ struct cmd_ds_get_hw_spec {
	/* Number of antenna used */
	__le16 nr_antenna;

	/* FW release number, example 1,2,3,4 = 3.2.1p4 */
	u8 fwreleasenumber[4];
	/* FW release number, example 0x01030304 = 2.3.4p1 */
	__le32 fwrelease;

	/* Base Address of TxPD queue */
	__le32 wcb_base;
+5 −11
Original line number Diff line number Diff line
@@ -2071,17 +2071,11 @@ void lbs_get_fwversion(struct lbs_private *priv, char *fwversion, int maxlen)

	mutex_lock(&priv->lock);

	if (priv->fwreleasenumber[3] == 0)
		sprintf(fwver, "%u.%u.%u",
			priv->fwreleasenumber[2],
			priv->fwreleasenumber[1],
			priv->fwreleasenumber[0]);
	else
	sprintf(fwver, "%u.%u.%u.p%u",
			priv->fwreleasenumber[2],
			priv->fwreleasenumber[1],
			priv->fwreleasenumber[0],
			priv->fwreleasenumber[3]);
		priv->fwrelease >> 24 & 0xff,
		priv->fwrelease >> 16 & 0xff,
		priv->fwrelease >>  8 & 0xff,
		priv->fwrelease       & 0xff);

	mutex_unlock(&priv->lock);
	snprintf(fwversion, maxlen, fwver);