summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorCarl Huang <quic_cjhuang@quicinc.com>2023-04-21 12:44:57 +0300
committerKalle Valo <quic_kvalo@quicinc.com>2023-04-26 17:31:01 +0300
commite671fb86ecc03ce15a89cda8553621248ccf620c (patch)
tree399f4a99c6121f73de9a6ea7173d46c9040fe208 /drivers
parent34c5625a459a7dff745bcd862962688b5c795762 (diff)
downloadlinux-stable-e671fb86ecc03ce15a89cda8553621248ccf620c.tar.gz
linux-stable-e671fb86ecc03ce15a89cda8553621248ccf620c.tar.bz2
linux-stable-e671fb86ecc03ce15a89cda8553621248ccf620c.zip
wifi: ath12k: send WMI_PEER_REORDER_QUEUE_SETUP_CMDID when ADDBA session starts
Low receive throughput is seen on WCN7850 because ADDBA related parameters are not updated to firmware when receive ADDBA session starts. Fix it by sending WMI_PEER_REORDER_QUEUE_SETUP_CMDID again to firmware to update the ADDBA related parameters for chips which have false reoq_lut_support in hw_params. For chips which have true reoq_lut_support in hw_params don't need this command to send to firmware. Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4 Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com> Link: https://lore.kernel.org/r/20230404070158.3368530-1-quic_cjhuang@quicinc.com
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath/ath12k/dp_rx.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless/ath/ath12k/dp_rx.c
index e78478a5b978..c7bf4f7fa99e 100644
--- a/drivers/net/wireless/ath/ath12k/dp_rx.c
+++ b/drivers/net/wireless/ath/ath12k/dp_rx.c
@@ -978,7 +978,19 @@ int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_
return ret;
}
- return ret;
+ if (!ab->hw_params->reoq_lut_support) {
+ ret = ath12k_wmi_peer_rx_reorder_queue_setup(ar, vdev_id,
+ peer_mac,
+ paddr, tid, 1,
+ ba_win_sz);
+ if (ret) {
+ ath12k_warn(ab, "failed to setup peer rx reorder queuefor tid %d: %d\n",
+ tid, ret);
+ return ret;
+ }
+ }
+
+ return 0;
}
rx_tid->tid = tid;