mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 05:44:11 +00:00
staging: r8188eu: handle the non-ap case first
The OnDisassoc function hasn't got much to do if we're not working as an access point. Move this case out of the large if statement to simplify the code. Tested-by: Philipp Hortmann <philipp.g.hortmann@gmail.com> # Edimax N150 Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20221129205152.128172-5-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
8f7f05934e
commit
17580de3e2
1 changed files with 19 additions and 21 deletions
|
@ -1433,6 +1433,8 @@ static void OnDisassoc(struct adapter *padapter, struct recv_frame *precv_frame)
|
|||
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;
|
||||
|
@ -1444,29 +1446,25 @@ static void OnDisassoc(struct adapter *padapter, struct recv_frame *precv_frame)
|
|||
|
||||
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;
|
||||
|
||||
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);
|
||||
|
||||
associated_clients_update(padapter, updated);
|
||||
}
|
||||
|
||||
return;
|
||||
} else {
|
||||
if (!check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
|
||||
receive_disconnect(padapter, mgmt->bssid, reason);
|
||||
pmlmepriv->LinkDetectInfo.bBusyTraffic = false;
|
||||
return;
|
||||
}
|
||||
|
||||
psta = rtw_get_stainfo(pstapriv, mgmt->sa);
|
||||
if (psta) {
|
||||
u8 updated = 0;
|
||||
|
||||
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);
|
||||
|
||||
associated_clients_update(padapter, updated);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue