]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wcn36xx: set PREASSOC and IDLE stated when BSS info changes
authorDaniel Mack <daniel@zonque.org>
Wed, 23 May 2018 08:14:50 +0000 (11:14 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 25 May 2018 10:07:54 +0000 (13:07 +0300)
When a BSSID is joined, set the link status to 'preassoc', and set it to
'idle' when the BSS is deleted.

This is what the downstream driver is doing, and it seems to improve the
reliability during connect/disconnect stress tests.

Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/wcn36xx/main.c

index e6330ad372b36cdddb812fe39be810228614fba9..662e50540b07146dc51d808330514f5c3622fd87 100644 (file)
@@ -798,6 +798,8 @@ static void wcn36xx_bss_info_changed(struct ieee80211_hw *hw,
                if (!is_zero_ether_addr(bss_conf->bssid)) {
                        vif_priv->is_joining = true;
                        vif_priv->bss_index = WCN36XX_HAL_BSS_INVALID_IDX;
+                       wcn36xx_smd_set_link_st(wcn, bss_conf->bssid, vif->addr,
+                                               WCN36XX_HAL_LINK_PREASSOC_STATE);
                        wcn36xx_smd_join(wcn, bss_conf->bssid,
                                         vif->addr, WCN36XX_HW_CHANNEL(wcn));
                        wcn36xx_smd_config_bss(wcn, vif, NULL,
@@ -805,6 +807,8 @@ static void wcn36xx_bss_info_changed(struct ieee80211_hw *hw,
                } else {
                        vif_priv->is_joining = false;
                        wcn36xx_smd_delete_bss(wcn, vif);
+                       wcn36xx_smd_set_link_st(wcn, bss_conf->bssid, vif->addr,
+                                               WCN36XX_HAL_LINK_IDLE_STATE);
                        vif_priv->encrypt_type = WCN36XX_HAL_ED_NONE;
                }
        }