mwifiex: inform cfg80211 about disconnect if device is removed
If device is surprise removed, commands sent to FW including deauthenticate command fail as bus writes fail. We update our media_connected status to false and inform cfg80211 about disconnection only when command is successful. Since cfg80211 assumes device is still connected, it results into following WARN_ON during unload: WARNING: CPU: 0 PID: 18245 at net/wireless/core.c:937 cfg80211_netdev_notifier_call+0x175/0x4d0 [cfg80211]() Avoid this by emitting cfg80211_disconnected event even if the deauthenticate command fails. Signed-off-by: Avinash Patil <patila@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
4db89e149c
commit
e8041ceede
|
@ -1422,13 +1422,19 @@ static int mwifiex_deauthenticate_infra(struct mwifiex_private *priv, u8 *mac)
|
|||
*/
|
||||
int mwifiex_deauthenticate(struct mwifiex_private *priv, u8 *mac)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (!priv->media_connected)
|
||||
return 0;
|
||||
|
||||
switch (priv->bss_mode) {
|
||||
case NL80211_IFTYPE_STATION:
|
||||
case NL80211_IFTYPE_P2P_CLIENT:
|
||||
return mwifiex_deauthenticate_infra(priv, mac);
|
||||
ret = mwifiex_deauthenticate_infra(priv, mac);
|
||||
if (ret)
|
||||
cfg80211_disconnected(priv->netdev, 0, NULL, 0,
|
||||
GFP_KERNEL);
|
||||
break;
|
||||
case NL80211_IFTYPE_ADHOC:
|
||||
return mwifiex_send_cmd_sync(priv,
|
||||
HostCmd_CMD_802_11_AD_HOC_STOP,
|
||||
|
@ -1440,7 +1446,7 @@ int mwifiex_deauthenticate(struct mwifiex_private *priv, u8 *mac)
|
|||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mwifiex_deauthenticate);
|
||||
|
||||
|
|
Loading…
Reference in New Issue