diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index a3b7b4126472..1fe7596fca4d 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -4094,7 +4094,6 @@ dp_tx_me_send_convert_ucast(struct cdp_vdev *vdev_handle, qdf_nbuf_t nbuf, struct dp_tx_seg_info_s *seg_info_head = NULL; struct dp_tx_seg_info_s *seg_info_tail = NULL; struct dp_tx_seg_info_s *seg_info_new; - struct dp_tx_frag_info_s data_frag; qdf_dma_addr_t paddr_data; qdf_dma_addr_t paddr_mcbuf = 0; uint8_t empty_entry_mac[QDF_MAC_ADDR_SIZE] = {0}; @@ -4122,13 +4121,7 @@ dp_tx_me_send_convert_ucast(struct cdp_vdev *vdev_handle, qdf_nbuf_t nbuf, return 1; } - paddr_data = qdf_nbuf_get_frag_paddr(nbuf, 0) + QDF_MAC_ADDR_SIZE; - - /*preparing data fragment*/ - data_frag.vaddr = qdf_nbuf_data(nbuf) + QDF_MAC_ADDR_SIZE; - data_frag.paddr_lo = (uint32_t)paddr_data; - data_frag.paddr_hi = (((uint64_t) paddr_data) >> 32); - data_frag.len = len - QDF_MAC_ADDR_SIZE; + paddr_data = qdf_nbuf_mapped_paddr_get(nbuf) + QDF_MAC_ADDR_SIZE; for (new_mac_idx = 0; new_mac_idx < new_mac_cnt; new_mac_idx++) { dstmac = newmac[new_mac_idx]; @@ -4195,10 +4188,17 @@ dp_tx_me_send_convert_ucast(struct cdp_vdev *vdev_handle, qdf_nbuf_t nbuf, seg_info_new->frags[0].vaddr = (uint8_t *)mc_uc_buf; seg_info_new->frags[0].paddr_lo = (uint32_t) paddr_mcbuf; seg_info_new->frags[0].paddr_hi = - ((uint64_t) paddr_mcbuf >> 32); + (uint16_t)((uint64_t)paddr_mcbuf >> 32); seg_info_new->frags[0].len = QDF_MAC_ADDR_SIZE; - seg_info_new->frags[1] = data_frag; + /*preparing data fragment*/ + seg_info_new->frags[1].vaddr = + qdf_nbuf_data(nbuf) + QDF_MAC_ADDR_SIZE; + seg_info_new->frags[1].paddr_lo = (uint32_t)paddr_data; + seg_info_new->frags[1].paddr_hi = + (uint16_t)(((uint64_t)paddr_data) >> 32); + seg_info_new->frags[1].len = len - QDF_MAC_ADDR_SIZE; + seg_info_new->nbuf = nbuf_clone; seg_info_new->frag_cnt = 2; seg_info_new->total_len = len;