Upon deleting the interface a cfg80211_disconnected() is called under rtnl_lock. Right after the unlocking the rtnl_lock we unregister the network device. This patch adds delay before unregister so cfg80211 can handle disconnect and notify wpa_supplicant. Reviewed-by: Daniel (Deognyoun) Kim <dekim@xxxxxxxxxxxx> Reviewed-by: Hante Meuleman <meuleman@xxxxxxxxxxxx> Reviewed-by: Franky (Zhenhui) Lin <frankyl@xxxxxxxxxxxx> Reviewed-by: Pieter-Paul Giesberts <pieterpg@xxxxxxxxxxxx> Signed-off-by: Arend van Spriel <arend@xxxxxxxxxxxx> --- drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c | 4 ++++ drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 9 +-------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c index d4d966b..9832b11 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c @@ -848,6 +848,10 @@ void brcmf_del_if(struct brcmf_pub *drvr, s32 bssidx) rtnl_lock(); brcmf_netdev_stop(ifp->ndev); rtnl_unlock(); + /* make sure cfg80211 can send disconnect event + * before unregistering the netdevice below. + */ + msleep(100); } } else { netif_stop_queue(ifp->ndev); diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c index a54db91..51ee7f0 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c @@ -5443,16 +5443,9 @@ static s32 __brcmf_cfg80211_down(struct brcmf_if *ifp) * While going down, if associated with AP disassociate * from AP to save power */ - if (check_vif_up(ifp->vif)) { + if (check_vif_up(ifp->vif)) brcmf_link_down(ifp->vif); - /* Make sure WPA_Supplicant receives all the event - generated due to DISASSOC call to the fw to keep - the state fw and WPA_Supplicant state consistent - */ - brcmf_delay(500); - } - brcmf_abort_scanning(cfg); clear_bit(BRCMF_VIF_STATUS_READY, &ifp->vif->sme_state); -- 1.7.10.4 -- 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