From patchwork Mon Jul 31 08:45:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Reizer, Eyal" X-Patchwork-Id: 9871273 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id D452860375 for ; Mon, 31 Jul 2017 08:46:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C4C70285A2 for ; Mon, 31 Jul 2017 08:46:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B7516285AA; Mon, 31 Jul 2017 08:46:58 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 60EF2285A2 for ; Mon, 31 Jul 2017 08:46:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751895AbdGaIqp (ORCPT ); Mon, 31 Jul 2017 04:46:45 -0400 Received: from fllnx209.ext.ti.com ([198.47.19.16]:53909 "EHLO fllnx209.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750933AbdGaIqn (ORCPT ); Mon, 31 Jul 2017 04:46:43 -0400 Received: from dflxv15.itg.ti.com ([128.247.5.124]) by fllnx209.ext.ti.com (8.15.1/8.15.1) with ESMTP id v6V8jtfB031734; Mon, 31 Jul 2017 03:45:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ti.com; s=ti-com-17Q1; t=1501490755; bh=qv+VemEtC8/pefoyZn7g2ozP+rIsvI3NdvXEMrrscV4=; h=From:To:CC:Subject:Date:References:In-Reply-To; b=YtNufH3k8XubX+WbxYn4bvVWadxMaMleb4iaAi10uZR66cPbVY0B3HMOr4F8JMVaD LzjqHb3lDOuYxHXbeNHPXGP6dWxWHCGGXYhVQJniuDNF28NviYf3bQJpia7hFvEt/s HzWrN7Oq1PnzPsupIHtzvHJHnjsu6Co/S8p0Nixk= Received: from DFRE70.ent.ti.com (dncmailx.itg.ti.com [10.167.188.34]) by dflxv15.itg.ti.com (8.14.3/8.13.8) with ESMTP id v6V8jnZj007230; Mon, 31 Jul 2017 03:45:49 -0500 Received: from DFRE01.ent.ti.com ([fe80::b027:5293:c8d8:d82a]) by DFRE70.ent.ti.com ([fe80::645e:109b:13d3:dfa7%25]) with mapi id 14.03.0294.000; Mon, 31 Jul 2017 10:45:48 +0200 From: "Reizer, Eyal" To: Kalle Valo , ",Tony Lindgren" , "linux-wireless@vger.kernel.org" , "linux-kernel@vger.kernel.org" CC: "sebastian.reichel@collabora.co.uk" Subject: [v4] wlcore: add missing nvs file name info for wilink8 Thread-Topic: [v4] wlcore: add missing nvs file name info for wilink8 Thread-Index: AQHTCdj8st8eVKqcBkqatQUq5pUTSKJtnrUg Date: Mon, 31 Jul 2017 08:45:48 +0000 Message-ID: <8665E2433BC68541A24DFFCA87B70F5B364144B7@DFRE01.ent.ti.com> References: <1501490529-3360-1-git-send-email-eyalr@ti.com> In-Reply-To: <1501490529-3360-1-git-send-email-eyalr@ti.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.167.188.93] x-exclaimer-md-config: f9c360f5-3d1e-4c3c-8703-f45bf52eff6b MIME-Version: 1.0 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 Signed-off-by: Eyal Reizer --- 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 {