* [v3] wlcore: add missing nvs file name info for wilink8
@ 2017-07-20 12:16 Reizer, Eyal
2017-07-25 10:22 ` Tony Lindgren
0 siblings, 1 reply; 4+ messages in thread
From: Reizer, Eyal @ 2017-07-20 12:16 UTC (permalink / raw)
To: Kalle Valo, ,Tony Lindgren, linux-wireless@vger.kernel.org,
linux-kernel@vger.kernel.org
Cc: sebastian.reichel@collabora.co.uk
The following commits:
c815fde wlcore: spi: Populate config firmware data
d776fc8 wlcore: sdio: Populate config firmware data
Populated the nvs entry for wilink6 and wilink7 only while it is
still needed for wilink8 as well.
This broke user space backward compatibility when upgrading from older
kernels, as the alternate mac address would not be read from the nvs that is
already present in the file system (lib/firmware/ti-connectivity/wl1271-nvs.bin)
causing mac address change of the wlan interface.
This patch fix this and update the structure field with the same default nvs file
name that has been used before.
In addition, some distros hold a default wl1271-nvs.bin in the file
system with a bogus mac address (deadbeef...) that for a wl18xx device
also overrides the mac address that is stored inside the device.
Warn users about this bogus mac address.
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Eyal Reizer <eyalr@ti.com>
---
v2->v3: add a check for default deadbeef... mac address and warn about it
drivers/net/wireless/ti/wlcore/main.c | 10 ++++++++++
drivers/net/wireless/ti/wlcore/sdio.c | 1 +
drivers/net/wireless/ti/wlcore/spi.c | 1 +
3 files changed, 12 insertions(+)
diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c
index 60aaa85..37c35aa 100644
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
@@ -5961,6 +5961,16 @@ static void wl12xx_derive_mac_addresses(struct wl1271 *wl, u32 oui, u32 nic)
if (nic + WLCORE_NUM_MAC_ADDRESSES - wl->num_mac_addr > 0xffffff)
wl1271_warning("NIC part of the MAC address wraps around!");
+ if (oui == 0xdeadbe && nic == 0xef0000)
+ wl1271_warning("Detected unconfigured mac address in nvs.\n"
+ "in case of using a wl12xx device, your "
+ "device performance may not be optimized.\n"
+ "Please use the calibrator tool to configure "
+ "your device.\n"
+ "When using a wl18xx device the nvs file can "
+ "be removed as a default mac address is "
+ "stored internally.\n");
+
for (i = 0; i < wl->num_mac_addr; i++) {
wl->addresses[i].addr[0] = (u8)(oui >> 16);
wl->addresses[i].addr[1] = (u8)(oui >> 8);
diff --git a/drivers/net/wireless/ti/wlcore/sdio.c b/drivers/net/wireless/ti/wlcore/sdio.c
index 2fb3871..f8a1fea 100644
--- a/drivers/net/wireless/ti/wlcore/sdio.c
+++ b/drivers/net/wireless/ti/wlcore/sdio.c
@@ -230,6 +230,7 @@ static const struct wilink_family_data wl128x_data = {
static const struct wilink_family_data wl18xx_data = {
.name = "wl18xx",
.cfg_name = "ti-connectivity/wl18xx-conf.bin",
+ .nvs_name = "ti-connectivity/wl1271-nvs.bin",
};
static const struct of_device_id wlcore_sdio_of_match_table[] = {
diff --git a/drivers/net/wireless/ti/wlcore/spi.c b/drivers/net/wireless/ti/wlcore/spi.c
index fdabb92..62ce54a 100644
--- a/drivers/net/wireless/ti/wlcore/spi.c
+++ b/drivers/net/wireless/ti/wlcore/spi.c
@@ -92,6 +92,7 @@ static const struct wilink_family_data wl128x_data = {
static const struct wilink_family_data wl18xx_data = {
.name = "wl18xx",
.cfg_name = "ti-connectivity/wl18xx-conf.bin",
+ .nvs_name = "ti-connectivity/wl1271-nvs.bin",
};
struct wl12xx_spi_glue {
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [v3] wlcore: add missing nvs file name info for wilink8
2017-07-20 12:16 [v3] wlcore: add missing nvs file name info for wilink8 Reizer, Eyal
@ 2017-07-25 10:22 ` Tony Lindgren
2017-07-25 11:32 ` Reizer, Eyal
0 siblings, 1 reply; 4+ messages in thread
From: Tony Lindgren @ 2017-07-25 10:22 UTC (permalink / raw)
To: Reizer, Eyal
Cc: Kalle Valo, linux-wireless@vger.kernel.org,
linux-kernel@vger.kernel.org, sebastian.reichel@collabora.co.uk
* Reizer, Eyal <eyalr@ti.com> [170720 05:17]:
> The following commits:
> c815fde wlcore: spi: Populate config firmware data
> d776fc8 wlcore: sdio: Populate config firmware data
>
> Populated the nvs entry for wilink6 and wilink7 only while it is
> still needed for wilink8 as well.
> This broke user space backward compatibility when upgrading from older
> kernels, as the alternate mac address would not be read from the nvs that is
> already present in the file system (lib/firmware/ti-connectivity/wl1271-nvs.bin)
> causing mac address change of the wlan interface.
>
> This patch fix this and update the structure field with the same default nvs file
> name that has been used before.
>
> In addition, some distros hold a default wl1271-nvs.bin in the file
> system with a bogus mac address (deadbeef...) that for a wl18xx device
> also overrides the mac address that is stored inside the device.
> Warn users about this bogus mac address.
>
> Cc: stable <stable@vger.kernel.org>
> Signed-off-by: Eyal Reizer <eyalr@ti.com>
> ---
> v2->v3: add a check for default deadbeef... mac address and warn about it
>
> drivers/net/wireless/ti/wlcore/main.c | 10 ++++++++++
> drivers/net/wireless/ti/wlcore/sdio.c | 1 +
> drivers/net/wireless/ti/wlcore/spi.c | 1 +
> 3 files changed, 12 insertions(+)
>
> diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c
> index 60aaa85..37c35aa 100644
> --- a/drivers/net/wireless/ti/wlcore/main.c
> +++ b/drivers/net/wireless/ti/wlcore/main.c
> @@ -5961,6 +5961,16 @@ static void wl12xx_derive_mac_addresses(struct wl1271 *wl, u32 oui, u32 nic)
> if (nic + WLCORE_NUM_MAC_ADDRESSES - wl->num_mac_addr > 0xffffff)
> wl1271_warning("NIC part of the MAC address wraps around!");
>
> + if (oui == 0xdeadbe && nic == 0xef0000)
> + wl1271_warning("Detected unconfigured mac address in nvs.\n"
> + "in case of using a wl12xx device, your "
> + "device performance may not be optimized.\n"
> + "Please use the calibrator tool to configure "
> + "your device.\n"
> + "When using a wl18xx device the nvs file can "
> + "be removed as a default mac address is "
> + "stored internally.\n");
> +
> for (i = 0; i < wl->num_mac_addr; i++) {
> wl->addresses[i].addr[0] = (u8)(oui >> 16);
> wl->addresses[i].addr[1] = (u8)(oui >> 8);
Hmm so why would we ever even use this bogus nvs file? In addition to warning,
I think we should just ignore the bogus nvs file completely.
Regards,
Tony
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [v3] wlcore: add missing nvs file name info for wilink8
2017-07-25 10:22 ` Tony Lindgren
@ 2017-07-25 11:32 ` Reizer, Eyal
2017-07-25 11:58 ` Tony Lindgren
0 siblings, 1 reply; 4+ messages in thread
From: Reizer, Eyal @ 2017-07-25 11:32 UTC (permalink / raw)
To: Tony Lindgren
Cc: Kalle Valo, linux-wireless@vger.kernel.org,
linux-kernel@vger.kernel.org, sebastian.reichel@collabora.co.uk
> -----Original Message-----
> From: Tony Lindgren [mailto:tony@atomide.com]
> Sent: Tuesday, July 25, 2017 1:22 PM
> To: Reizer, Eyal
> Cc: Kalle Valo; linux-wireless@vger.kernel.org; linux-kernel@vger.kernel.org;
> sebastian.reichel@collabora.co.uk
> Subject: Re: [v3] wlcore: add missing nvs file name info for wilink8
>
> * Reizer, Eyal <eyalr@ti.com> [170720 05:17]:
> > The following commits:
> > c815fde wlcore: spi: Populate config firmware data
> > d776fc8 wlcore: sdio: Populate config firmware data
> >
> > Populated the nvs entry for wilink6 and wilink7 only while it is
> > still needed for wilink8 as well.
> > This broke user space backward compatibility when upgrading from older
> > kernels, as the alternate mac address would not be read from the nvs that is
> > already present in the file system (lib/firmware/ti-connectivity/wl1271-
> nvs.bin)
> > causing mac address change of the wlan interface.
> >
> > This patch fix this and update the structure field with the same default nvs
> file
> > name that has been used before.
> >
> > In addition, some distros hold a default wl1271-nvs.bin in the file
> > system with a bogus mac address (deadbeef...) that for a wl18xx device
> > also overrides the mac address that is stored inside the device.
> > Warn users about this bogus mac address.
> >
> > Cc: stable <stable@vger.kernel.org>
> > Signed-off-by: Eyal Reizer <eyalr@ti.com>
> > ---
> > v2->v3: add a check for default deadbeef... mac address and warn about it
> >
> > drivers/net/wireless/ti/wlcore/main.c | 10 ++++++++++
> > drivers/net/wireless/ti/wlcore/sdio.c | 1 +
> > drivers/net/wireless/ti/wlcore/spi.c | 1 +
> > 3 files changed, 12 insertions(+)
> >
> > diff --git a/drivers/net/wireless/ti/wlcore/main.c
> b/drivers/net/wireless/ti/wlcore/main.c
> > index 60aaa85..37c35aa 100644
> > --- a/drivers/net/wireless/ti/wlcore/main.c
> > +++ b/drivers/net/wireless/ti/wlcore/main.c
> > @@ -5961,6 +5961,16 @@ static void wl12xx_derive_mac_addresses(struct
> wl1271 *wl, u32 oui, u32 nic)
> > if (nic + WLCORE_NUM_MAC_ADDRESSES - wl->num_mac_addr >
> 0xffffff)
> > wl1271_warning("NIC part of the MAC address wraps
> around!");
> >
> > + if (oui == 0xdeadbe && nic == 0xef0000)
> > + wl1271_warning("Detected unconfigured mac address in
> nvs.\n"
> > + "in case of using a wl12xx device, your "
> > + "device performance may not be optimized.\n"
> > + "Please use the calibrator tool to configure "
> > + "your device.\n"
> > + "When using a wl18xx device the nvs file can "
> > + "be removed as a default mac address is "
> > + "stored internally.\n");
> > +
> > for (i = 0; i < wl->num_mac_addr; i++) {
> > wl->addresses[i].addr[0] = (u8)(oui >> 16);
> > wl->addresses[i].addr[1] = (u8)(oui >> 8);
>
> Hmm so why would we ever even use this bogus nvs file? In addition to
> warning,
> I think we should just ignore the bogus nvs file completely.
>
While it looks bogus, it is still at least a valid mac address and the chip will function
Using it.
Wilink6/7 doesn't have a default mac address in hardware (wilink8 does have one)
so we need to assign one for it so It can work, even if not optimally until configured
using the calibrator tool and a unique mac address is assigned to it.
Best Regards,
Eyal
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [v3] wlcore: add missing nvs file name info for wilink8
2017-07-25 11:32 ` Reizer, Eyal
@ 2017-07-25 11:58 ` Tony Lindgren
0 siblings, 0 replies; 4+ messages in thread
From: Tony Lindgren @ 2017-07-25 11:58 UTC (permalink / raw)
To: Reizer, Eyal
Cc: Kalle Valo, linux-wireless@vger.kernel.org,
linux-kernel@vger.kernel.org, sebastian.reichel@collabora.co.uk
* Reizer, Eyal <eyalr@ti.com> [170725 04:33]:
> > From: Tony Lindgren [mailto:tony@atomide.com]
> > Hmm so why would we ever even use this bogus nvs file? In addition to
> > warning,
> > I think we should just ignore the bogus nvs file completely.
> >
> While it looks bogus, it is still at least a valid mac address and the chip will function
> Using it.
> Wilink6/7 doesn't have a default mac address in hardware (wilink8 does have one)
> so we need to assign one for it so It can work, even if not optimally until configured
> using the calibrator tool and a unique mac address is assigned to it.
But it's not a unique mac address. What we should do in that case is
use a random mac address just like many USB devices do.
Regards,
Tony
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-07-25 11:58 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-20 12:16 [v3] wlcore: add missing nvs file name info for wilink8 Reizer, Eyal
2017-07-25 10:22 ` Tony Lindgren
2017-07-25 11:32 ` Reizer, Eyal
2017-07-25 11:58 ` Tony Lindgren
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox