[PATCH] libertas: fix oops on module unload

Dan Williams dcbw at redhat.com
Mon Aug 20 11:49:46 EDT 2007


On Fri, 2007-08-03 at 20:10 -0400, Marcelo Tosatti wrote:
> Dan,
> 
> Can you please apply this to libertas-2.6 and push it upstream? 
> 
> ------------
> 
> Resetting the wireless device via EC GPIO causes a USB reconnect event,
> which confuses the USB stack while we're running the ->disconnect
> method.
> 
> Its not necessary to do it in the module exit path since thats done at
> probe time in case firmware init fails.

This looks exactly like what libertas_reset_device() does, except that
it ignores the msleep(10).  Is the msleep(10) the problem here?

Dan

> Signed-off-by: Marcelo Tosatti <mtosatti at redhat.com>
> 
> 
> diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c
> index 80aca9f..73d444f 100644
> --- a/drivers/net/wireless/libertas/if_usb.c
> +++ b/drivers/net/wireless/libertas/if_usb.c
> @@ -1138,7 +1138,8 @@ static void if_usb_exit_module(void)
>  	lbs_deb_enter(LBS_DEB_MAIN);
>  
>  	list_for_each_entry_safe(cardp, cardp_temp, &usb_devices, list)
> -		libertas_reset_device((wlan_private *) cardp->priv);
> +		libertas_prepare_and_send_command(cardp->priv, CMD_802_11_RESET,
> +			CMD_ACT_HALT, 0, 0, NULL);
>  
>  	/* API unregisters the driver from USB subsystem */
>  	usb_deregister(&if_usb_driver);




More information about the libertas-dev mailing list