struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
struct wifidirect_info *pwdinfo = &padapter->wdinfo;
+ struct sta_info *psta;
+ struct sta_priv *pstapriv = &padapter->stapriv;
if (memcmp(mgmt->bssid, get_my_bssid(&pmlmeinfo->network), ETH_ALEN))
return;
reason = le16_to_cpu(mgmt->u.disassoc.reason_code);
- if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
- struct sta_info *psta;
- struct sta_priv *pstapriv = &padapter->stapriv;
-
- psta = rtw_get_stainfo(pstapriv, mgmt->sa);
- if (psta) {
- u8 updated = 0;
+ if (!check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
+ receive_disconnect(padapter, mgmt->bssid, reason);
+ pmlmepriv->LinkDetectInfo.bBusyTraffic = false;
+ return;
+ }
- spin_lock_bh(&pstapriv->asoc_list_lock);
- if (!list_empty(&psta->asoc_list)) {
- list_del_init(&psta->asoc_list);
- pstapriv->asoc_list_cnt--;
- updated = ap_free_sta(padapter, psta, false, reason);
- }
- spin_unlock_bh(&pstapriv->asoc_list_lock);
+ psta = rtw_get_stainfo(pstapriv, mgmt->sa);
+ if (psta) {
+ u8 updated = 0;
- associated_clients_update(padapter, updated);
+ spin_lock_bh(&pstapriv->asoc_list_lock);
+ if (!list_empty(&psta->asoc_list)) {
+ list_del_init(&psta->asoc_list);
+ pstapriv->asoc_list_cnt--;
+ updated = ap_free_sta(padapter, psta, false, reason);
}
+ spin_unlock_bh(&pstapriv->asoc_list_lock);
- return;
- } else {
- receive_disconnect(padapter, mgmt->bssid, reason);
- pmlmepriv->LinkDetectInfo.bBusyTraffic = false;
+ associated_clients_update(padapter, updated);
}
}