Patch "wifi: ath11k: change to move WMI_VDEV_PARAM_SET_HEMU_MODE before WMI_PEER_ASSOC_CMDID" has been added to the 6.8-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    wifi: ath11k: change to move WMI_VDEV_PARAM_SET_HEMU_MODE before WMI_PEER_ASSOC_CMDID

to the 6.8-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     wifi-ath11k-change-to-move-wmi_vdev_param_set_hemu_m.patch
and it can be found in the queue-6.8 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit b587e187119bd7627010d6a8e1b7f4587d8ca29d
Author: Wen Gong <quic_wgong@xxxxxxxxxxx>
Date:   Wed Jan 31 10:18:32 2024 +0800

    wifi: ath11k: change to move WMI_VDEV_PARAM_SET_HEMU_MODE before WMI_PEER_ASSOC_CMDID
    
    [ Upstream commit 413e20e82ee78f142cb5194fd317db514f012602 ]
    
    Currently when connecting to an AP with 11AX-HE phy mode, host sends
    WMI_VDEV_PARAM_SET_HEMU_MODE parameter to firmware after
    WMI_PEER_ASSOC_CMDID command. This results in TXBF not working, because
    firmware calculates TXBF values while handling WMI_PEER_ASSOC_CMDID,
    however at that time WMI_VDEV_PARAM_SET_HEMU_MODE has not been sent yet.
    See below log:
    
    AP sends "VHT/HE/EHT NDP Announcement" to station, and station sends
    "Action no Ack" of category code HE to AP, the "Nc Index" and
    "Codebook Information" are wrong:
    
    Issued action:
    IEEE 802.11 Action No Ack, Flags: ........
    IEEE 802.11 wireless LAN
        Fixed parameters
            Category code: HE (30)
            HE Action: HE Compressed Beamforming And CQI (0)
                Total length: 152
                HE MIMO Control: 0x0004008018
                    .... .... .... .... .... .... .... .... .... .000 = Nc Index: 1 Column (0)
                    .... .... .... .... .... .... .... ..0. .... .... = Codebook Information: 0
    
    Change to send WMI_VDEV_PARAM_SET_HEMU_MODE before WMI_PEER_ASSOC_CMDID,
    then firmware will calculate the TXBF values with valid parameters
    instead of empty values. TXBF works well and throughput performance is
    improved from 80 Mbps to 130 Mbps with this patch.
    
    Good action after this patch:
    IEEE 802.11 Action No Ack, Flags: ........
    IEEE 802.11 wireless LAN
        Fixed parameters
            Category code: HE (30)
            HE Action: HE Compressed Beamforming And CQI (0)
                Total length: 409
                HE MIMO Control: 0x0004008219
                    .... .... .... .... .... .... .... .... .... .001 = Nc Index: 2 Columns (1)
                    .... .... .... .... .... .... .... ..1. .... .... = Codebook Information: 1
    
    This change applies to all chipsets.
    
    Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.23
    
    Fixes: 38dfe775d0ab ("wifi: ath11k: push MU-MIMO params from hostapd to hardware")
    Signed-off-by: Wen Gong <quic_wgong@xxxxxxxxxxx>
    Signed-off-by: Baochen Qiang <quic_bqiang@xxxxxxxxxxx>
    Acked-by: Jeff Johnson <quic_jjohnson@xxxxxxxxxxx>
    Signed-off-by: Kalle Valo <quic_kvalo@xxxxxxxxxxx>
    Link: https://msgid.link/20240131021832.17298-1-quic_bqiang@xxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index b13525bbbb808..b6b474a7f1c9c 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -3026,7 +3026,14 @@ static void ath11k_bss_assoc(struct ieee80211_hw *hw,
 
 	rcu_read_unlock();
 
+	if (!ath11k_mac_vif_recalc_sta_he_txbf(ar, vif, &he_cap)) {
+		ath11k_warn(ar->ab, "failed to recalc he txbf for vdev %i on bss %pM\n",
+			    arvif->vdev_id, bss_conf->bssid);
+		return;
+	}
+
 	peer_arg.is_assoc = true;
+
 	ret = ath11k_wmi_send_peer_assoc_cmd(ar, &peer_arg);
 	if (ret) {
 		ath11k_warn(ar->ab, "failed to run peer assoc for %pM vdev %i: %d\n",
@@ -3049,12 +3056,6 @@ static void ath11k_bss_assoc(struct ieee80211_hw *hw,
 		return;
 	}
 
-	if (!ath11k_mac_vif_recalc_sta_he_txbf(ar, vif, &he_cap)) {
-		ath11k_warn(ar->ab, "failed to recalc he txbf for vdev %i on bss %pM\n",
-			    arvif->vdev_id, bss_conf->bssid);
-		return;
-	}
-
 	WARN_ON(arvif->is_up);
 
 	arvif->aid = vif->cfg.aid;




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux