wlan-ap-Telecominfraproject/feeds/ipq95xx/mac80211/patches/qca/685-03-wifi-ath12k-Refactor-SW-cookie-procedure.patch
John Crispin 144c5d00f4 ipq95xx/mac80211: update to ATH12.3-CS
Signed-off-by: John Crispin <john@phrozen.org>
2024-02-28 18:56:21 +01:00

135 lines
5.0 KiB
Diff

From 3931964b94389f164accc1945da8ee03cd59e7c6 Mon Sep 17 00:00:00 2001
From: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Date: Tue, 1 Nov 2022 15:12:30 +0530
Subject: [PATCH] wifi: ath12k: Refactor SW cookie procedure
Since Rxdma is DMAC type, so no need to handle mac_id specific handling in the
replinish API. So removed. Also in the SW cookie, no need to reserve the mac_id
bits.
Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
---
drivers/net/wireless/ath/ath12k/dbring.c | 4 ++--
drivers/net/wireless/ath/ath12k/dp.c | 2 +-
drivers/net/wireless/ath/ath12k/dp.h | 6 ++++--
drivers/net/wireless/ath/ath12k/dp_rx.c | 15 ++++++---------
drivers/net/wireless/ath/ath12k/dp_rx.h | 2 +-
5 files changed, 14 insertions(+), 15 deletions(-)
--- a/drivers/net/wireless/ath/ath12k/dbring.c
+++ b/drivers/net/wireless/ath/ath12k/dbring.c
@@ -51,8 +51,8 @@ static int ath12k_dbring_bufs_replenish(
buff->paddr = paddr;
- cookie = u32_encode_bits(ar->pdev_idx, DP_RXDMA_BUF_COOKIE_PDEV_ID) |
- u32_encode_bits(buf_id, DP_RXDMA_BUF_COOKIE_BUF_ID);
+ cookie = u32_encode_bits(ar->pdev_idx, DP_DIR_BUF_COOKIE_PDEV_ID) |
+ u32_encode_bits(buf_id, DP_DIR_BUF_COOKIE_BUF_ID);
ath12k_hal_rx_buf_addr_info_set(desc, paddr, cookie, 0);
--- a/drivers/net/wireless/ath/ath12k/dp.c
+++ b/drivers/net/wireless/ath/ath12k/dp.c
@@ -1001,7 +1001,7 @@ int ath12k_dp_service_srng(struct ath12k
struct ath12k_dp *dp = &ab->dp;
struct dp_rxdma_ring *rx_ring = &dp->rx_refill_buf_ring;
- ath12k_dp_rx_bufs_replenish(ab, 0, rx_ring, 0,
+ ath12k_dp_rx_bufs_replenish(ab, rx_ring, 0,
ab->hw_params->hal_params->rx_buf_rbm,
true);
}
--- a/drivers/net/wireless/ath/ath12k/dp.h
+++ b/drivers/net/wireless/ath/ath12k/dp.h
@@ -182,8 +182,10 @@ struct ath12k_pdev_dp {
#define DP_RX_BUFFER_SIZE_LITE 1024
#define DP_RX_BUFFER_ALIGN_SIZE 128
-#define DP_RXDMA_BUF_COOKIE_BUF_ID GENMASK(17, 0)
-#define DP_RXDMA_BUF_COOKIE_PDEV_ID GENMASK(19, 18)
+#define DP_DIR_BUF_COOKIE_BUF_ID GENMASK(17, 0)
+#define DP_DIR_BUF_COOKIE_PDEV_ID GENMASK(19, 18)
+
+#define DP_RXDMA_BUF_COOKIE_BUF_ID GENMASK(19, 0)
#define DP_HW2SW_MACID(mac_id) ({ typeof(mac_id) x = (mac_id); x ? x - 1 : 0; })
#define DP_SW2HW_MACID(mac_id) ((mac_id) + 1)
--- a/drivers/net/wireless/ath/ath12k/dp_rx.c
+++ b/drivers/net/wireless/ath/ath12k/dp_rx.c
@@ -283,7 +283,7 @@ static int ath12k_dp_purge_mon_ring(stru
}
/* Returns number of Rx buffers replenished */
-int ath12k_dp_rx_bufs_replenish(struct ath12k_base *ab, int mac_id,
+int ath12k_dp_rx_bufs_replenish(struct ath12k_base *ab,
struct dp_rxdma_ring *rx_ring,
int req_entries,
enum hal_rx_buf_return_buf_manager mgr,
@@ -364,9 +364,7 @@ int ath12k_dp_rx_bufs_replenish(struct a
spin_unlock_bh(&rx_ring->idr_lock);
if (buf_id < 0)
goto fail_idr_remove;
- cookie = u32_encode_bits(mac_id,
- DP_RXDMA_BUF_COOKIE_PDEV_ID) |
- u32_encode_bits(buf_id,
+ cookie = u32_encode_bits(buf_id,
DP_RXDMA_BUF_COOKIE_BUF_ID);
}
@@ -464,7 +462,7 @@ static int ath12k_dp_rxdma_ring_buf_setu
if ((ringtype == HAL_RXDMA_MONITOR_BUF) || (ringtype == HAL_TX_MONITOR_BUF))
ath12k_dp_mon_buf_replenish(ab, rx_ring, num_entries);
else
- ath12k_dp_rx_bufs_replenish(ab, 0, rx_ring, num_entries,
+ ath12k_dp_rx_bufs_replenish(ab, rx_ring, num_entries,
ab->hw_params->hal_params->rx_buf_rbm,
ringtype == HAL_RXDMA_BUF);
return 0;
@@ -3069,7 +3067,6 @@ int ath12k_dp_rx_process(struct ath12k_b
bool done = false;
int mac_id;
u32 *rx_desc;
- int i;
u64 desc_va;
struct ath12k_sta *ahsta = NULL;
struct ath12k_link_sta *arsta = NULL;
@@ -3194,7 +3191,7 @@ try_again:
goto exit;
/* TODO: Move to implicit BM? */
- ath12k_dp_rx_bufs_replenish(ab, i, rx_ring, num_buffs_reaped,
+ ath12k_dp_rx_bufs_replenish(ab, rx_ring, num_buffs_reaped,
ab->hw_params->hal_params->rx_buf_rbm, true);
ath12k_dp_rx_process_received_packets(ab, napi, &msdu_list,
@@ -3965,7 +3962,7 @@ exit:
rx_ring = &dp->rx_refill_buf_ring;
- ath12k_dp_rx_bufs_replenish(ab, 0, rx_ring, tot_n_bufs_reaped,
+ ath12k_dp_rx_bufs_replenish(ab, rx_ring, tot_n_bufs_reaped,
ab->hw_params->hal_params->rx_buf_rbm, true);
return tot_n_bufs_reaped;
@@ -4365,7 +4362,7 @@ int ath12k_dp_rx_process_wbm_err(struct
if (!total_num_buffs_reaped)
goto done;
- ath12k_dp_rx_bufs_replenish(ab, 0, rx_ring, num_buffs_reaped,
+ ath12k_dp_rx_bufs_replenish(ab, rx_ring, num_buffs_reaped,
ab->hw_params->hal_params->rx_buf_rbm, true);
rcu_read_lock();
--- a/drivers/net/wireless/ath/ath12k/dp_rx.h
+++ b/drivers/net/wireless/ath/ath12k/dp_rx.h
@@ -116,7 +116,7 @@ int ath12k_dp_rx_process_err(struct ath1
int ath12k_dp_rx_process(struct ath12k_base *ab, int mac_id,
struct napi_struct *napi,
int budget);
-int ath12k_dp_rx_bufs_replenish(struct ath12k_base *ab, int mac_id,
+int ath12k_dp_rx_bufs_replenish(struct ath12k_base *ab,
struct dp_rxdma_ring *rx_ring,
int req_entries,
enum hal_rx_buf_return_buf_manager mgr,