summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJinwei Chen <jinweic@codeaurora.org>2021-01-27 23:00:36 -0800
committerPaul Chen <chenpaul@google.com>2021-06-30 07:19:02 +0000
commit390e07b9f996f755928bcf8317b03d3b350110c7 (patch)
tree732257c52461b8eb104b61b5de24260867fc6b4e
parent4c496e937225a44f8e5eaadd37b6fa1f9d2a7773 (diff)
downloadqca-wfi-host-cmn-390e07b9f996f755928bcf8317b03d3b350110c7.tar.gz
qcacmn: handle IPA buffer smmu map/unmap correctly
Handle ipa buffer smmu map/unmap with below changes, (1) Do IPA smmu unmap for RX buffer received from REO exception/WBM RX release/REO DST/RXDMA DST ring. (2) Align IPA smmu map length to qdf_nbuf_map_nytes_single() with fixed length. Change-Id: I1ed46b31ed31f5b7e4e2484d519bc85d35ce1e69 CRs-Fixed: 2728644 Bug: 190403734 Signed-off-by: Srinivas Girigowda <quic_sgirigow@quicinc.com> (cherry picked from commit 997001f446effaf4fd9db0aa19bca6ebd92fd65f)
-rw-r--r--dp/wifi3.0/dp_rx.c1
-rw-r--r--dp/wifi3.0/dp_rx_defrag.c2
-rw-r--r--dp/wifi3.0/dp_rx_err.c3
3 files changed, 6 insertions, 0 deletions
diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c
index 2d47beb28..aaabb9b69 100644
--- a/dp/wifi3.0/dp_rx.c
+++ b/dp/wifi3.0/dp_rx.c
@@ -1377,6 +1377,7 @@ dp_rx_process(struct dp_intr *int_ctx, void *hal_ring, uint32_t quota)
qdf_assert(rx_desc);
rx_bufs_reaped[rx_desc->pool_id]++;
+ dp_ipa_handle_rx_buf_smmu_mapping(soc, rx_desc->nbuf, false);
/* TODO */
/*
* Need a separate API for unmapping based on
diff --git a/dp/wifi3.0/dp_rx_defrag.c b/dp/wifi3.0/dp_rx_defrag.c
index 0f35d9cd5..1c9043d8f 100644
--- a/dp/wifi3.0/dp_rx_defrag.c
+++ b/dp/wifi3.0/dp_rx_defrag.c
@@ -1612,6 +1612,8 @@ uint32_t dp_rx_frag_handle(struct dp_soc *soc, void *ring_desc,
msdu = rx_desc->nbuf;
+ dp_ipa_handle_rx_buf_smmu_mapping(soc, msdu, false);
+
qdf_nbuf_unmap_single(soc->osdev, msdu,
QDF_DMA_BIDIRECTIONAL);
diff --git a/dp/wifi3.0/dp_rx_err.c b/dp/wifi3.0/dp_rx_err.c
index c3a5edaf9..7f77d2e8c 100644
--- a/dp/wifi3.0/dp_rx_err.c
+++ b/dp/wifi3.0/dp_rx_err.c
@@ -29,6 +29,7 @@
#include <linux/ieee80211.h>
#endif
#include "dp_rx_defrag.h"
+#include "dp_ipa.h"
#include <enet.h> /* LLC_SNAP_HDR_LEN */
#ifdef RX_DESC_DEBUG_CHECK
@@ -1087,6 +1088,7 @@ dp_rx_wbm_err_process(struct dp_soc *soc, void *hal_ring, uint32_t quota)
}
nbuf = rx_desc->nbuf;
+ dp_ipa_handle_rx_buf_smmu_mapping(soc, nbuf, false);
qdf_nbuf_unmap_single(soc->osdev, nbuf, QDF_DMA_BIDIRECTIONAL);
/*
@@ -1303,6 +1305,7 @@ dp_rx_err_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
qdf_assert(rx_desc);
msdu = rx_desc->nbuf;
+ dp_ipa_handle_rx_buf_smmu_mapping(soc, msdu, false);
qdf_nbuf_unmap_single(soc->osdev, msdu,
QDF_DMA_FROM_DEVICE);