wifi: ath12k: send WMI_PEER_REORDER_QUEUE_SETUP_CMDID when ADDBA session starts
authorCarl Huang <quic_cjhuang@quicinc.com>
Fri, 21 Apr 2023 09:44:57 +0000 (12:44 +0300)
committerKalle Valo <quic_kvalo@quicinc.com>
Wed, 26 Apr 2023 14:31:01 +0000 (17:31 +0300)
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
drivers/net/wireless/ath/ath12k/dp_rx.c

index e78478a..c7bf4f7 100644 (file)
@@ -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;