From 20ecb68133ce349b43bace89a2b31316b3514110 Mon Sep 17 00:00:00 2001 From: Suresh Sanaboina Date: Fri, 22 Jul 2022 09:47:48 -0500 Subject: [PATCH 105/296] brcmfmac: send roam request when supplicant triggers reassoc Sending assoc request to fw on reassoc would disassoc prev bssid and then assoc to target AP. Supplicant sets prev bssid when it tries to reassoc to new target AP. Based on prev bssid set, sending reassoc request to FW to allow STA smooth roam to target AP without disassoc. Signed-off-by: Suresh Sanaboina --- .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index 7cf830eda50c..aeb3db636409 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -2901,8 +2901,15 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, brcmf_set_join_pref(ifp, &sme->bss_select); - err = brcmf_fil_bsscfg_data_set(ifp, "join", ext_join_params, - join_params_size); + if (sme->prev_bssid) { + brcmf_dbg(CONN, "Trying to REASSOC\n"); + join_params_size = sizeof(ext_join_params->assoc_le); + err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_REASSOC, + &ext_join_params->assoc_le, join_params_size); + } else { + err = brcmf_fil_bsscfg_data_set(ifp, "join", ext_join_params, + join_params_size); + } kfree(ext_join_params); if (!err) /* This is it. join command worked, we are done */ @@ -7070,6 +7077,7 @@ brcmf_bss_roaming_done(struct brcmf_cfg80211_info *cfg, cfg80211_roamed(ndev, &roam_info, GFP_KERNEL); brcmf_dbg(CONN, "Report roaming result\n"); + clear_bit(BRCMF_VIF_STATUS_CONNECTING, &ifp->vif->sme_state); set_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state); brcmf_dbg(TRACE, "Exit\n"); return err; -- 2.25.1