Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1699823 > unrolled thread

[v4] wlcore: add missing nvs file name info for wilink8

Started by"Reizer, Eyal" <eyalr@ti.com>
First post2017-07-31 10:50 +0200
Last post2017-08-07 09:40 +0200
Articles 3 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [v4] wlcore: add missing nvs file name info for wilink8 "Reizer, Eyal" <eyalr@ti.com> - 2017-07-31 10:50 +0200
    Re: [v4] wlcore: add missing nvs file name info for wilink8 Julian Calaby <julian.calaby@gmail.com> - 2017-08-05 08:00 +0200
      RE: [v4] wlcore: add missing nvs file name info for wilink8 "Reizer, Eyal" <eyalr@ti.com> - 2017-08-07 09:40 +0200

#1699823 — [v4] wlcore: add missing nvs file name info for wilink8

From"Reizer, Eyal" <eyalr@ti.com>
Date2017-07-31 10:50 +0200
Subject[v4] wlcore: add missing nvs file name info for wilink8
Message-ID<u9eyK-40A-19@gated-at.bofh.it>
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 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 and use a random mac instead

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
v3->v4: use a random TI mac address instead of the bogus one

---
 drivers/net/wireless/ti/wlcore/main.c | 16 ++++++++++++++++
 drivers/net/wireless/ti/wlcore/sdio.c |  1 +
 drivers/net/wireless/ti/wlcore/spi.c  |  1 +
 3 files changed, 18 insertions(+)

diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c
index 60aaa85..7ce4221 100644
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
@@ -5961,6 +5961,22 @@ 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"
+				"Using a random TI mac address instead.\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");
+
+		/* Use TI oui and a random nic */
+		oui = 0x080028;
+		nic = get_random_int();
+	}
+
 	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

[toc] | [next] | [standalone]


#1704577

FromJulian Calaby <julian.calaby@gmail.com>
Date2017-08-05 08:00 +0200
Message-ID<ub0hY-Fk-5@gated-at.bofh.it>
In reply to#1699823
Hi Eyal,

On Mon, Jul 31, 2017 at 6:45 PM, Reizer, Eyal <eyalr@ti.com> wrote:
> 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 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 and use a random mac instead
>
> Cc: stable <stable@vger.kernel.org>
> Signed-off-by: Eyal Reizer <eyalr@ti.com>
> ---
>
> diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c
> index 60aaa85..7ce4221 100644
> --- a/drivers/net/wireless/ti/wlcore/main.c
> +++ b/drivers/net/wireless/ti/wlcore/main.c
> @@ -5961,6 +5961,22 @@ 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"
> +                               "Using a random TI mac address instead.\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");
> +
> +               /* Use TI oui and a random nic */
> +               oui = 0x080028;

Is there (or should there be) a constant for this?

Thanks,

-- 
Julian Calaby

Email: julian.calaby@gmail.com
Profile: http://www.google.com/profiles/julian.calaby/

[toc] | [prev] | [next] | [standalone]


#1705176

From"Reizer, Eyal" <eyalr@ti.com>
Date2017-08-07 09:40 +0200
Message-ID<ubKNR-5gB-33@gated-at.bofh.it>
In reply to#1704577

> -----Original Message-----
> From: Julian Calaby [mailto:julian.calaby@gmail.com]
> Sent: Saturday, August 5, 2017 8:51 AM
> To: Reizer, Eyal
> Cc: Kalle Valo; ,Tony Lindgren; linux-wireless@vger.kernel.org; linux-
> kernel@vger.kernel.org; sebastian.reichel@collabora.co.uk
> Subject: Re: [v4] wlcore: add missing nvs file name info for wilink8
> 
> Hi Eyal,
> 
> On Mon, Jul 31, 2017 at 6:45 PM, Reizer, Eyal <eyalr@ti.com> wrote:
> > 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 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 and use a random mac instead
> >
> > Cc: stable <stable@vger.kernel.org>
> > Signed-off-by: Eyal Reizer <eyalr@ti.com>
> > ---
> >
> > diff --git a/drivers/net/wireless/ti/wlcore/main.c
> b/drivers/net/wireless/ti/wlcore/main.c
> > index 60aaa85..7ce4221 100644
> > --- a/drivers/net/wireless/ti/wlcore/main.c
> > +++ b/drivers/net/wireless/ti/wlcore/main.c
> > @@ -5961,6 +5961,22 @@ 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"
> > +                               "Using a random TI mac address instead.\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");
> > +
> > +               /* Use TI oui and a random nic */
> > +               oui = 0x080028;
> 
> Is there (or should there be) a constant for this?

Thanks for the comment. Submitting v5 fixing this.

Best Regards,
Eyal

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web