diff options
author | Jinwei Chen <jinweic@codeaurora.org> | 2021-01-27 23:00:36 -0800 |
---|---|---|
committer | Paul Chen <chenpaul@google.com> | 2021-06-30 07:19:02 +0000 |
commit | 390e07b9f996f755928bcf8317b03d3b350110c7 (patch) | |
tree | 732257c52461b8eb104b61b5de24260867fc6b4e | |
parent | 4c496e937225a44f8e5eaadd37b6fa1f9d2a7773 (diff) | |
download | qca-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.c | 1 | ||||
-rw-r--r-- | dp/wifi3.0/dp_rx_defrag.c | 2 | ||||
-rw-r--r-- | dp/wifi3.0/dp_rx_err.c | 3 |
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); |