From 97c9e37c7a7d7845b09035569da9b0eea196b1e1 Mon Sep 17 00:00:00 2001 From: Manikanta Pubbisetty Date: Wed, 7 Sep 2022 11:36:56 +0300 Subject: [PATCH] wifi: ath11k: Increase TCL data ring size for WCN6750 Increase TCL data ring size to 2048 for WCN6750. This is needed to meet 160 MHz TX throughput. Add a new hw_param to indicate the TX ring size for individual devices. Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1 Signed-off-by: Manikanta Pubbisetty Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/20220905071805.31625-4-quic_mpubbise@quicinc.com --- drivers/net/wireless/ath/ath11k/core.c | 7 +++++++ drivers/net/wireless/ath/ath11k/dp.c | 2 +- drivers/net/wireless/ath/ath11k/dp.h | 2 ++ drivers/net/wireless/ath/ath11k/hw.h | 1 + 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c index eee8719ed235..54848b1efccb 100644 --- a/drivers/net/wireless/ath/ath11k/core.c +++ b/drivers/net/wireless/ath/ath11k/core.c @@ -112,6 +112,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { .sram_dump = {}, .tcl_ring_retry = true, + .tx_ring_size = DP_TCL_DATA_RING_SIZE, }, { .hw_rev = ATH11K_HW_IPQ6018_HW10, @@ -189,6 +190,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { .sram_dump = {}, .tcl_ring_retry = true, + .tx_ring_size = DP_TCL_DATA_RING_SIZE, }, { .name = "qca6390 hw2.0", @@ -268,6 +270,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { }, .tcl_ring_retry = true, + .tx_ring_size = DP_TCL_DATA_RING_SIZE, }, { .name = "qcn9074 hw1.0", @@ -344,6 +347,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { .sram_dump = {}, .tcl_ring_retry = true, + .tx_ring_size = DP_TCL_DATA_RING_SIZE, }, { .name = "wcn6855 hw2.0", @@ -423,6 +427,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { }, .tcl_ring_retry = true, + .tx_ring_size = DP_TCL_DATA_RING_SIZE, }, { .name = "wcn6855 hw2.1", @@ -501,6 +506,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { }, .tcl_ring_retry = true, + .tx_ring_size = DP_TCL_DATA_RING_SIZE, }, { .name = "wcn6750 hw1.0", @@ -576,6 +582,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = { .sram_dump = {}, .tcl_ring_retry = false, + .tx_ring_size = DP_TCL_DATA_RING_SIZE_WCN6750, }, }; diff --git a/drivers/net/wireless/ath/ath11k/dp.c b/drivers/net/wireless/ath/ath11k/dp.c index 4f7381719840..fff8decf311b 100644 --- a/drivers/net/wireless/ath/ath11k/dp.c +++ b/drivers/net/wireless/ath/ath11k/dp.c @@ -401,7 +401,7 @@ static int ath11k_dp_srng_common_setup(struct ath11k_base *ab) ret = ath11k_dp_srng_setup(ab, &dp->tx_ring[i].tcl_data_ring, HAL_TCL_DATA, tcl_num, 0, - DP_TCL_DATA_RING_SIZE); + ab->hw_params.tx_ring_size); if (ret) { ath11k_warn(ab, "failed to set up tcl_data ring (%d) :%d\n", i, ret); diff --git a/drivers/net/wireless/ath/ath11k/dp.h b/drivers/net/wireless/ath/ath11k/dp.h index 8af2985ca2d9..16fb536da5cf 100644 --- a/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: BSD-3-Clause-Clear */ /* * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. */ #ifndef ATH11K_DP_H @@ -203,6 +204,7 @@ struct ath11k_pdev_dp { #define DP_WBM_RELEASE_RING_SIZE 64 #define DP_TCL_DATA_RING_SIZE 512 +#define DP_TCL_DATA_RING_SIZE_WCN6750 2048 #define DP_TX_COMP_RING_SIZE 32768 #define DP_TX_IDR_SIZE DP_TX_COMP_RING_SIZE #define DP_TCL_CMD_RING_SIZE 32 diff --git a/drivers/net/wireless/ath/ath11k/hw.h b/drivers/net/wireless/ath/ath11k/hw.h index c61275897b16..90cf402fd5d9 100644 --- a/drivers/net/wireless/ath/ath11k/hw.h +++ b/drivers/net/wireless/ath/ath11k/hw.h @@ -216,6 +216,7 @@ struct ath11k_hw_params { } sram_dump; bool tcl_ring_retry; + u32 tx_ring_size; }; struct ath11k_hw_ops {