From: Chris Morgan <[email protected]>
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 <[email protected]>
---
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);
--
2.34.1
On 12/8/23 09:07, Chris Morgan wrote:
> From: Chris Morgan <[email protected]>
>
> 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 <[email protected]>
> ---
> 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 <[email protected]>
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
On Fri, Dec 08, 2023 at 10:17:00AM -0600, Larry Finger wrote:
> On 12/8/23 09:07, Chris Morgan wrote:
> > From: Chris Morgan <[email protected]>
> >
> > 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 <[email protected]>
> > ---
> > 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 <[email protected]>
>
> 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?
The RTW8821CS I have in this specific case doesn't perform all that
well, but it also has sub-optimal antennas. I'm not noticing any major
performance difference between the devices with a valid MAC address
and the device I have without one. They're both pulling about 8MB/s
over scp on a 5GHz 802.11ac(ax wifi gateway) network.
Thank you,
Chris
>
> Larry
>
> -----Original Message-----
> From: Chris Morgan <[email protected]>
> Sent: Saturday, December 9, 2023 4:34 AM
> To: Larry Finger <[email protected]>
> Cc: Chris Morgan <[email protected]>; [email protected]; [email protected]; Ping-Ke Shih
> <[email protected]>
> Subject: Re: [PATCH] wifi: rtw88: Use random MAC when efuse MAC invalid
>
>
> On Fri, Dec 08, 2023 at 10:17:00AM -0600, Larry Finger wrote:
> > On 12/8/23 09:07, Chris Morgan wrote:
> > > From: Chris Morgan <[email protected]>
> > >
> > > 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 <[email protected]>
> > > ---
> > > 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 <[email protected]>
Acked-by: Ping-Ke Shih <[email protected]>
Patch looks good to me. At least, it can have a valid MAC address.
> >
> > 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?
>
> The RTW8821CS I have in this specific case doesn't perform all that
> well, but it also has sub-optimal antennas. I'm not noticing any major
> performance difference between the devices with a valid MAC address
> and the device I have without one. They're both pulling about 8MB/s
> over scp on a 5GHz 802.11ac(ax wifi gateway) network.
>
It seems like we still need to have a set of _default_ efuse values.
Chris Morgan <[email protected]> wrote:
> From: Chris Morgan <[email protected]>
>
> 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 <[email protected]>
> Acked-by: Ping-Ke Shih <[email protected]>
Patch applied to wireless-next.git, thanks.
0a999d82b782 wifi: rtw88: Use random MAC when efuse MAC invalid
--
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches