qcacld-3.0: Higher 32 bits in the dma address are ignored

In TSO the higher bits in the 64 bit dma address are being ignored.
This is resulting in an incorrect address being programmed in the
fragment descriptor.

Change-Id: Id015e81212d2ded3f0716ca5cc06ae2220952270
CRs-Fixed: 1024169
This commit is contained in:
Dhanashri Atre 2016-06-03 14:12:22 -07:00 • committed by Akash Patel
commit 5166d573eb
2 changed files with 8 additions and 4 deletions

View file

@ -1138,12 +1138,16 @@ htt_tx_desc_fill_tso_info(htt_pdev_handle pdev, void *desc,
word += 6;
for (i = 0; i < tso_seg->seg.num_frags; i++) {
uint32_t lo = 0;
uint32_t hi = 0;
qdf_dmaaddr_to_32s(tso_seg->seg.tso_frags[i].paddr,
&lo, &hi);
/* [31:0] first 32 bits of the buffer pointer */
*word = tso_seg->seg.tso_frags[i].paddr_low_32;
*word = lo;
word++;
/* [15:0] the upper 16 bits of the first buffer pointer */
/* [31:16] length of the first buffer */
*word = (tso_seg->seg.tso_frags[i].length << 16);
*word = (tso_seg->seg.tso_frags[i].length << 16) | hi;
word++;
}

View file

@ -272,7 +272,7 @@ qdf_nbuf_t ol_tx_ll(ol_txrx_vdev_handle vdev, qdf_nbuf_t msdu_list)
if (msdu_info.tso_info.curr_seg)
QDF_NBUF_CB_PADDR(msdu) =
msdu_info.tso_info.curr_seg->
seg.tso_frags[0].paddr_low_32;
seg.tso_frags[0].paddr;
segments--;
@ -541,7 +541,7 @@ ol_tx_ll_fast(ol_txrx_vdev_handle vdev, qdf_nbuf_t msdu_list)
if (msdu_info.tso_info.curr_seg)
QDF_NBUF_CB_PADDR(msdu) = msdu_info.tso_info.
curr_seg->seg.tso_frags[0].paddr_low_32;
curr_seg->seg.tso_frags[0].paddr;
segments--;