mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-08 06:34:15 -05: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:
committed by
Greg Kroah-Hartman
parent
8f7f05934e
commit
17580de3e2
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user