]> git.baikalelectronics.ru Git - kernel.git/commit
b43: Fix firmware loading when driver is built into the kernel
authorLarry Finger <Larry.Finger@lwfinger.net>
Thu, 20 Dec 2012 21:55:01 +0000 (15:55 -0600)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 7 Jan 2013 19:34:45 +0000 (14:34 -0500)
commita408f8b9f3f6d98d7744c078f8c31d46c4c72974
treed338006317c3938085af5d2f9d0b94066373005f
parent16e99b61d3b9ba6482ab60f25c2a8bece55e3395
b43: Fix firmware loading when driver is built into the kernel

Recent versions of udev cause synchronous firmware loading from the
probe routine to fail because the request to user space would time
out. The original fix for b43 (commit 061833a) moved the firmware
load from the probe routine to a work queue, but it still used synchronous
firmware loading. This method is OK when b43 is built as a module;
however, it fails when the driver is compiled into the kernel.

This version changes the code to load the initial firmware file
using request_firmware_nowait(). A completion event is used to
hold the work queue until that file is available. This driver
reads several firmware files - the remainder can be read synchronously.
On some test systems, the async read fails; however, a following synch
read works, thus the async failure falls through to the sync try.

Reported-and-Tested by: Felix Janda <felix.janda@posteo.de>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Stable <stable@vger.kernel.org> (V3.4+)
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/b43/b43.h
drivers/net/wireless/b43/main.c
drivers/net/wireless/b43/main.h