From: Arend Van Spriel <arend.vanspriel@broadcom.com>
To: "Pali Rohár" <pali.rohar@gmail.com>,
"Ming Lei" <ming.lei@canonical.com>,
"Luis R. Rodriguez" <mcgrof@kernel.org>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Kalle Valo" <kvalo@codeaurora.org>,
"David Gnedt" <david.gnedt@davizone.at>,
"Michal Kazior" <michal.kazior@tieto.com>,
"Daniel Wagner" <wagi@monom.org>,
"Tony Lindgren" <tony@atomide.com>,
"Sebastian Reichel" <sre@kernel.org>,
"Pavel Machek" <pavel@ucw.cz>,
"Ivaylo Dimitrov" <ivo.g.dimitrov.75@gmail.com>,
"Aaro Koskinen" <aaro.koskinen@iki.fi>,
"Grazvydas Ignotas" <notasas@gmail.com>
Cc: linux-kernel@vger.kernel.org, linux-wireless@vger.kernel.org,
netdev@vger.kernel.org
Subject: Re: [PATCH 2/6] wl1251: Use request_firmware_prefer_user() for loading NVS calibration data
Date: Sun, 25 Dec 2016 21:15:40 +0100 [thread overview]
Message-ID: <e728586e-80bf-c9e0-0063-71da4c4aba85@broadcom.com> (raw)
In-Reply-To: <1482598381-16513-3-git-send-email-pali.rohar@gmail.com>
On 24-12-2016 17:52, Pali Rohár wrote:
> NVS calibration data for wl1251 are model specific. Every one device with
> wl1251 chip has different and calibrated in factory.
>
> Not all wl1251 chips have own EEPROM where are calibration data stored. And
> in that case there is no "standard" place. Every device has stored them on
> different place (some in rootfs file, some in dedicated nand partition,
> some in another proprietary structure).
>
> Kernel wl1251 driver cannot support every one different storage decided by
> device manufacture so it will use request_firmware_prefer_user() call for
> loading NVS calibration data and userspace helper will be responsible to
> prepare correct data.
Responding to this patch as it provides a lot of context to discuss. As
you might have gathered from earlier discussions I am not a fan of using
user-space helper. I can agree that the kernel driver, wl1251 in this
case, should be agnostic to platform specific details regarding storage
solutions and the firmware api should hide that. However, it seems your
only solution is adding user-space to the mix and changing the api
towards that. Can we solve it without user-space help?
The firmware_class already supports a number of path prefixes it
traverses looking for the requested firmware. So I was thinking about
adding a hashtable in which a platform driver can add firmware which are
stored in the hashtable using the hashed firmware name. Upon a firmware
request from the driver we could check the hashtable before traversing
the path prefixes on VFS. The obvious problem is that the request may
come before the firmware is added to the hashtable. Just wanted to pitch
the idea first and hear what others think about it and maybe someone has
a nice solution for this problem. Fingers crossed :-p
> In case userspace helper fails request_firmware_prefer_user() still try to
> load data file directly from VFS as fallback mechanism.
>
> On Nokia N900 device which has wl1251 chip, NVS calibration data are stored
> in CAL nand partition. CAL is proprietary Nokia key/value format for nand
> devices.
With the firmware hashtable api on N900 a platform driver could
interpret the CAL data in the nand partition and provide it through the
firmware_class.
> With this patch it is finally possible to load correct model specific NVS
> calibration data for Nokia N900.
But on other devices that use wl1251, but for instance have no userspace
helper the request to userspace will fail (after 60 sec?) and try VFS
after that. Maybe not so nice. You should consider other device
configurations. Not just N900.
Regards,
Arend
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> ---
> drivers/net/wireless/ti/wl1251/Kconfig | 1 +
> drivers/net/wireless/ti/wl1251/main.c | 2 +-
> 2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ti/wl1251/Kconfig b/drivers/net/wireless/ti/wl1251/Kconfig
> index 7142ccf..affe154 100644
> --- a/drivers/net/wireless/ti/wl1251/Kconfig
> +++ b/drivers/net/wireless/ti/wl1251/Kconfig
> @@ -2,6 +2,7 @@ config WL1251
> tristate "TI wl1251 driver support"
> depends on MAC80211
> select FW_LOADER
> + select FW_LOADER_USER_HELPER
> select CRC7
> ---help---
> This will enable TI wl1251 driver support. The drivers make
> diff --git a/drivers/net/wireless/ti/wl1251/main.c b/drivers/net/wireless/ti/wl1251/main.c
> index 208f062..24f8866 100644
> --- a/drivers/net/wireless/ti/wl1251/main.c
> +++ b/drivers/net/wireless/ti/wl1251/main.c
> @@ -110,7 +110,7 @@ static int wl1251_fetch_nvs(struct wl1251 *wl)
> struct device *dev = wiphy_dev(wl->hw->wiphy);
> int ret;
>
> - ret = request_firmware(&fw, WL1251_NVS_NAME, dev);
> + ret = request_firmware_prefer_user(&fw, WL1251_NVS_NAME, dev);
>
> if (ret < 0) {
> wl1251_error("could not get nvs file: %d", ret);
>
next prev parent reply other threads:[~2016-12-25 20:15 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-24 16:52 [PATCH 0/6] wl1251: Fix MAC address for Nokia N900 Pali Rohár
2016-12-24 16:52 ` [PATCH 1/6] firmware: Add request_firmware_prefer_user() function Pali Rohár
2016-12-24 16:52 ` [PATCH 2/6] wl1251: Use request_firmware_prefer_user() for loading NVS calibration data Pali Rohár
2016-12-25 20:15 ` Arend Van Spriel [this message]
2016-12-25 20:46 ` Pali Rohár
2016-12-26 15:43 ` Pavel Machek
2016-12-26 16:04 ` Pali Rohár
2016-12-26 16:35 ` Pavel Machek
2017-01-03 17:59 ` Luis R. Rodriguez
2017-05-03 19:02 ` Arend Van Spriel
2017-05-04 2:28 ` Luis R. Rodriguez
2017-05-12 20:55 ` Arend Van Spriel
2017-01-27 7:33 ` Kalle Valo
2017-01-27 8:58 ` Arend Van Spriel
2017-01-27 9:43 ` Pali Rohár
2017-01-27 10:05 ` Arend Van Spriel
2017-01-27 10:10 ` Pali Rohár
2017-01-27 10:19 ` Arend Van Spriel
2017-01-27 10:34 ` Pali Rohár
2017-01-27 11:49 ` Kalle Valo
2017-01-27 11:57 ` Pali Rohár
2017-01-27 12:26 ` Kalle Valo
2017-01-27 12:53 ` Arend Van Spriel
2017-01-27 13:16 ` Pali Rohár
2017-01-27 13:11 ` Pali Rohár
2017-01-27 15:23 ` Kalle Valo
2017-01-27 15:41 ` Pali Rohár
2017-01-27 19:40 ` Pavel Machek
2017-01-30 17:53 ` Tony Lindgren
2017-01-30 18:03 ` Pali Rohár
2017-01-31 6:35 ` Kalle Valo
2017-01-31 15:59 ` Tony Lindgren
2017-02-01 8:33 ` Pali Rohár
2017-02-01 9:35 ` Michal Kazior
2017-01-29 17:10 ` Luis R. Rodriguez
2017-01-27 12:03 ` Pavel Machek
2016-12-24 16:52 ` [PATCH 3/6] wl1251: Update wl->nvs_len after wl->nvs is valid Pali Rohár
2016-12-24 18:02 ` Pavel Machek
2016-12-24 16:52 ` [PATCH 4/6] wl1251: Generate random MAC address only if driver does not have valid Pali Rohár
2016-12-24 18:08 ` Pavel Machek
2016-12-24 18:38 ` Pali Rohár
2016-12-24 16:53 ` [PATCH 5/6] wl1251: Parse and use MAC address from supplied NVS data Pali Rohár
2016-12-24 18:14 ` Pavel Machek
2016-12-24 18:40 ` Pali Rohár
2017-01-27 7:54 ` Kalle Valo
2016-12-24 16:53 ` [PATCH 6/6] wl1251: Set generated MAC address back to " Pali Rohár
2016-12-24 18:17 ` Pavel Machek
2016-12-24 18:44 ` Pali Rohár
2017-01-27 7:56 ` Kalle Valo
2017-01-27 9:05 ` Pali Rohár
2017-01-27 9:30 ` Kalle Valo
2017-11-09 23:38 ` [PATCH v2 0/6] wl1251: Fix MAC address for Nokia N900 Pali Rohár
2017-11-09 23:38 ` [PATCH v2 1/6] wl1251: Update wl->nvs_len after wl->nvs is valid Pali Rohár
2018-02-27 13:51 ` [v2,1/6] " Kalle Valo
2018-02-27 13:51 ` Kalle Valo
2017-11-09 23:38 ` [PATCH v2 2/6] wl1251: Generate random MAC address only if driver does not have valid Pali Rohár
2017-11-09 23:38 ` [PATCH v2 3/6] wl1251: Parse and use MAC address from supplied NVS data Pali Rohár
2017-11-09 23:38 ` [PATCH v2 4/6] wl1251: Set generated MAC address back to " Pali Rohár
2017-11-09 23:38 ` [PATCH v2 5/6] firmware: Add request_firmware_prefer_user() function Pali Rohár
2017-11-10 20:26 ` Luis R. Rodriguez
2017-11-10 20:28 ` Luis R. Rodriguez
2017-11-10 21:08 ` Pali Rohár
2017-11-10 23:35 ` Luis R. Rodriguez
2017-11-09 23:38 ` [PATCH v2 6/6] wl1251: Use request_firmware_prefer_user() for loading NVS calibration data Pali Rohár
2018-01-02 19:23 ` [PATCH v2 0/6] wl1251: Fix MAC address for Nokia N900 Pali Rohár
2018-01-05 1:45 ` Luis R. Rodriguez
2018-01-27 14:14 ` Pali Rohár
2018-02-19 8:27 ` Kalle Valo
[not found] <0fd90416-f33c-a6be-14fd-5e964583e9cb@broadcom.com>
2017-05-15 23:13 ` [PATCH 2/6] wl1251: Use request_firmware_prefer_user() for loading NVS calibration data Luis R. Rodriguez
2017-05-16 8:41 ` Arend Van Spriel
2017-05-16 23:57 ` Luis R. Rodriguez
2017-06-23 21:53 ` Luis R. Rodriguez
2017-06-30 21:35 ` Arend van Spriel
2017-08-10 19:43 ` Luis R. Rodriguez
2017-05-17 12:06 ` Johannes Berg
2017-05-17 12:53 ` Pali Rohár
2017-05-17 13:04 ` Johannes Berg
2017-05-17 13:21 ` Pali Rohár
2017-05-17 13:22 ` Johannes Berg
2017-05-18 0:08 ` Bjorn Andersson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e728586e-80bf-c9e0-0063-71da4c4aba85@broadcom.com \
--to=arend.vanspriel@broadcom.com \
--cc=aaro.koskinen@iki.fi \
--cc=david.gnedt@davizone.at \
--cc=gregkh@linuxfoundation.org \
--cc=ivo.g.dimitrov.75@gmail.com \
--cc=kvalo@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=michal.kazior@tieto.com \
--cc=ming.lei@canonical.com \
--cc=netdev@vger.kernel.org \
--cc=notasas@gmail.com \
--cc=pali.rohar@gmail.com \
--cc=pavel@ucw.cz \
--cc=sre@kernel.org \
--cc=tony@atomide.com \
--cc=wagi@monom.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®