diff --git a/mt76x0/usb.c b/mt76x0/usb.c index 94a29681..76d607f7 100644 --- a/mt76x0/usb.c +++ b/mt76x0/usb.c @@ -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); diff --git a/mt76x02_mcu.c b/mt76x02_mcu.c index 5a2fba34..6d565133 100644 --- a/mt76x02_mcu.c +++ b/mt76x02_mcu.c @@ -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); diff --git a/mt76x02_mcu.h b/mt76x02_mcu.h index 7bfd403f..d30a58b5 100644 --- a/mt76x02_mcu.h +++ b/mt76x02_mcu.h @@ -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 */ diff --git a/mt76x2_mcu.c b/mt76x2_mcu.c index 2b25414e..55716fd7 100644 --- a/mt76x2_mcu.c +++ b/mt76x2_mcu.c @@ -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); diff --git a/mt76x2u_mcu.c b/mt76x2u_mcu.c index fe86b9c6..fdd94cad 100644 --- a/mt76x2u_mcu.c +++ b/mt76x2u_mcu.c @@ -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);