From: Sukesh Srikakula Date: Fri, 13 May 2011 09:59:49 +0000 (+0200) Subject: staging: brcm80211: cfg80211 up/down routines in brcmfmac driver are fixed X-Git-Tag: v3.0-rc1~336^2~225 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=65dd489204ffc7da8b8fd366a7ef7016db506bf2;p=karo-tx-linux.git staging: brcm80211: cfg80211 up/down routines in brcmfmac driver are fixed '__wl_cfg80211_up' & '__wl_cfg80211_down' routines are updated to correctly set the 'wl->status' variable. Cc: devel@linuxdriverproject.org Cc: linux-wireless@vger.kernel.org Reviewed-by: Franky (Zhenhui) Lin Reviewed-by: Brett Rudley Signed-off-by: Arend van Spriel Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c index eb7f611b93ef..03f6c2052f79 100644 --- a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c @@ -3391,7 +3391,6 @@ s32 wl_cfg80211_attach(struct net_device *ndev, void *data) goto cfg80211_attach_out; } wl_set_drvdata(wl_cfg80211_dev, ci); - set_bit(WL_STATUS_READY, &wl->status); return err; @@ -4021,6 +4020,8 @@ static s32 __wl_cfg80211_up(struct wl_priv *wl) { s32 err = 0; + set_bit(WL_STATUS_READY, &wl->status); + wl_debugfs_add_netdev_params(wl); err = wl_config_dongle(wl, false); @@ -4028,41 +4029,29 @@ static s32 __wl_cfg80211_up(struct wl_priv *wl) return err; wl_invoke_iscan(wl); - set_bit(WL_STATUS_READY, &wl->status); + return err; } static s32 __wl_cfg80211_down(struct wl_priv *wl) { - s32 err = 0; - - /* Check if cfg80211 interface is already down */ - if (!test_bit(WL_STATUS_READY, &wl->status)) - return err; /* it is even not ready */ - set_bit(WL_STATUS_SCAN_ABORTING, &wl->status); wl_term_iscan(wl); if (wl->scan_request) { - cfg80211_scan_done(wl->scan_request, true); /* true - means abort */ - /* wl_set_mpc(wl_to_ndev(wl), 1); */ /* BUG - * this operation cannot help - * but here because sdio - * is already down through - * rmmod process. - * Need to figure out how to - * address this issue - */ + cfg80211_scan_done(wl->scan_request, true); + /* May need to perform this to cover rmmod */ + /* wl_set_mpc(wl_to_ndev(wl), 1); */ wl->scan_request = NULL; } clear_bit(WL_STATUS_READY, &wl->status); clear_bit(WL_STATUS_SCANNING, &wl->status); clear_bit(WL_STATUS_SCAN_ABORTING, &wl->status); + clear_bit(WL_STATUS_CONNECTING, &wl->status); clear_bit(WL_STATUS_CONNECTED, &wl->status); wl_debugfs_remove_netdev(wl); - return err; + return 0; } s32 wl_cfg80211_up(void)