]> www.infradead.org Git - users/jedix/linux-maple.git/commit
wifi: rtw89: pci: support 36-bit PCI DMA address
authorPing-Ke Shih <pkshih@realtek.com>
Tue, 11 Jun 2024 02:19:00 +0000 (10:19 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Mon, 17 Jun 2024 02:37:36 +0000 (10:37 +0800)
commit1fd4b3fe52efd5ad1647966f619c10988e7a4457
tree2283f9c059ca584ff8a1b65b59229150cacbef99
parent8a00f7dfed62f1f74388bbd659e8d69d66886786
wifi: rtw89: pci: support 36-bit PCI DMA address

Modern platforms can install more than 4GB memory, so DMA address can
larger than 32 bits. If a platform doesn't enable IOMMU, kernel needs extra
works of swiotlb to help DMA that packets reside on memory over 4GB.

The DMA addressing capability of Realtek WiFi chips is 36 bits, so set
LSB 4 bits of high 32-bit address to register and TX/RX descriptor, which
below figure shows 3-level pointers in TX direction, and RX direction is
similar but 2-level pointers only.

  +--------+
  |        | register to head of TX BD
  +---|----+
      |       +---------+
      +-----> |  TX BD  | (in memory)
              +----|----+
                   |        +---------+
                   +------> |  TX WD  | (in memory)
                            +----|----+
                                 |        +--------+
                                 +------> |   skb  |
                                          +--------+

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://msgid.link/20240611021901.26394-1-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/pci.c
drivers/net/wireless/realtek/rtw89/pci.h
drivers/net/wireless/realtek/rtw89/rtw8851be.c
drivers/net/wireless/realtek/rtw89/rtw8852ae.c
drivers/net/wireless/realtek/rtw89/rtw8852be.c
drivers/net/wireless/realtek/rtw89/rtw8852ce.c
drivers/net/wireless/realtek/rtw89/rtw8922ae.c