* [PATCH ath-next 1/7] wifi: ath12k: move dp_profile_params to dp.h
2026-08-20 5:47 [PATCH ath-next 0/7] wifi: ath12k: convert DP profile parameter macros to inline helpers Aaradhana Sahu
@ 2026-08-20 5:47 ` Aaradhana Sahu
2026-08-20 5:47 ` [PATCH ath-next 2/7] wifi: ath12k: convert DP_TX_COMP_RING_SIZE to inline helper Aaradhana Sahu
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Aaradhana Sahu @ 2026-08-20 5:47 UTC (permalink / raw)
To: ath12k
Cc: linux-wireless, jjohnson, quic_kiranv, baochen.qiang,
vasanthakumar.thiagarajan, quic_periyasa, Aaradhana Sahu
Move struct ath12k_dp_profile_params from core.h to dp.h as it is
specifically used for Data Path operations. This improves code
organization by keeping DP-related structures in the DP header.
No functional change intended.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.6-01243-QCAHKSWPL_SILICONZ-1
Signed-off-by: Aaradhana Sahu <aaradhana.sahu@oss.qualcomm.com>
---
drivers/net/wireless/ath/ath12k/core.h | 9 ---------
drivers/net/wireless/ath/ath12k/dp.h | 9 +++++++++
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/core.h b/drivers/net/wireless/ath/ath12k/core.h
index a98fc6e0699d..4718da494aab 100644
--- a/drivers/net/wireless/ath/ath12k/core.h
+++ b/drivers/net/wireless/ath/ath12k/core.h
@@ -928,15 +928,6 @@ struct ath12k_wsi_info {
u32 hw_link_id_base;
};
-struct ath12k_dp_profile_params {
- u32 tx_comp_ring_size;
- u32 rxdma_monitor_buf_ring_size;
- u32 rxdma_monitor_dst_ring_size;
- u32 num_pool_tx_desc;
- u32 rx_desc_count;
- u32 rx_release_ring_size;
-};
-
struct ath12k_mem_profile_based_param {
u32 num_vdevs;
u32 max_client_single;
diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h
index bef0f2ba0560..72d3de2db5d8 100644
--- a/drivers/net/wireless/ath/ath12k/dp.h
+++ b/drivers/net/wireless/ath/ath12k/dp.h
@@ -23,6 +23,15 @@ struct ath12k_ext_irq_grp;
struct ath12k_dp_rx_tid;
struct ath12k_dp_rx_tid_rxq;
+struct ath12k_dp_profile_params {
+ u32 tx_comp_ring_size;
+ u32 rxdma_monitor_buf_ring_size;
+ u32 rxdma_monitor_dst_ring_size;
+ u32 num_pool_tx_desc;
+ u32 rx_desc_count;
+ u32 rx_release_ring_size;
+};
+
#define DP_MON_PURGE_TIMEOUT_MS 100
#define DP_MON_SERVICE_BUDGET 128
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH ath-next 2/7] wifi: ath12k: convert DP_TX_COMP_RING_SIZE to inline helper
2026-08-20 5:47 [PATCH ath-next 0/7] wifi: ath12k: convert DP profile parameter macros to inline helpers Aaradhana Sahu
2026-08-20 5:47 ` [PATCH ath-next 1/7] wifi: ath12k: move dp_profile_params to dp.h Aaradhana Sahu
@ 2026-08-20 5:47 ` Aaradhana Sahu
2026-08-20 5:48 ` [PATCH ath-next 3/7] wifi: ath12k: convert DP_RXDMA_MONITOR_BUF_RING_SIZE " Aaradhana Sahu
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Aaradhana Sahu @ 2026-08-20 5:47 UTC (permalink / raw)
To: ath12k
Cc: linux-wireless, jjohnson, quic_kiranv, baochen.qiang,
vasanthakumar.thiagarajan, quic_periyasa, Aaradhana Sahu
Replace DP_TX_COMP_RING_SIZE macro with ath12k_dp_tx_comp_ring_size()
static inline helper. Pass the DP profile parameters explicitly to
improve type safety and make the interface explicit.
Update code using ATH12K_TX_COMPL_NEXT to pass ring size directly rather
than deriving it from the ath12k_base structure.
Also remove the unused DP_TX_IDR_SIZE macro.
No functional change intended.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.6-01243-QCAHKSWPL_SILICONZ-1
Signed-off-by: Aaradhana Sahu <aaradhana.sahu@oss.qualcomm.com>
---
drivers/net/wireless/ath/ath12k/dp.c | 10 +++++++---
drivers/net/wireless/ath/ath12k/dp.h | 11 +++++++----
drivers/net/wireless/ath/ath12k/wifi7/dp_tx.c | 12 +++++++-----
3 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/dp.c b/drivers/net/wireless/ath/ath12k/dp.c
index f9b37d75956d..5980946d1e82 100644
--- a/drivers/net/wireless/ath/ath12k/dp.c
+++ b/drivers/net/wireless/ath/ath12k/dp.c
@@ -439,6 +439,7 @@ static void ath12k_dp_srng_common_cleanup(struct ath12k_base *ab)
static int ath12k_dp_srng_common_setup(struct ath12k_base *ab)
{
+ const struct ath12k_dp_profile_params *dp_params = &ab->profile_param->dp_params;
struct ath12k_dp *dp = ath12k_ab_to_dp(ab);
const struct ath12k_hal_tcl_to_wbm_rbm_map *map;
struct hal_srng *srng;
@@ -469,7 +470,7 @@ static int ath12k_dp_srng_common_setup(struct ath12k_base *ab)
ret = ath12k_dp_srng_setup(ab, &dp->tx_ring[i].tcl_comp_ring,
HAL_WBM2SW_RELEASE, tx_comp_ring_num, 0,
- DP_TX_COMP_RING_SIZE(ab));
+ ath12k_dp_tx_comp_ring_size(dp_params));
if (ret) {
ath12k_warn(ab, "failed to set up tcl_comp ring (%d) :%d\n",
tx_comp_ring_num, ret);
@@ -1465,6 +1466,7 @@ static int ath12k_dp_reoq_lut_setup(struct ath12k_base *ab)
static int ath12k_dp_setup(struct ath12k_base *ab)
{
+ const struct ath12k_dp_profile_params *dp_params;
struct ath12k_dp *dp;
struct hal_srng *srng = NULL;
size_t size = 0;
@@ -1474,6 +1476,7 @@ static int ath12k_dp_setup(struct ath12k_base *ab)
dp = ath12k_ab_to_dp(ab);
dp->ab = ab;
+ dp_params = &ab->profile_param->dp_params;
INIT_LIST_HEAD(&dp->reo_cmd_list);
INIT_LIST_HEAD(&dp->reo_cmd_cache_flush_list);
@@ -1528,7 +1531,7 @@ static int ath12k_dp_setup(struct ath12k_base *ab)
goto fail_dp_bank_profiles_cleanup;
size = ab->hal.hal_wbm_release_ring_tx_size *
- DP_TX_COMP_RING_SIZE(ab);
+ ath12k_dp_tx_comp_ring_size(dp_params);
ret = ath12k_dp_reoq_lut_setup(ab);
if (ret) {
@@ -1540,7 +1543,8 @@ static int ath12k_dp_setup(struct ath12k_base *ab)
dp->tx_ring[i].tcl_data_ring_id = i;
dp->tx_ring[i].tx_status_head = 0;
- dp->tx_ring[i].tx_status_tail = DP_TX_COMP_RING_SIZE(ab) - 1;
+ dp->tx_ring[i].tx_status_tail =
+ ath12k_dp_tx_comp_ring_size(dp_params) - 1;
dp->tx_ring[i].tx_status = kmalloc(size, GFP_KERNEL);
if (!dp->tx_ring[i].tx_status) {
ret = -ENOMEM;
diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h
index 72d3de2db5d8..6540b3453cc6 100644
--- a/drivers/net/wireless/ath/ath12k/dp.h
+++ b/drivers/net/wireless/ath/ath12k/dp.h
@@ -61,7 +61,7 @@ struct dp_rxdma_ring {
int bufs_max;
};
-#define ATH12K_TX_COMPL_NEXT(ab, x) (((x) + 1) % DP_TX_COMP_RING_SIZE(ab))
+#define ATH12K_TX_COMPL_NEXT(ring_size, x) (((x) + 1) % (ring_size))
struct dp_tx_ring {
u8 tcl_data_ring_id;
@@ -201,9 +201,6 @@ struct ath12k_pdev_dp {
#define DP_WBM_RELEASE_RING_SIZE 64
#define DP_TCL_DATA_RING_SIZE 512
-#define DP_TX_COMP_RING_SIZE(ab) \
- ((ab)->profile_param->dp_params.tx_comp_ring_size)
-#define DP_TX_IDR_SIZE(ab) DP_TX_COMP_RING_SIZE(ab)
#define DP_TCL_CMD_RING_SIZE 32
#define DP_TCL_STATUS_RING_SIZE 32
#define DP_REO_DST_RING_MAX 8
@@ -689,6 +686,12 @@ ath12k_dp_to_pdev_dp(struct ath12k_dp *dp, u8 pdev_idx)
return rcu_dereference(dp->dp_pdevs[pdev_idx]);
}
+static inline u32
+ath12k_dp_tx_comp_ring_size(const struct ath12k_dp_profile_params *p)
+{
+ return p->tx_comp_ring_size;
+}
+
void ath12k_dp_vdev_tx_attach(struct ath12k *ar, struct ath12k_link_vif *arvif);
void ath12k_dp_partner_cc_init(struct ath12k_base *ab);
int ath12k_dp_pdev_alloc(struct ath12k_base *ab);
diff --git a/drivers/net/wireless/ath/ath12k/wifi7/dp_tx.c b/drivers/net/wireless/ath/ath12k/wifi7/dp_tx.c
index 587d58eeccfa..e14f1d190ba8 100644
--- a/drivers/net/wireless/ath/ath12k/wifi7/dp_tx.c
+++ b/drivers/net/wireless/ath/ath12k/wifi7/dp_tx.c
@@ -922,12 +922,14 @@ void ath12k_wifi7_dp_tx_completion_handler(struct ath12k_dp *dp, int ring_id)
u64 desc_va;
enum hal_wbm_rel_src_module buf_rel_source;
enum hal_wbm_tqm_rel_reason rel_status;
+ u32 ring_size;
spin_lock_bh(&status_ring->lock);
+ ring_size = ath12k_dp_tx_comp_ring_size(&ab->profile_param->dp_params);
ath12k_hal_srng_access_begin(ab, status_ring);
- while (ATH12K_TX_COMPL_NEXT(ab, tx_ring->tx_status_head) !=
+ while (ATH12K_TX_COMPL_NEXT(ring_size, tx_ring->tx_status_head) !=
tx_ring->tx_status_tail) {
desc = ath12k_hal_srng_dst_get_next_entry(ab, status_ring);
if (!desc)
@@ -936,11 +938,11 @@ void ath12k_wifi7_dp_tx_completion_handler(struct ath12k_dp *dp, int ring_id)
memcpy(&tx_ring->tx_status[tx_ring->tx_status_head],
desc, sizeof(*desc));
tx_ring->tx_status_head =
- ATH12K_TX_COMPL_NEXT(ab, tx_ring->tx_status_head);
+ ATH12K_TX_COMPL_NEXT(ring_size, tx_ring->tx_status_head);
}
if (ath12k_hal_srng_dst_peek(ab, status_ring) &&
- (ATH12K_TX_COMPL_NEXT(ab, tx_ring->tx_status_head) ==
+ (ATH12K_TX_COMPL_NEXT(ring_size, tx_ring->tx_status_head) ==
tx_ring->tx_status_tail)) {
/* TODO: Process pending tx_status messages when kfifo_is_full() */
ath12k_warn(ab, "Unable to process some of the tx_status ring desc because status_fifo is full\n");
@@ -950,13 +952,13 @@ void ath12k_wifi7_dp_tx_completion_handler(struct ath12k_dp *dp, int ring_id)
spin_unlock_bh(&status_ring->lock);
- while (ATH12K_TX_COMPL_NEXT(ab, tx_ring->tx_status_tail) !=
+ while (ATH12K_TX_COMPL_NEXT(ring_size, tx_ring->tx_status_tail) !=
tx_ring->tx_status_head) {
struct hal_wbm_completion_ring_tx *tx_status;
u32 desc_id;
tx_ring->tx_status_tail =
- ATH12K_TX_COMPL_NEXT(ab, tx_ring->tx_status_tail);
+ ATH12K_TX_COMPL_NEXT(ring_size, tx_ring->tx_status_tail);
tx_status = &tx_ring->tx_status[tx_ring->tx_status_tail];
ath12k_wifi7_dp_tx_status_parse(dp, tx_status, &ts);
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH ath-next 3/7] wifi: ath12k: convert DP_RXDMA_MONITOR_BUF_RING_SIZE to inline helper
2026-08-20 5:47 [PATCH ath-next 0/7] wifi: ath12k: convert DP profile parameter macros to inline helpers Aaradhana Sahu
2026-08-20 5:47 ` [PATCH ath-next 1/7] wifi: ath12k: move dp_profile_params to dp.h Aaradhana Sahu
2026-08-20 5:47 ` [PATCH ath-next 2/7] wifi: ath12k: convert DP_TX_COMP_RING_SIZE to inline helper Aaradhana Sahu
@ 2026-08-20 5:48 ` Aaradhana Sahu
2026-08-20 5:48 ` [PATCH ath-next 4/7] wifi: ath12k: convert DP_RXDMA_MONITOR_DST_RING_SIZE " Aaradhana Sahu
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Aaradhana Sahu @ 2026-08-20 5:48 UTC (permalink / raw)
To: ath12k
Cc: linux-wireless, jjohnson, quic_kiranv, baochen.qiang,
vasanthakumar.thiagarajan, quic_periyasa, Aaradhana Sahu
Replace DP_RXDMA_MONITOR_BUF_RING_SIZE macro with
ath12k_dp_rxdma_monitor_buf_ring_size() static inline helper. Pass the DP
profile parameters explicitly to improve type safety and make the interface
explicit.
No functional change intended.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.6-01243-QCAHKSWPL_SILICONZ-1
Signed-off-by: Aaradhana Sahu <aaradhana.sahu@oss.qualcomm.com>
---
drivers/net/wireless/ath/ath12k/dp.h | 8 ++++++--
drivers/net/wireless/ath/ath12k/dp_rx.c | 4 +++-
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h
index 6540b3453cc6..9081655eae77 100644
--- a/drivers/net/wireless/ath/ath12k/dp.h
+++ b/drivers/net/wireless/ath/ath12k/dp.h
@@ -216,8 +216,6 @@ struct ath12k_pdev_dp {
#define DP_RXDMA_REFILL_RING_SIZE 2048
#define DP_RXDMA_ERR_DST_RING_SIZE 1024
#define DP_RXDMA_MON_STATUS_RING_SIZE 1024
-#define DP_RXDMA_MONITOR_BUF_RING_SIZE(ab) \
- ((ab)->profile_param->dp_params.rxdma_monitor_buf_ring_size)
#define DP_RXDMA_MONITOR_DST_RING_SIZE(ab) \
((ab)->profile_param->dp_params.rxdma_monitor_dst_ring_size)
#define DP_RXDMA_MONITOR_DESC_RING_SIZE 4096
@@ -692,6 +690,12 @@ ath12k_dp_tx_comp_ring_size(const struct ath12k_dp_profile_params *p)
return p->tx_comp_ring_size;
}
+static inline u32
+ath12k_dp_rxdma_monitor_buf_ring_size(const struct ath12k_dp_profile_params *p)
+{
+ return p->rxdma_monitor_buf_ring_size;
+}
+
void ath12k_dp_vdev_tx_attach(struct ath12k *ar, struct ath12k_link_vif *arvif);
void ath12k_dp_partner_cc_init(struct ath12k_base *ab);
int ath12k_dp_pdev_alloc(struct ath12k_base *ab);
diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless/ath/ath12k/dp_rx.c
index 8fa0e90b4531..efc419d41d21 100644
--- a/drivers/net/wireless/ath/ath12k/dp_rx.c
+++ b/drivers/net/wireless/ath/ath12k/dp_rx.c
@@ -1692,6 +1692,8 @@ int ath12k_dp_rx_htt_setup(struct ath12k_base *ab)
int ath12k_dp_rx_alloc(struct ath12k_base *ab)
{
+ const struct ath12k_dp_profile_params *dp_params = &ab->profile_param->dp_params;
+ u32 monitor_buf_ring_size = ath12k_dp_rxdma_monitor_buf_ring_size(dp_params);
struct ath12k_dp *dp = ath12k_ab_to_dp(ab);
struct dp_srng *srng;
int i, ret;
@@ -1736,7 +1738,7 @@ int ath12k_dp_rx_alloc(struct ath12k_base *ab)
ret = ath12k_dp_srng_setup(ab,
&dp->rxdma_mon_buf_ring.refill_buf_ring,
HAL_RXDMA_MONITOR_BUF, 0, 0,
- DP_RXDMA_MONITOR_BUF_RING_SIZE(ab));
+ monitor_buf_ring_size);
if (ret) {
ath12k_warn(ab, "failed to setup HAL_RXDMA_MONITOR_BUF\n");
return ret;
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH ath-next 4/7] wifi: ath12k: convert DP_RXDMA_MONITOR_DST_RING_SIZE to inline helper
2026-08-20 5:47 [PATCH ath-next 0/7] wifi: ath12k: convert DP profile parameter macros to inline helpers Aaradhana Sahu
` (2 preceding siblings ...)
2026-08-20 5:48 ` [PATCH ath-next 3/7] wifi: ath12k: convert DP_RXDMA_MONITOR_BUF_RING_SIZE " Aaradhana Sahu
@ 2026-08-20 5:48 ` Aaradhana Sahu
2026-08-20 5:48 ` [PATCH ath-next 5/7] wifi: ath12k: convert ATH12K_NUM_POOL_TX_DESC " Aaradhana Sahu
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Aaradhana Sahu @ 2026-08-20 5:48 UTC (permalink / raw)
To: ath12k
Cc: linux-wireless, jjohnson, quic_kiranv, baochen.qiang,
vasanthakumar.thiagarajan, quic_periyasa, Aaradhana Sahu
Replace DP_RXDMA_MONITOR_DST_RING_SIZE macro with
ath12k_dp_rxdma_monitor_dst_ring_size() static inline helper.
Pass the DP profile parameters explicitly to improve type safety and
make the interface explicit.
No functional change intended.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.6-01243-QCAHKSWPL_SILICONZ-1
Signed-off-by: Aaradhana Sahu <aaradhana.sahu@oss.qualcomm.com>
---
drivers/net/wireless/ath/ath12k/dp.h | 8 ++++++--
drivers/net/wireless/ath/ath12k/dp_rx.c | 8 ++++++--
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h
index 9081655eae77..a7cd2535866b 100644
--- a/drivers/net/wireless/ath/ath12k/dp.h
+++ b/drivers/net/wireless/ath/ath12k/dp.h
@@ -216,8 +216,6 @@ struct ath12k_pdev_dp {
#define DP_RXDMA_REFILL_RING_SIZE 2048
#define DP_RXDMA_ERR_DST_RING_SIZE 1024
#define DP_RXDMA_MON_STATUS_RING_SIZE 1024
-#define DP_RXDMA_MONITOR_DST_RING_SIZE(ab) \
- ((ab)->profile_param->dp_params.rxdma_monitor_dst_ring_size)
#define DP_RXDMA_MONITOR_DESC_RING_SIZE 4096
#define DP_TX_MONITOR_BUF_RING_SIZE 4096
#define DP_TX_MONITOR_DEST_RING_SIZE 2048
@@ -696,6 +694,12 @@ ath12k_dp_rxdma_monitor_buf_ring_size(const struct ath12k_dp_profile_params *p)
return p->rxdma_monitor_buf_ring_size;
}
+static inline u32
+ath12k_dp_rxdma_monitor_dst_ring_size(const struct ath12k_dp_profile_params *p)
+{
+ return p->rxdma_monitor_dst_ring_size;
+}
+
void ath12k_dp_vdev_tx_attach(struct ath12k *ar, struct ath12k_link_vif *arvif);
void ath12k_dp_partner_cc_init(struct ath12k_base *ab);
int ath12k_dp_pdev_alloc(struct ath12k_base *ab);
diff --git a/drivers/net/wireless/ath/ath12k/dp_rx.c b/drivers/net/wireless/ath/ath12k/dp_rx.c
index efc419d41d21..31e7d47f7734 100644
--- a/drivers/net/wireless/ath/ath12k/dp_rx.c
+++ b/drivers/net/wireless/ath/ath12k/dp_rx.c
@@ -330,16 +330,20 @@ static int ath12k_dp_rx_pdev_srng_alloc(struct ath12k *ar)
{
struct ath12k_pdev_dp *dp = &ar->dp;
struct ath12k_base *ab = ar->ab;
+ u32 monitor_dst_ring_size;
+ u32 mac_id = dp->mac_id;
int i;
int ret;
- u32 mac_id = dp->mac_id;
+
+ monitor_dst_ring_size =
+ ath12k_dp_rxdma_monitor_dst_ring_size(&ab->profile_param->dp_params);
for (i = 0; i < ab->hw_params->num_rxdma_per_pdev; i++) {
ret = ath12k_dp_srng_setup(ar->ab,
&dp->rxdma_mon_dst_ring[i],
HAL_RXDMA_MONITOR_DST,
0, mac_id + i,
- DP_RXDMA_MONITOR_DST_RING_SIZE(ab));
+ monitor_dst_ring_size);
if (ret) {
ath12k_warn(ar->ab,
"failed to setup HAL_RXDMA_MONITOR_DST\n");
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH ath-next 5/7] wifi: ath12k: convert ATH12K_NUM_POOL_TX_DESC to inline helper
2026-08-20 5:47 [PATCH ath-next 0/7] wifi: ath12k: convert DP profile parameter macros to inline helpers Aaradhana Sahu
` (3 preceding siblings ...)
2026-08-20 5:48 ` [PATCH ath-next 4/7] wifi: ath12k: convert DP_RXDMA_MONITOR_DST_RING_SIZE " Aaradhana Sahu
@ 2026-08-20 5:48 ` Aaradhana Sahu
2026-08-20 5:48 ` [PATCH ath-next 6/7] wifi: ath12k: convert ATH12K_RX_DESC_COUNT " Aaradhana Sahu
2026-08-20 5:48 ` [PATCH ath-next 7/7] wifi: ath12k: convert DP_RX_RELEASE_RING_SIZE " Aaradhana Sahu
6 siblings, 0 replies; 8+ messages in thread
From: Aaradhana Sahu @ 2026-08-20 5:48 UTC (permalink / raw)
To: ath12k
Cc: linux-wireless, jjohnson, quic_kiranv, baochen.qiang,
vasanthakumar.thiagarajan, quic_periyasa, Aaradhana Sahu
Replace ATH12K_NUM_POOL_TX_DESC with the ath12k_dp_num_pool_tx_desc()
static inline helper. Also replace ATH12K_TX_SPT_PAGES_PER_POOL,
ATH12K_NUM_TX_SPT_PAGES, and ATH12K_RX_SPT_PAGE_OFFSET, which are derived
from ATH12K_NUM_POOL_TX_DESC, with static inline helper functions.
Pass the DP profile parameters explicitly to improve type safety and
make the interface more explicit.
No functional change intended.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.6-01243-QCAHKSWPL_SILICONZ-1
Signed-off-by: Aaradhana Sahu <aaradhana.sahu@oss.qualcomm.com>
---
drivers/net/wireless/ath/ath12k/dp.c | 55 ++++++++++++++++-----------
drivers/net/wireless/ath/ath12k/dp.h | 32 ++++++++++++----
drivers/net/wireless/ath/ath12k/mac.c | 5 ++-
3 files changed, 61 insertions(+), 31 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/dp.c b/drivers/net/wireless/ath/ath12k/dp.c
index 5980946d1e82..93a41b2440da 100644
--- a/drivers/net/wireless/ath/ath12k/dp.c
+++ b/drivers/net/wireless/ath/ath12k/dp.c
@@ -967,14 +967,15 @@ void ath12k_dp_vdev_tx_attach(struct ath12k *ar, struct ath12k_link_vif *arvif)
static void ath12k_dp_cc_cleanup(struct ath12k_base *ab)
{
- struct ath12k_rx_desc_info *desc_info;
+ const struct ath12k_dp_profile_params *dp_params = &ab->profile_param->dp_params;
+ u32 pool_id, tx_spt_page, tx_spt_pages_per_pool;
struct ath12k_tx_desc_info *tx_desc_info, *tmp1;
struct ath12k_dp *dp = ath12k_ab_to_dp(ab);
+ struct ath12k_rx_desc_info *desc_info;
struct ath12k_skb_cb *skb_cb;
struct sk_buff *skb;
struct ath12k *ar;
int i, j;
- u32 pool_id, tx_spt_page;
if (!dp->spt_info)
return;
@@ -1056,12 +1057,13 @@ static void ath12k_dp_cc_cleanup(struct ath12k_base *ab)
}
if (dp->txbaddr) {
+ tx_spt_pages_per_pool = ath12k_dp_tx_spt_pages_per_pool(dp_params);
+
for (pool_id = 0; pool_id < ATH12K_HW_MAX_QUEUES; pool_id++) {
spin_lock_bh(&dp->tx_desc_lock[pool_id]);
- for (i = 0; i < ATH12K_TX_SPT_PAGES_PER_POOL(ab); i++) {
- tx_spt_page = i + pool_id *
- ATH12K_TX_SPT_PAGES_PER_POOL(ab);
+ for (i = 0; i < tx_spt_pages_per_pool; i++) {
+ tx_spt_page = i + pool_id * tx_spt_pages_per_pool;
if (!dp->txbaddr[tx_spt_page])
continue;
@@ -1155,13 +1157,15 @@ static void *ath12k_dp_cc_get_desc_addr_ptr(struct ath12k_dp *dp,
struct ath12k_rx_desc_info *ath12k_dp_get_rx_desc(struct ath12k_dp *dp,
u32 cookie)
{
+ const struct ath12k_dp_profile_params *dp_params;
struct ath12k_rx_desc_info **desc_addr_ptr;
u16 start_ppt_idx, end_ppt_idx, ppt_idx, spt_idx;
ppt_idx = u32_get_bits(cookie, ATH12K_DP_CC_COOKIE_PPT);
spt_idx = u32_get_bits(cookie, ATH12K_DP_CC_COOKIE_SPT);
+ dp_params = &dp->ab->profile_param->dp_params;
- start_ppt_idx = dp->rx_ppt_base + ATH12K_RX_SPT_PAGE_OFFSET(dp->ab);
+ start_ppt_idx = dp->rx_ppt_base + ath12k_dp_rx_spt_page_offset(dp_params);
end_ppt_idx = start_ppt_idx + ATH12K_NUM_RX_SPT_PAGES(dp->ab);
if (ppt_idx < start_ppt_idx ||
@@ -1179,15 +1183,16 @@ EXPORT_SYMBOL(ath12k_dp_get_rx_desc);
struct ath12k_tx_desc_info *ath12k_dp_get_tx_desc(struct ath12k_dp *dp,
u32 cookie)
{
+ const struct ath12k_dp_profile_params *dp_params;
struct ath12k_tx_desc_info **desc_addr_ptr;
u16 start_ppt_idx, end_ppt_idx, ppt_idx, spt_idx;
ppt_idx = u32_get_bits(cookie, ATH12K_DP_CC_COOKIE_PPT);
spt_idx = u32_get_bits(cookie, ATH12K_DP_CC_COOKIE_SPT);
+ dp_params = &dp->ab->profile_param->dp_params;
start_ppt_idx = ATH12K_TX_SPT_PAGE_OFFSET;
- end_ppt_idx = start_ppt_idx +
- (ATH12K_TX_SPT_PAGES_PER_POOL(dp->ab) * ATH12K_HW_MAX_QUEUES);
+ end_ppt_idx = start_ppt_idx + ath12k_dp_num_tx_spt_pages(dp_params);
if (ppt_idx < start_ppt_idx ||
ppt_idx >= end_ppt_idx ||
@@ -1202,12 +1207,13 @@ EXPORT_SYMBOL(ath12k_dp_get_tx_desc);
static int ath12k_dp_cc_desc_init(struct ath12k_base *ab)
{
- struct ath12k_dp *dp = ath12k_ab_to_dp(ab);
+ const struct ath12k_dp_profile_params *dp_params = &ab->profile_param->dp_params;
struct ath12k_rx_desc_info *rx_descs, **rx_desc_addr;
struct ath12k_tx_desc_info *tx_descs, **tx_desc_addr;
+ u32 i, j, pool_id, tx_spt_page, tx_spt_pages_per_pool;
u32 num_rx_spt_pages = ATH12K_NUM_RX_SPT_PAGES(ab);
- u32 i, j, pool_id, tx_spt_page;
- u32 ppt_idx, cookie_ppt_idx;
+ u32 ppt_idx, cookie_ppt_idx, rx_spt_page_offset;
+ struct ath12k_dp *dp = ath12k_ab_to_dp(ab);
spin_lock_bh(&dp->rx_desc_lock);
@@ -1219,9 +1225,9 @@ static int ath12k_dp_cc_desc_init(struct ath12k_base *ab)
return -ENOMEM;
}
- /* First ATH12K_NUM_RX_SPT_PAGES(ab) of allocated SPT pages are used for
- * RX
- */
+ rx_spt_page_offset = ath12k_dp_rx_spt_page_offset(dp_params);
+
+ /* First num_rx_spt_pages of allocated SPT pages are used for RX */
for (i = 0; i < num_rx_spt_pages; i++) {
rx_descs = kzalloc_objs(*rx_descs, ATH12K_MAX_SPT_ENTRIES,
GFP_ATOMIC);
@@ -1231,7 +1237,7 @@ static int ath12k_dp_cc_desc_init(struct ath12k_base *ab)
return -ENOMEM;
}
- ppt_idx = ATH12K_RX_SPT_PAGE_OFFSET(ab) + i;
+ ppt_idx = rx_spt_page_offset + i;
cookie_ppt_idx = dp->rx_ppt_base + ppt_idx;
dp->rxbaddr[i] = &rx_descs[0];
@@ -1250,14 +1256,17 @@ static int ath12k_dp_cc_desc_init(struct ath12k_base *ab)
spin_unlock_bh(&dp->rx_desc_lock);
dp->txbaddr = kzalloc_objs(struct ath12k_tx_desc_info *,
- ATH12K_NUM_TX_SPT_PAGES(ab), GFP_ATOMIC);
+ ath12k_dp_num_tx_spt_pages(dp_params),
+ GFP_ATOMIC);
if (!dp->txbaddr)
return -ENOMEM;
+ tx_spt_pages_per_pool = ath12k_dp_tx_spt_pages_per_pool(dp_params);
+
for (pool_id = 0; pool_id < ATH12K_HW_MAX_QUEUES; pool_id++) {
spin_lock_bh(&dp->tx_desc_lock[pool_id]);
- for (i = 0; i < ATH12K_TX_SPT_PAGES_PER_POOL(ab); i++) {
+ for (i = 0; i < tx_spt_pages_per_pool; i++) {
tx_descs = kzalloc_objs(*tx_descs,
ATH12K_MAX_SPT_ENTRIES,
GFP_ATOMIC);
@@ -1268,8 +1277,7 @@ static int ath12k_dp_cc_desc_init(struct ath12k_base *ab)
return -ENOMEM;
}
- tx_spt_page = i + pool_id *
- ATH12K_TX_SPT_PAGES_PER_POOL(ab);
+ tx_spt_page = i + pool_id * tx_spt_pages_per_pool;
ppt_idx = ATH12K_TX_SPT_PAGE_OFFSET + tx_spt_page;
dp->txbaddr[tx_spt_page] = &tx_descs[0];
@@ -1295,6 +1303,7 @@ static int ath12k_dp_cmem_init(struct ath12k_base *ab,
struct ath12k_dp *dp,
enum ath12k_dp_desc_type type)
{
+ const struct ath12k_dp_profile_params *dp_params = &ab->profile_param->dp_params;
u32 cmem_base;
int i, start, end;
@@ -1303,11 +1312,11 @@ static int ath12k_dp_cmem_init(struct ath12k_base *ab,
switch (type) {
case ATH12K_DP_TX_DESC:
start = ATH12K_TX_SPT_PAGE_OFFSET;
- end = start + ATH12K_NUM_TX_SPT_PAGES(ab);
+ end = start + ath12k_dp_num_tx_spt_pages(dp_params);
break;
case ATH12K_DP_RX_DESC:
cmem_base += ATH12K_PPT_ADDR_OFFSET(dp->rx_ppt_base);
- start = ATH12K_RX_SPT_PAGE_OFFSET(ab);
+ start = ath12k_dp_rx_spt_page_offset(dp_params);
end = start + ATH12K_NUM_RX_SPT_PAGES(ab);
break;
default:
@@ -1338,7 +1347,9 @@ void ath12k_dp_partner_cc_init(struct ath12k_base *ab)
static u32 ath12k_dp_get_num_spt_pages(struct ath12k_base *ab)
{
- return ATH12K_NUM_RX_SPT_PAGES(ab) + ATH12K_NUM_TX_SPT_PAGES(ab);
+ const struct ath12k_dp_profile_params *dp_params = &ab->profile_param->dp_params;
+
+ return ATH12K_NUM_RX_SPT_PAGES(ab) + ath12k_dp_num_tx_spt_pages(dp_params);
}
static int ath12k_dp_cc_init(struct ath12k_base *ab)
diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h
index a7cd2535866b..7e48379d18a0 100644
--- a/drivers/net/wireless/ath/ath12k/dp.h
+++ b/drivers/net/wireless/ath/ath12k/dp.h
@@ -249,8 +249,6 @@ struct ath12k_pdev_dp {
#define ATH12K_SHADOW_DP_TIMER_INTERVAL 20
#define ATH12K_SHADOW_CTRL_TIMER_INTERVAL 10
-#define ATH12K_NUM_POOL_TX_DESC(ab) \
- ((ab)->profile_param->dp_params.num_pool_tx_desc)
/* TODO: revisit this count during testing */
#define ATH12K_RX_DESC_COUNT(ab) \
((ab)->profile_param->dp_params.rx_desc_count)
@@ -268,13 +266,7 @@ struct ath12k_pdev_dp {
#define ATH12K_NUM_RX_SPT_PAGES(ab) ((ATH12K_RX_DESC_COUNT(ab)) / \
ATH12K_MAX_SPT_ENTRIES)
-#define ATH12K_TX_SPT_PAGES_PER_POOL(ab) (ATH12K_NUM_POOL_TX_DESC(ab) / \
- ATH12K_MAX_SPT_ENTRIES)
-#define ATH12K_NUM_TX_SPT_PAGES(ab) (ATH12K_TX_SPT_PAGES_PER_POOL(ab) * \
- ATH12K_HW_MAX_QUEUES)
-
#define ATH12K_TX_SPT_PAGE_OFFSET 0
-#define ATH12K_RX_SPT_PAGE_OFFSET(ab) ATH12K_NUM_TX_SPT_PAGES(ab)
/* The SPT pages are divided for RX and TX, first block for RX
* and remaining for TX
@@ -700,6 +692,30 @@ ath12k_dp_rxdma_monitor_dst_ring_size(const struct ath12k_dp_profile_params *p)
return p->rxdma_monitor_dst_ring_size;
}
+static inline u32
+ath12k_dp_num_pool_tx_desc(const struct ath12k_dp_profile_params *p)
+{
+ return p->num_pool_tx_desc;
+}
+
+static inline u32
+ath12k_dp_tx_spt_pages_per_pool(const struct ath12k_dp_profile_params *p)
+{
+ return ath12k_dp_num_pool_tx_desc(p) / ATH12K_MAX_SPT_ENTRIES;
+}
+
+static inline u32
+ath12k_dp_num_tx_spt_pages(const struct ath12k_dp_profile_params *p)
+{
+ return ath12k_dp_tx_spt_pages_per_pool(p) * ATH12K_HW_MAX_QUEUES;
+}
+
+static inline u32
+ath12k_dp_rx_spt_page_offset(const struct ath12k_dp_profile_params *p)
+{
+ return ath12k_dp_num_tx_spt_pages(p);
+}
+
void ath12k_dp_vdev_tx_attach(struct ath12k *ar, struct ath12k_link_vif *arvif);
void ath12k_dp_partner_cc_init(struct ath12k_base *ab);
int ath12k_dp_pdev_alloc(struct ath12k_base *ab);
diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
index 99bf5cf79d10..a997e888feb5 100644
--- a/drivers/net/wireless/ath/ath12k/mac.c
+++ b/drivers/net/wireless/ath/ath12k/mac.c
@@ -9732,6 +9732,7 @@ static int ath12k_mac_config_mon_status_default(struct ath12k *ar, bool enable)
static int ath12k_mac_start(struct ath12k *ar)
{
+ const struct ath12k_dp_profile_params *dp_params;
struct ath12k_hw *ah = ar->ah;
struct ath12k_base *ab = ar->ab;
struct ath12k_pdev *pdev = ar->pdev;
@@ -9740,6 +9741,8 @@ static int ath12k_mac_start(struct ath12k *ar)
lockdep_assert_held(&ah->hw_mutex);
lockdep_assert_wiphy(ath12k_ar_to_hw(ar)->wiphy);
+ dp_params = &ab->profile_param->dp_params;
+
ret = ath12k_wmi_pdev_set_param(ar, WMI_PDEV_PARAM_PMF_QOS,
1, pdev->pdev_id);
@@ -9788,7 +9791,7 @@ static int ath12k_mac_start(struct ath12k *ar)
if (ab->hw_params->supports_cong_ctrl_max_msdus) {
ret = ath12k_wmi_pdev_set_param(ar,
WMI_PDEV_PARAM_SET_CONG_CTRL_MAX_MSDUS,
- ATH12K_NUM_POOL_TX_DESC(ab),
+ ath12k_dp_num_pool_tx_desc(dp_params),
pdev->pdev_id);
if (ret) {
ath12k_err(ab,
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH ath-next 6/7] wifi: ath12k: convert ATH12K_RX_DESC_COUNT to inline helper
2026-08-20 5:47 [PATCH ath-next 0/7] wifi: ath12k: convert DP profile parameter macros to inline helpers Aaradhana Sahu
` (4 preceding siblings ...)
2026-08-20 5:48 ` [PATCH ath-next 5/7] wifi: ath12k: convert ATH12K_NUM_POOL_TX_DESC " Aaradhana Sahu
@ 2026-08-20 5:48 ` Aaradhana Sahu
2026-08-20 5:48 ` [PATCH ath-next 7/7] wifi: ath12k: convert DP_RX_RELEASE_RING_SIZE " Aaradhana Sahu
6 siblings, 0 replies; 8+ messages in thread
From: Aaradhana Sahu @ 2026-08-20 5:48 UTC (permalink / raw)
To: ath12k
Cc: linux-wireless, jjohnson, quic_kiranv, baochen.qiang,
vasanthakumar.thiagarajan, quic_periyasa, Aaradhana Sahu
Replace ATH12K_RX_DESC_COUNT with ath12k_dp_rx_desc_count() static inline
helper, also replace ATH12K_NUM_RX_SPT_PAGES which is calculated from
ATH12K_RX_DESC_COUNT into static inline helper functions and pass the DP
profile parameters explicitly to improve type safety and make the interface
explicit.
Also remove the unused ATH12K_NUM_TX_SPT_PAGE_START macro.
No functional change intended.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.6-01243-QCAHKSWPL_SILICONZ-1
Signed-off-by: Aaradhana Sahu <aaradhana.sahu@oss.qualcomm.com>
---
drivers/net/wireless/ath/ath12k/dp.c | 18 +++++++++++-------
drivers/net/wireless/ath/ath12k/dp.h | 24 ++++++++++++------------
2 files changed, 23 insertions(+), 19 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/dp.c b/drivers/net/wireless/ath/ath12k/dp.c
index 93a41b2440da..417d960bbd07 100644
--- a/drivers/net/wireless/ath/ath12k/dp.c
+++ b/drivers/net/wireless/ath/ath12k/dp.c
@@ -968,7 +968,7 @@ void ath12k_dp_vdev_tx_attach(struct ath12k *ar, struct ath12k_link_vif *arvif)
static void ath12k_dp_cc_cleanup(struct ath12k_base *ab)
{
const struct ath12k_dp_profile_params *dp_params = &ab->profile_param->dp_params;
- u32 pool_id, tx_spt_page, tx_spt_pages_per_pool;
+ u32 pool_id, tx_spt_page, tx_spt_pages_per_pool, num_rx_spt_pages;
struct ath12k_tx_desc_info *tx_desc_info, *tmp1;
struct ath12k_dp *dp = ath12k_ab_to_dp(ab);
struct ath12k_rx_desc_info *desc_info;
@@ -983,8 +983,10 @@ static void ath12k_dp_cc_cleanup(struct ath12k_base *ab)
/* RX Descriptor cleanup */
spin_lock_bh(&dp->rx_desc_lock);
+ num_rx_spt_pages = ath12k_dp_num_rx_spt_pages(dp_params);
+
if (dp->rxbaddr) {
- for (i = 0; i < ATH12K_NUM_RX_SPT_PAGES(ab); i++) {
+ for (i = 0; i < num_rx_spt_pages; i++) {
if (!dp->rxbaddr[i])
continue;
@@ -1166,7 +1168,7 @@ struct ath12k_rx_desc_info *ath12k_dp_get_rx_desc(struct ath12k_dp *dp,
dp_params = &dp->ab->profile_param->dp_params;
start_ppt_idx = dp->rx_ppt_base + ath12k_dp_rx_spt_page_offset(dp_params);
- end_ppt_idx = start_ppt_idx + ATH12K_NUM_RX_SPT_PAGES(dp->ab);
+ end_ppt_idx = start_ppt_idx + ath12k_dp_num_rx_spt_pages(dp_params);
if (ppt_idx < start_ppt_idx ||
ppt_idx >= end_ppt_idx ||
@@ -1208,10 +1210,10 @@ EXPORT_SYMBOL(ath12k_dp_get_tx_desc);
static int ath12k_dp_cc_desc_init(struct ath12k_base *ab)
{
const struct ath12k_dp_profile_params *dp_params = &ab->profile_param->dp_params;
+ u32 num_rx_spt_pages = ath12k_dp_num_rx_spt_pages(dp_params);
struct ath12k_rx_desc_info *rx_descs, **rx_desc_addr;
struct ath12k_tx_desc_info *tx_descs, **tx_desc_addr;
u32 i, j, pool_id, tx_spt_page, tx_spt_pages_per_pool;
- u32 num_rx_spt_pages = ATH12K_NUM_RX_SPT_PAGES(ab);
u32 ppt_idx, cookie_ppt_idx, rx_spt_page_offset;
struct ath12k_dp *dp = ath12k_ab_to_dp(ab);
@@ -1317,7 +1319,7 @@ static int ath12k_dp_cmem_init(struct ath12k_base *ab,
case ATH12K_DP_RX_DESC:
cmem_base += ATH12K_PPT_ADDR_OFFSET(dp->rx_ppt_base);
start = ath12k_dp_rx_spt_page_offset(dp_params);
- end = start + ATH12K_NUM_RX_SPT_PAGES(ab);
+ end = start + ath12k_dp_num_rx_spt_pages(dp_params);
break;
default:
ath12k_err(ab, "invalid descriptor type %d in cmem init\n", type);
@@ -1349,7 +1351,8 @@ static u32 ath12k_dp_get_num_spt_pages(struct ath12k_base *ab)
{
const struct ath12k_dp_profile_params *dp_params = &ab->profile_param->dp_params;
- return ATH12K_NUM_RX_SPT_PAGES(ab) + ath12k_dp_num_tx_spt_pages(dp_params);
+ return ath12k_dp_num_rx_spt_pages(dp_params) +
+ ath12k_dp_num_tx_spt_pages(dp_params);
}
static int ath12k_dp_cc_init(struct ath12k_base *ab)
@@ -1377,7 +1380,8 @@ static int ath12k_dp_cc_init(struct ath12k_base *ab)
return -ENOMEM;
}
- dp->rx_ppt_base = ab->device_id * ATH12K_NUM_RX_SPT_PAGES(ab);
+ dp->rx_ppt_base = ab->device_id *
+ ath12k_dp_num_rx_spt_pages(&ab->profile_param->dp_params);
for (i = 0; i < dp->num_spt_pages; i++) {
dp->spt_info[i].vaddr = dma_alloc_coherent(ab->dev,
diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h
index 7e48379d18a0..c8ca3ab4d5e1 100644
--- a/drivers/net/wireless/ath/ath12k/dp.h
+++ b/drivers/net/wireless/ath/ath12k/dp.h
@@ -249,10 +249,6 @@ struct ath12k_pdev_dp {
#define ATH12K_SHADOW_DP_TIMER_INTERVAL 20
#define ATH12K_SHADOW_CTRL_TIMER_INTERVAL 10
-/* TODO: revisit this count during testing */
-#define ATH12K_RX_DESC_COUNT(ab) \
- ((ab)->profile_param->dp_params.rx_desc_count)
-
#define ATH12K_PAGE_SIZE PAGE_SIZE
/* Total 1024 entries in PPT, i.e 4K/4 considering 4K aligned
@@ -263,16 +259,8 @@ struct ath12k_pdev_dp {
/* Total 512 entries in a SPT, i.e 4K Page/8 */
#define ATH12K_MAX_SPT_ENTRIES 512
-#define ATH12K_NUM_RX_SPT_PAGES(ab) ((ATH12K_RX_DESC_COUNT(ab)) / \
- ATH12K_MAX_SPT_ENTRIES)
-
#define ATH12K_TX_SPT_PAGE_OFFSET 0
-/* The SPT pages are divided for RX and TX, first block for RX
- * and remaining for TX
- */
-#define ATH12K_NUM_TX_SPT_PAGE_START(ab) ATH12K_NUM_RX_SPT_PAGES(ab)
-
#define ATH12K_DP_RX_DESC_MAGIC 0xBABABABA
/* 4K aligned address have last 12 bits set to 0, this check is done
@@ -716,6 +704,18 @@ ath12k_dp_rx_spt_page_offset(const struct ath12k_dp_profile_params *p)
return ath12k_dp_num_tx_spt_pages(p);
}
+static inline u32
+ath12k_dp_rx_desc_count(const struct ath12k_dp_profile_params *p)
+{
+ return p->rx_desc_count;
+}
+
+static inline u32
+ath12k_dp_num_rx_spt_pages(const struct ath12k_dp_profile_params *p)
+{
+ return ath12k_dp_rx_desc_count(p) / ATH12K_MAX_SPT_ENTRIES;
+}
+
void ath12k_dp_vdev_tx_attach(struct ath12k *ar, struct ath12k_link_vif *arvif);
void ath12k_dp_partner_cc_init(struct ath12k_base *ab);
int ath12k_dp_pdev_alloc(struct ath12k_base *ab);
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH ath-next 7/7] wifi: ath12k: convert DP_RX_RELEASE_RING_SIZE to inline helper
2026-08-20 5:47 [PATCH ath-next 0/7] wifi: ath12k: convert DP profile parameter macros to inline helpers Aaradhana Sahu
` (5 preceding siblings ...)
2026-08-20 5:48 ` [PATCH ath-next 6/7] wifi: ath12k: convert ATH12K_RX_DESC_COUNT " Aaradhana Sahu
@ 2026-08-20 5:48 ` Aaradhana Sahu
6 siblings, 0 replies; 8+ messages in thread
From: Aaradhana Sahu @ 2026-08-20 5:48 UTC (permalink / raw)
To: ath12k
Cc: linux-wireless, jjohnson, quic_kiranv, baochen.qiang,
vasanthakumar.thiagarajan, quic_periyasa, Aaradhana Sahu
Replace DP_RX_RELEASE_RING_SIZE macro with ath12k_dp_rx_release_ring_size()
static inline helper. Pass the DP profile parameters explicitly to
improve type safety and make the interface explicit.
No functional change intended.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.6-01243-QCAHKSWPL_SILICONZ-1
Signed-off-by: Aaradhana Sahu <aaradhana.sahu@oss.qualcomm.com>
---
drivers/net/wireless/ath/ath12k/dp.c | 2 +-
drivers/net/wireless/ath/ath12k/dp.h | 8 ++++++--
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/dp.c b/drivers/net/wireless/ath/ath12k/dp.c
index 417d960bbd07..779529d189f8 100644
--- a/drivers/net/wireless/ath/ath12k/dp.c
+++ b/drivers/net/wireless/ath/ath12k/dp.c
@@ -488,7 +488,7 @@ static int ath12k_dp_srng_common_setup(struct ath12k_base *ab)
ret = ath12k_dp_srng_setup(ab, &dp->rx_rel_ring, HAL_WBM2SW_RELEASE,
HAL_WBM2SW_REL_ERR_RING_NUM, 0,
- DP_RX_RELEASE_RING_SIZE(ab));
+ ath12k_dp_rx_release_ring_size(dp_params));
if (ret) {
ath12k_warn(ab, "failed to set up rx_rel ring :%d\n", ret);
goto err;
diff --git a/drivers/net/wireless/ath/ath12k/dp.h b/drivers/net/wireless/ath/ath12k/dp.h
index c8ca3ab4d5e1..ff62773cfa9a 100644
--- a/drivers/net/wireless/ath/ath12k/dp.h
+++ b/drivers/net/wireless/ath/ath12k/dp.h
@@ -206,8 +206,6 @@ struct ath12k_pdev_dp {
#define DP_REO_DST_RING_MAX 8
#define DP_REO_DST_RING_SIZE 2048
#define DP_REO_REINJECT_RING_SIZE 32
-#define DP_RX_RELEASE_RING_SIZE(ab) \
- ((ab)->profile_param->dp_params.rx_release_ring_size)
#define DP_REO_EXCEPTION_RING_SIZE 128
#define DP_REO_CMD_RING_SIZE 256
#define DP_REO_STATUS_RING_SIZE 2048
@@ -716,6 +714,12 @@ ath12k_dp_num_rx_spt_pages(const struct ath12k_dp_profile_params *p)
return ath12k_dp_rx_desc_count(p) / ATH12K_MAX_SPT_ENTRIES;
}
+static inline u32
+ath12k_dp_rx_release_ring_size(const struct ath12k_dp_profile_params *p)
+{
+ return p->rx_release_ring_size;
+}
+
void ath12k_dp_vdev_tx_attach(struct ath12k *ar, struct ath12k_link_vif *arvif);
void ath12k_dp_partner_cc_init(struct ath12k_base *ab);
int ath12k_dp_pdev_alloc(struct ath12k_base *ab);
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread