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? > +start_ieee80211: > + err = ieee80211_register_hw(wl->hw); > + if (err) > + goto err_one_core_detach; > + goto out; > + > +err_one_core_detach: > + b43_one_core_detach(dev->dev); > + > out: > kfree(ctx); > - return err; > } > > static int b43_upload_microcode(struct b43_wldev *dev) Thanks, -- Julian Calaby Email: julian.calaby@xxxxxxxxx Profile: http://www.google.com/profiles/julian.calaby/ .Plan: http://sites.google.com/site/juliancalaby/ -- 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