On 02/13/2012 05:41 PM, Julian Calaby wrote:
Hi Larry,
On Tue, Feb 14, 2012 at 10:28, Larry Finger<Larry.Finger@xxxxxxxxxxxx> wrote:
On 02/13/2012 05:06 PM, Julian Calaby wrote:
Hi Larry,
On Tue, Feb 14, 2012 at 06:37, Larry Finger<Larry.Finger@xxxxxxxxxxxx>
wrote:
Recent changes in udev are causing problems for drivers that load
firmware
from the probe routine. As b43 has such a structure, it must be changed.
As this driver loads more than 1 firmware file, changing to the
asynchronous routine
request_firmware_nowait() would be complicated. In this implementation,
the probe
routine starts a delayed_work queue that calls the firmware loading
routines when
the delay (1 sec) expires..
Signed-off-by: Larry Finger<Larry.Finger@xxxxxxxxxxxx>
---
diff --git a/drivers/net/wireless/b43/b43.h
b/drivers/net/wireless/b43/b43.h
index 835462d..532ba79 100644
--- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h
@@ -932,6 +932,9 @@ struct b43_wl {
/* Flag that implement the queues stopping. */
bool tx_queue_stopped[B43_QOS_QUEUE_NUM];
+ /* delayed firmware loading */
+ struct delayed_work firmware_load;
+
/* The device LEDs. */
struct b43_leds leds;
diff --git a/drivers/net/wireless/b43/main.c
b/drivers/net/wireless/b43/main.c
index 1b540d2..903e1ea 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -2427,9 +2433,17 @@ static int b43_request_firmware(struct b43_wldev
*dev)
b43_print_fw_helptext(dev->wl, 1);
err = -ENOENT;
Should something be done here rather than immediately going to
register the card with ieee80211?
I don't think so. When firmware is loaded from the probe routine, it
registers the card as the next step. I did miss the step that registers the
leds - that has now been added.
My point here is that in the original flow, the -ENOENT would have
been returned to b43_chip_init() and the hardware would never have
been registered with mac80211. After this patch, it appears that if
the firmware cannot be found, it still registers the hardware with
mac80211.
I see what you mean. The statement before the start_ieee80211 label should be
'goto out' rather than falling through.
Larry
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html