diff mbox series

wifi: ath12k: send WMI_PEER_REORDER_QUEUE_SETUP_CMDID when ADDBA session starts

Message ID 20230404070158.3368530-1-quic_cjhuang@quicinc.com
State New
Headers show
Series wifi: ath12k: send WMI_PEER_REORDER_QUEUE_SETUP_CMDID when ADDBA session starts | expand

Commit Message

Carl Huang April 4, 2023, 7:01 a.m. UTC
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>
---
 drivers/net/wireless/ath/ath12k/dp_rx.c | 3 +++
 1 file changed, 3 insertions(+)


base-commit: bea046575a2e6d7d1cf63cc7ab032647a3585de5

Comments

Kalle Valo April 17, 2023, 2:27 p.m. UTC | #1
Carl Huang <quic_cjhuang@quicinc.com> writes:

> 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>
> ---
>  drivers/net/wireless/ath/ath12k/dp_rx.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless/ath/ath12k/dp_rx.c
> index e78478a5b978..256e4cbfae54 100644
> --- a/drivers/net/wireless/ath/ath12k/dp_rx.c
> +++ b/drivers/net/wireless/ath/ath12k/dp_rx.c
> @@ -977,6 +977,9 @@ int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_
>  			ath12k_warn(ab, "failed to update reo for rx tid %d\n", tid);
>  			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);
>  
>  		return ret;
>  	}

This added new warnings:

drivers/net/wireless/ath/ath12k/dp_rx.c:981: line length of 91 exceeds 90 columns
drivers/net/wireless/ath/ath12k/dp_rx.c:982: line length of 95 exceeds 90 columns

I fixed them in the pending branch. There was also no warning message if
ath12k_wmi_peer_rx_reorder_queue_setup() fails, I added that as well:

https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?h=pending&id=750111a1341bba3b4f679ff97891fb1943f3643c
Kalle Valo April 26, 2023, 2:31 p.m. UTC | #2
Carl Huang <quic_cjhuang@quicinc.com> wrote:

> 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>

Patch applied to ath-next branch of ath.git, thanks.

e671fb86ecc0 wifi: ath12k: send WMI_PEER_REORDER_QUEUE_SETUP_CMDID when ADDBA session starts
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless/ath/ath12k/dp_rx.c
index e78478a5b978..256e4cbfae54 100644
--- a/drivers/net/wireless/ath/ath12k/dp_rx.c
+++ b/drivers/net/wireless/ath/ath12k/dp_rx.c
@@ -977,6 +977,9 @@  int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_
 			ath12k_warn(ab, "failed to update reo for rx tid %d\n", tid);
 			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);
 
 		return ret;
 	}