diff --git a/dp/wifi3.0/dp_rx_desc.c b/dp/wifi3.0/dp_rx_desc.c index da0e66571d..32e2ddb990 100644 --- a/dp/wifi3.0/dp_rx_desc.c +++ b/dp/wifi3.0/dp_rx_desc.c @@ -174,8 +174,12 @@ static QDF_STATUS __dp_rx_desc_nbuf_free(struct dp_soc *soc, if (!rx_desc->unmapped) { dp_ipa_handle_rx_buf_smmu_mapping(soc, nbuf, false); - qdf_nbuf_unmap_single(soc->osdev, nbuf, - QDF_DMA_BIDIRECTIONAL); + qdf_nbuf_unmap_nbytes_single( + soc->osdev, + rx_desc->nbuf, + QDF_DMA_BIDIRECTIONAL, + rx_desc_pool->buf_size); + rx_desc->unmapped = 1; } qdf_nbuf_free(nbuf); } @@ -324,9 +328,11 @@ void dp_rx_desc_nbuf_and_pool_free(struct dp_soc *soc, uint32_t pool_id, if (!(rx_desc_pool->array[i].rx_desc.unmapped)) { dp_ipa_handle_rx_buf_smmu_mapping(soc, nbuf, false); - - qdf_nbuf_unmap_single(soc->osdev, nbuf, - QDF_DMA_FROM_DEVICE); + qdf_nbuf_unmap_nbytes_single( + soc->osdev, nbuf, + QDF_DMA_FROM_DEVICE, + rx_desc_pool->buf_size); + rx_desc_pool->array[i].rx_desc.unmapped = 1; } qdf_nbuf_free(nbuf); } @@ -351,8 +357,11 @@ void dp_rx_desc_nbuf_free(struct dp_soc *soc, dp_ipa_handle_rx_buf_smmu_mapping(soc, nbuf, false); - qdf_nbuf_unmap_single(soc->osdev, nbuf, - QDF_DMA_FROM_DEVICE); + qdf_nbuf_unmap_nbytes_single( + soc->osdev, nbuf, + QDF_DMA_FROM_DEVICE, + rx_desc_pool->buf_size); + rx_desc_pool->array[i].rx_desc.unmapped = 1; } qdf_nbuf_free(nbuf); } diff --git a/dp/wifi3.0/dp_rx_mon_dest.c b/dp/wifi3.0/dp_rx_mon_dest.c index d38df0a96f..4a39394688 100644 --- a/dp/wifi3.0/dp_rx_mon_dest.c +++ b/dp/wifi3.0/dp_rx_mon_dest.c @@ -234,6 +234,7 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id, for (i = 0; i < num_msdus; i++) { uint32_t l2_hdr_offset; struct dp_rx_desc *rx_desc = NULL; + struct rx_desc_pool *rx_desc_pool; rx_desc = dp_rx_get_mon_desc(soc, msdu_list.sw_cookie[i]); @@ -260,8 +261,15 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id, } if (rx_desc->unmapped == 0) { - qdf_nbuf_unmap_single(soc->osdev, msdu, - QDF_DMA_FROM_DEVICE); + rx_desc_pool = dp_rx_get_mon_desc_pool( + soc, + mac_id, + dp_pdev->pdev_id); + qdf_nbuf_unmap_nbytes_single( + soc->osdev, + rx_desc->nbuf, + QDF_DMA_FROM_DEVICE, + rx_desc_pool->buf_size); rx_desc->unmapped = 1; }