Commit 65dd4892 authored by Sukesh Srikakula's avatar Sukesh Srikakula Committed by Greg Kroah-Hartman

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: default avatarFranky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: default avatarBrett Rudley <brudley@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 1f3b0085
...@@ -3391,7 +3391,6 @@ s32 wl_cfg80211_attach(struct net_device *ndev, void *data) ...@@ -3391,7 +3391,6 @@ s32 wl_cfg80211_attach(struct net_device *ndev, void *data)
goto cfg80211_attach_out; goto cfg80211_attach_out;
} }
wl_set_drvdata(wl_cfg80211_dev, ci); wl_set_drvdata(wl_cfg80211_dev, ci);
set_bit(WL_STATUS_READY, &wl->status);
return err; return err;
...@@ -4021,6 +4020,8 @@ static s32 __wl_cfg80211_up(struct wl_priv *wl) ...@@ -4021,6 +4020,8 @@ static s32 __wl_cfg80211_up(struct wl_priv *wl)
{ {
s32 err = 0; s32 err = 0;
set_bit(WL_STATUS_READY, &wl->status);
wl_debugfs_add_netdev_params(wl); wl_debugfs_add_netdev_params(wl);
err = wl_config_dongle(wl, false); err = wl_config_dongle(wl, false);
...@@ -4028,41 +4029,29 @@ static s32 __wl_cfg80211_up(struct wl_priv *wl) ...@@ -4028,41 +4029,29 @@ static s32 __wl_cfg80211_up(struct wl_priv *wl)
return err; return err;
wl_invoke_iscan(wl); wl_invoke_iscan(wl);
set_bit(WL_STATUS_READY, &wl->status);
return err; return err;
} }
static s32 __wl_cfg80211_down(struct wl_priv *wl) 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); set_bit(WL_STATUS_SCAN_ABORTING, &wl->status);
wl_term_iscan(wl); wl_term_iscan(wl);
if (wl->scan_request) { if (wl->scan_request) {
cfg80211_scan_done(wl->scan_request, true); /* true cfg80211_scan_done(wl->scan_request, true);
means abort */ /* May need to perform this to cover rmmod */
/* wl_set_mpc(wl_to_ndev(wl), 1); */ /* BUG /* wl_set_mpc(wl_to_ndev(wl), 1); */
* this operation cannot help
* but here because sdio
* is already down through
* rmmod process.
* Need to figure out how to
* address this issue
*/
wl->scan_request = NULL; wl->scan_request = NULL;
} }
clear_bit(WL_STATUS_READY, &wl->status); clear_bit(WL_STATUS_READY, &wl->status);
clear_bit(WL_STATUS_SCANNING, &wl->status); clear_bit(WL_STATUS_SCANNING, &wl->status);
clear_bit(WL_STATUS_SCAN_ABORTING, &wl->status); clear_bit(WL_STATUS_SCAN_ABORTING, &wl->status);
clear_bit(WL_STATUS_CONNECTING, &wl->status);
clear_bit(WL_STATUS_CONNECTED, &wl->status); clear_bit(WL_STATUS_CONNECTED, &wl->status);
wl_debugfs_remove_netdev(wl); wl_debugfs_remove_netdev(wl);
return err; return 0;
} }
s32 wl_cfg80211_up(void) s32 wl_cfg80211_up(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment