qcacmn: Add address alignment fix for TXDMA HW
Per HW team's analysis, we find a TXDMA HW limitation: ADDR0&0x1FFFFFFF8 should not equal ADDR1&0x1FFFFFFF8. Otherwise, TXDMA will run into exception, which cause TX fail. ADDR0: the address of last words in previous buffer; ADDR1: the address of first words in next buffer; We hit this limitation in NAT forward TSO jumbo case whose buffer address of two fragments like below: tso_frags = ( (length = 0x42, vaddr = 0xFFFFFFD0F5FA2F82, paddr = 0x1F5FA2F82), (length = 0x05A8, vaddr = 0xFFFFFFD0F5FA2FC4, paddr = 0x1F5FA2FC4) In this case, ADDR0 = 0x1F5FA2F82 + 0x42 -2 = 0x1F5FA2FC2, ADDR1 = 0x1F5FA2FC4, then ADDR0&0x1FFFFFFF8 = ADDR1&0x1FFFFFFF8. To avoid this, shift server bytes for ADDR0. Change-Id: Ib09afd7e4c14a33bb5347c68b602b360a9e36619 CRs-Fixed: 2585868
Loading
Please register or sign in to comment