Commit 22509324 authored by Davide Caratti's avatar Davide Caratti Committed by Felix Fietkau
Browse files

mt76: report firmware version using ethtool



print fw_ver and build_ver members of struct mt76x02_fw_header, similarly
to what appears in the output of 'dmesg' when the MCU firmware is loaded.

Reported-by: default avatarSid Hayn <sidhayn@gmail.com>
Signed-off-by: default avatarDavide Caratti <dcaratti@redhat.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent db6bb5c6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -178,6 +178,7 @@ static int mt76x0u_load_firmware(struct mt76x0_dev *dev)
	mt76_wr(dev, MT_USB_DMA_CFG, val);

	ret = mt76x0u_upload_firmware(dev, hdr);
	mt76x02_set_ethtool_fwver(&dev->mt76, hdr);
	release_firmware(fw);

	mt76_wr(dev, MT_FCE_PSE_CTRL, 1);
+13 −0
Original line number Diff line number Diff line
@@ -211,3 +211,16 @@ int mt76x02_mcu_cleanup(struct mt76_dev *dev)
	return 0;
}
EXPORT_SYMBOL_GPL(mt76x02_mcu_cleanup);

void mt76x02_set_ethtool_fwver(struct mt76_dev *dev,
			       const struct mt76x02_fw_header *h)
{
	u16 bld = le16_to_cpu(h->build_ver);
	u16 ver = le16_to_cpu(h->fw_ver);

	snprintf(dev->hw->wiphy->fw_version,
		 sizeof(dev->hw->wiphy->fw_version),
		 "%d.%d.%02d-b%x",
		 (ver >> 12) & 0xf, (ver >> 8) & 0xf, ver & 0xf, bld);
}
EXPORT_SYMBOL_GPL(mt76x02_set_ethtool_fwver);
+2 −0
Original line number Diff line number Diff line
@@ -105,5 +105,7 @@ int mt76x02_mcu_function_select(struct mt76_dev *dev,
				u32 val, bool wait_resp);
int mt76x02_mcu_set_radio_state(struct mt76_dev *dev, bool on,
				bool wait_resp);
void mt76x02_set_ethtool_fwver(struct mt76_dev *dev,
			       const struct mt76x02_fw_header *h);

#endif /* __MT76x02_MCU_H */
+1 −0
Original line number Diff line number Diff line
@@ -154,6 +154,7 @@ mt76pci_load_firmware(struct mt76x2_dev *dev)
	}

	dev_info(dev->mt76.dev, "Firmware running!\n");
	mt76x02_set_ethtool_fwver(&dev->mt76, hdr);

	release_firmware(fw);

+1 −0
Original line number Diff line number Diff line
@@ -261,6 +261,7 @@ static int mt76x2u_mcu_load_firmware(struct mt76x2_dev *dev)
	/* enable FCE to send in-band cmd */
	mt76_wr(dev, MT_FCE_PSE_CTRL, 0x1);
	dev_dbg(dev->mt76.dev, "firmware running\n");
	mt76x02_set_ethtool_fwver(&dev->mt76, hdr);

out:
	release_firmware(fw);