qcacmn: Add API for unmap with physical and virtual addr of nbuf
Tx data transfer in host mode with nbuf map_unmap debug frmwk enabled and enhanced stats disabled results in an assert. This is because on Tx completion path, nbuf unmap is done using API qdf_mem_unmap_nbytes_single which takes physical address of nbuf for unmap and does not remove nbuf from map_unmap tracking list and when nbuf is freed, it results in assert as the tracking list still contains that nbuf entry. In order to fix this, define a new API for nbuf unmap passing physical and virtual address of nbuf as arguments. Physical address is passed as an argument in order to avoid cache miss in per packet path which eventually helps in improving the KPI. Change-Id: I77ab6ac3ac98556b9caff8aa3ee82bc23cd26de7 CRs-Fixed: 3006671
This commit is contained in:

committed by
Madan Koyyalamudi

parent
c96d5d2592
commit
43da5b8892
@@ -4310,10 +4310,11 @@ dp_tx_comp_process_desc_list(struct dp_soc *soc,
|
||||
next = desc->next;
|
||||
dp_tx_desc_history_add(soc, desc->dma_addr, desc->nbuf,
|
||||
desc->id, DP_TX_COMP_UNMAP);
|
||||
qdf_mem_unmap_nbytes_single(soc->osdev,
|
||||
desc->dma_addr,
|
||||
QDF_DMA_TO_DEVICE,
|
||||
desc->length);
|
||||
qdf_nbuf_unmap_nbytes_single_paddr(soc->osdev,
|
||||
desc->nbuf,
|
||||
desc->dma_addr,
|
||||
QDF_DMA_TO_DEVICE,
|
||||
desc->length);
|
||||
qdf_nbuf_free(desc->nbuf);
|
||||
dp_tx_desc_free(soc, desc, desc->pool_id);
|
||||
desc = next;
|
||||
|
Reference in New Issue
Block a user