From fbf1e82c6b16855bd0ce78d467bcfe8eaecbe122 Mon Sep 17 00:00:00 2001 From: Pavankumar Nandeshwar Date: Thu, 10 Mar 2022 01:25:52 -0800 Subject: [PATCH] qcacmn: Call dp_tx_nbuf_unmap instead of directly calling unmap API Call dp_tx_nbuf_unmap instead of directly calling qdf_nbuf_unmap_nbytes_single Change-Id: I4d28ccdc45d99b16cf9883742742ee7b36ba1022 CRs-Fixed: 3146931 --- dp/wifi3.0/dp_tx.c | 123 +++++++++++++++++++++++++-------------------- 1 file changed, 68 insertions(+), 55 deletions(-) diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index 07208745ab..9fab35de92 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -148,36 +148,6 @@ dp_update_tx_desc_stats(struct dp_pdev *pdev) } #endif /* CONFIG_WLAN_SYSFS_MEM_STATS */ -#if defined(WLAN_TX_PKT_CAPTURE_ENH) || defined(FEATURE_PERPKT_INFO) -static inline -void dp_tx_enh_unmap(struct dp_soc *soc, struct dp_tx_desc_s *desc) -{ - qdf_nbuf_unmap_nbytes_single(soc->osdev, desc->nbuf, - QDF_DMA_TO_DEVICE, - desc->nbuf->len); - desc->flags |= DP_TX_DESC_FLAG_UNMAP_DONE; -} - -static inline void dp_tx_unmap(struct dp_soc *soc, struct dp_tx_desc_s *desc) -{ - if (qdf_likely(!(desc->flags & DP_TX_DESC_FLAG_UNMAP_DONE))) - qdf_nbuf_unmap_nbytes_single(soc->osdev, desc->nbuf, - QDF_DMA_TO_DEVICE, - desc->nbuf->len); -} -#else -static inline -void dp_tx_enh_unmap(struct dp_soc *soc, struct dp_tx_desc_s *desc) -{ -} - -static inline void dp_tx_unmap(struct dp_soc *soc, struct dp_tx_desc_s *desc) -{ - qdf_nbuf_unmap_nbytes_single(soc->osdev, desc->nbuf, - QDF_DMA_TO_DEVICE, desc->nbuf->len); -} -#endif - #ifdef QCA_TX_LIMIT_CHECK /** * dp_tx_limit_check - Check if allocated tx descriptors reached @@ -1928,27 +1898,10 @@ static inline QDF_STATUS dp_tx_msdu_single_map(struct dp_vdev *vdev, } #endif -#if defined(QCA_DP_TX_NBUF_NO_MAP_UNMAP) && !defined(BUILD_X86) static inline -qdf_dma_addr_t dp_tx_nbuf_map(struct dp_vdev *vdev, - struct dp_tx_desc_s *tx_desc, - qdf_nbuf_t nbuf) -{ - qdf_nbuf_dma_clean_range((void *)nbuf->data, - (void *)(nbuf->data + nbuf->len)); - return (qdf_dma_addr_t)qdf_mem_virt_to_phys(nbuf->data); -} - -static inline -void dp_tx_nbuf_unmap(struct dp_soc *soc, - struct dp_tx_desc_s *desc) -{ -} -#else -static inline -qdf_dma_addr_t dp_tx_nbuf_map(struct dp_vdev *vdev, - struct dp_tx_desc_s *tx_desc, - qdf_nbuf_t nbuf) +qdf_dma_addr_t dp_tx_nbuf_map_regular(struct dp_vdev *vdev, + struct dp_tx_desc_s *tx_desc, + qdf_nbuf_t nbuf) { QDF_STATUS ret = QDF_STATUS_E_FAILURE; @@ -1960,8 +1913,7 @@ qdf_dma_addr_t dp_tx_nbuf_map(struct dp_vdev *vdev, } static inline -void dp_tx_nbuf_unmap(struct dp_soc *soc, - struct dp_tx_desc_s *desc) +void dp_tx_nbuf_unmap_regular(struct dp_soc *soc, struct dp_tx_desc_s *desc) { qdf_nbuf_unmap_nbytes_single_paddr(soc->osdev, desc->nbuf, @@ -1969,6 +1921,69 @@ void dp_tx_nbuf_unmap(struct dp_soc *soc, QDF_DMA_TO_DEVICE, desc->length); } + +#if defined(QCA_DP_TX_NBUF_NO_MAP_UNMAP) && !defined(BUILD_X86) +static inline +qdf_dma_addr_t dp_tx_nbuf_map(struct dp_vdev *vdev, + struct dp_tx_desc_s *tx_desc, + qdf_nbuf_t nbuf) +{ + if (qdf_likely(tx_desc->flags & DP_TX_DESC_FLAG_SIMPLE)) { + qdf_nbuf_dma_clean_range((void *)nbuf->data, + (void *)(nbuf->data + nbuf->len)); + return (qdf_dma_addr_t)qdf_mem_virt_to_phys(nbuf->data); + } else { + return dp_tx_nbuf_map_regular(vdev, tx_desc, nbuf); + } +} + +static inline +void dp_tx_nbuf_unmap(struct dp_soc *soc, + struct dp_tx_desc_s *desc) +{ + if (qdf_unlikely(!(desc->flags & DP_TX_DESC_FLAG_SIMPLE))) + return dp_tx_nbuf_unmap_regular(soc, desc); +} +#else +static inline +qdf_dma_addr_t dp_tx_nbuf_map(struct dp_vdev *vdev, + struct dp_tx_desc_s *tx_desc, + qdf_nbuf_t nbuf) +{ + return dp_tx_nbuf_map_regular(vdev, tx_desc, nbuf); +} + +static inline +void dp_tx_nbuf_unmap(struct dp_soc *soc, + struct dp_tx_desc_s *desc) +{ + return dp_tx_nbuf_unmap_regular(soc, desc); +} +#endif + +#if defined(WLAN_TX_PKT_CAPTURE_ENH) || defined(FEATURE_PERPKT_INFO) +static inline +void dp_tx_enh_unmap(struct dp_soc *soc, struct dp_tx_desc_s *desc) +{ + dp_tx_nbuf_unmap(soc, desc); + desc->flags |= DP_TX_DESC_FLAG_UNMAP_DONE; +} + +static inline void dp_tx_unmap(struct dp_soc *soc, struct dp_tx_desc_s *desc) +{ + if (qdf_likely(!(desc->flags & DP_TX_DESC_FLAG_UNMAP_DONE))) + dp_tx_nbuf_unmap(soc, desc); +} +#else +static inline +void dp_tx_enh_unmap(struct dp_soc *soc, struct dp_tx_desc_s *desc) +{ +} + +static inline void dp_tx_unmap(struct dp_soc *soc, struct dp_tx_desc_s *desc) +{ + dp_tx_nbuf_unmap(soc, desc); +} #endif #ifdef MESH_MODE_SUPPORT @@ -2181,9 +2196,7 @@ dp_tx_send_msdu_single(struct dp_vdev *vdev, qdf_nbuf_t nbuf, tx_desc, tx_q->ring_id); dp_tx_desc_history_add(soc, tx_desc->dma_addr, nbuf, tx_desc->id, DP_TX_DESC_UNMAP); - qdf_nbuf_unmap_nbytes_single(vdev->osdev, nbuf, - QDF_DMA_TO_DEVICE, - nbuf->len); + dp_tx_nbuf_unmap(soc, tx_desc); drop_code = TX_HW_ENQUEUE; goto release_desc; }