Search Linux Wireless

Re: [PATCH] wifi: rtw88: Use random MAC when efuse MAC invalid

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/8/23 09:07, Chris Morgan wrote:
From: Chris Morgan <macromorgan@xxxxxxxxxxx>

When the MAC address read from the efuse data is invalid, warn the
user and use a random MAC address instead.

On a device I am currently using (Anbernic RG-ARC) with a rtw8821cs
the efuse appears to be incompletely/improperly programmed. The MAC
address reads as ff:ff:ff:ff:ff:ff. When networkmanager attempts to
initiate a connection (and I haven't hard-coded a MAC address or
set it to random) it fails to establish a connection.

Signed-off-by: Chris Morgan <macromorgan@xxxxxxxxxxx>
---
  drivers/net/wireless/realtek/rtw88/main.c | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c
index 4a33d2e47f33..6d22628129d0 100644
--- a/drivers/net/wireless/realtek/rtw88/main.c
+++ b/drivers/net/wireless/realtek/rtw88/main.c
@@ -2008,6 +2008,11 @@ static int rtw_chip_efuse_info_setup(struct rtw_dev *rtwdev)
  	efuse->ext_pa_5g = efuse->pa_type_5g & BIT(0) ? 1 : 0;
  	efuse->ext_lna_2g = efuse->lna_type_5g & BIT(3) ? 1 : 0;
+ if (!is_valid_ether_addr(efuse->addr)) {
+		eth_random_addr(efuse->addr);
+		dev_warn(rtwdev->dev, "efuse MAC invalid, using random\n");
+	}
+
  out_disable:
  	rtw_chip_efuse_disable(rtwdev);

Reviewed by Larry Finger <Larry.Finger@xxxxxxxxxxxx>

Thanks for this patch.

There are a number of SDIO devices known to me with improperly coded EFUSE values. It seems that RTW8723DS chips perform poorly even when given a valid MAC address. Is this also true for RTW8821CS chips?

Larry





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux