From: Rafał Miłecki <ra...@milecki.pl> I found handling of FW_OPT_FALLBACK a bit complex. It was defined using another option and their values were dependent on kernel config.
It was also non-trivial to follow the code. Some callers were using FW_OPT_FALLBACK which was confusing since the _request_firmware function was always checking for FW_OPT_USERHELPER (the same bit in a relevan configuration). With this patch FW_OPT_USERHELPER gets its own bit and is explicitly checked in the _request_firmware which hopefully makes code easier to understand. Signed-off-by: Rafał Miłecki <ra...@milecki.pl> --- drivers/base/firmware_class.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index 22d1760..0524f8b 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -112,13 +112,9 @@ static inline long firmware_loading_timeout(void) #else #define FW_OPT_USERHELPER 0 #endif -#ifdef CONFIG_FW_LOADER_USER_HELPER_FALLBACK -#define FW_OPT_FALLBACK FW_OPT_USERHELPER -#else -#define FW_OPT_FALLBACK 0 -#endif #define FW_OPT_NO_WARN (1U << 3) #define FW_OPT_NOCACHE (1U << 4) +#define FW_OPT_FALLBACK (1U << 5) struct firmware_cache { /* firmware_buf instance will be added into the below list */ @@ -1175,8 +1171,12 @@ _request_firmware(const struct firmware **firmware_p, const char *name, dev_warn(device, "Direct firmware load for %s failed with error %d\n", name, ret); - if (opt_flags & FW_OPT_USERHELPER) { + if (config_enabled(CONFIG_FW_LOADER_USER_HELPER_FALLBACK) && + opt_flags & FW_OPT_FALLBACK) { dev_warn(device, "Falling back to user helper\n"); + opt_flags |= FW_OPT_USERHELPER; + } + if (opt_flags & FW_OPT_USERHELPER) { ret = fw_load_from_user_helper(fw, name, device, opt_flags, timeout); } -- 2.10.1