From 6512d66c27f41f924fdba339fd09e504145d62a2 Mon Sep 17 00:00:00 2001 From: Yeshwanth Sriram Guntuka Date: Mon, 5 Apr 2021 19:00:15 +0530 Subject: [PATCH] qcacmn: Create IPA SMMU maps for host replenished bufs Buffers replenished post processing entries in the REO2TCL ring do not have ipa smmu mappings created when RX_PREALLOC_BUFFER_POOL feature is disabled. This will result in SMMU fault when IPA HW accesses such replenished buffers. Fix is to create IPA SMMU mapping for replenished buffers when RX_PREALLOC_BUFFER_POOL feature is disabled as well. Change-Id: I0fe611a1279b91a3e45bc269348e05de9015d596 CRs-Fixed: 2915686 --- dp/wifi3.0/dp_rx.c | 5 +++++ dp/wifi3.0/dp_rx_buffer_pool.c | 11 +---------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c index 2806e43bb9..fca424cef6 100644 --- a/dp/wifi3.0/dp_rx.c +++ b/dp/wifi3.0/dp_rx.c @@ -243,6 +243,11 @@ dp_pdev_nbuf_alloc_and_map_replenish(struct dp_soc *dp_soc, nbuf_frag_info_t->paddr = qdf_nbuf_get_frag_paddr((nbuf_frag_info_t->virt_addr).nbuf, 0); + dp_ipa_handle_rx_buf_smmu_mapping(dp_soc, + (qdf_nbuf_t)((nbuf_frag_info_t->virt_addr).nbuf), + rx_desc_pool->buf_size, + true); + ret = dp_check_paddr(dp_soc, &((nbuf_frag_info_t->virt_addr).nbuf), &nbuf_frag_info_t->paddr, rx_desc_pool); diff --git a/dp/wifi3.0/dp_rx_buffer_pool.c b/dp/wifi3.0/dp_rx_buffer_pool.c index c6e4a2bcc2..cbc1e427c0 100644 --- a/dp/wifi3.0/dp_rx_buffer_pool.c +++ b/dp/wifi3.0/dp_rx_buffer_pool.c @@ -260,21 +260,12 @@ dp_rx_buffer_pool_nbuf_map(struct dp_soc *soc, { QDF_STATUS ret = QDF_STATUS_SUCCESS; - if (!QDF_NBUF_CB_PADDR((nbuf_frag_info_t->virt_addr).nbuf)) { + if (!QDF_NBUF_CB_PADDR((nbuf_frag_info_t->virt_addr).nbuf)) ret = qdf_nbuf_map_nbytes_single(soc->osdev, (nbuf_frag_info_t->virt_addr).nbuf, QDF_DMA_FROM_DEVICE, rx_desc_pool->buf_size); - if (qdf_unlikely(QDF_IS_STATUS_ERROR(ret))) - return ret; - } - - dp_ipa_handle_rx_buf_smmu_mapping(soc, - (qdf_nbuf_t)((nbuf_frag_info_t->virt_addr).nbuf), - rx_desc_pool->buf_size, - true); - return ret; }