mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 14:13:01 -04:00
qcacmn: Fix size mismatch between dma_map and dma_unmap in Tx path
Change calls to qdf_dma_map_nbytes_single to qdf_dma_map to match with qdf_dma_unmap used in tx completion path. Also fix the dma_addr value that is passed to Tx HW; we were incorrectly subracting pkt_offset instead of just subtracting alignment bytes from dma_addr Change-Id: I2d6f32bd44e02824a1a788e3624dcb3680f1b242 CRs-Fixed: 2004658
This commit is contained in:
parent
a8d98c8f5e
commit
110bf96741
2 changed files with 7 additions and 10 deletions
|
|
@ -556,9 +556,8 @@ static qdf_nbuf_t dp_tx_prepare_raw(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||
|
||||
struct dp_tx_sg_info_s *sg_info = &msdu_info->u.sg_info;
|
||||
|
||||
if (QDF_STATUS_SUCCESS != qdf_nbuf_map_nbytes_single(vdev->osdev, nbuf,
|
||||
QDF_DMA_TO_DEVICE,
|
||||
qdf_nbuf_len(nbuf))) {
|
||||
if (QDF_STATUS_SUCCESS != qdf_nbuf_map(vdev->osdev, nbuf,
|
||||
QDF_DMA_TO_DEVICE)) {
|
||||
qdf_print("dma map error\n");
|
||||
qdf_nbuf_free(nbuf);
|
||||
return NULL;
|
||||
|
|
@ -618,7 +617,7 @@ static QDF_STATUS dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev,
|
|||
qdf_mem_zero_outline(hal_tx_desc_cached, HAL_TX_DESC_LEN_BYTES);
|
||||
|
||||
if (tx_desc->flags & DP_TX_DESC_FLAG_FRAG) {
|
||||
length = HAL_TX_EXTENSION_DESC_LEN_BYTES;
|
||||
length = HAL_TX_EXT_DESC_WITH_META_DATA;
|
||||
type = HAL_TX_BUF_TYPE_EXT_DESC;
|
||||
dma_addr = tx_desc->msdu_ext_desc->paddr;
|
||||
} else {
|
||||
|
|
@ -634,8 +633,7 @@ static QDF_STATUS dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev,
|
|||
* Alignment padding is already accounted in pkt_offset
|
||||
*
|
||||
*/
|
||||
dma_addr = (qdf_nbuf_mapped_paddr_get(tx_desc->nbuf) -
|
||||
tx_desc->pkt_offset);
|
||||
dma_addr = (qdf_nbuf_mapped_paddr_get(tx_desc->nbuf) & ~0x7);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1045,9 +1043,8 @@ static qdf_nbuf_t dp_tx_prepare_sg(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||
sg_info = &msdu_info->u.sg_info;
|
||||
nr_frags = qdf_nbuf_get_nr_frags(nbuf);
|
||||
|
||||
if (QDF_STATUS_SUCCESS != qdf_nbuf_map_nbytes_single(vdev->osdev, nbuf,
|
||||
QDF_DMA_TO_DEVICE,
|
||||
qdf_nbuf_headlen(nbuf))) {
|
||||
if (QDF_STATUS_SUCCESS != qdf_nbuf_map(vdev->osdev, nbuf,
|
||||
QDF_DMA_TO_DEVICE)) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||
"dma map error\n");
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
#define DP_TX_FREE_SINGLE_BUF(soc, buf) \
|
||||
do { \
|
||||
qdf_nbuf_unmap(soc->osdev, buf, QDF_DMA_FROM_DEVICE); \
|
||||
qdf_nbuf_unmap(soc->osdev, buf, QDF_DMA_TO_DEVICE); \
|
||||
qdf_nbuf_free(buf); \
|
||||
} while (0)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue