wifi: ath11k: fix IOMMU errors on buffer rings
authorZhenghao Gu <imguzh@gmail.com>
Wed, 20 Dec 2023 18:33:08 +0000 (20:33 +0200)
committerKalle Valo <quic_kvalo@quicinc.com>
Thu, 11 Jan 2024 11:18:49 +0000 (13:18 +0200)
commitaaf244141ed7195a9a56e03c2367f4a9d0b727a8
tree2bb66b0ab1f57f1fd892ac0eabee63f4ed7a0c10
parente7ab40b733094dfc50dad58bbce81f544af1d8cc
wifi: ath11k: fix IOMMU errors on buffer rings

virt_to_phys() doesn't work on systems with IOMMU enabled, which have
non-identity physical-to-IOVA mappings.  It leads to IO_PAGE_FAULTs like this:

[IO_PAGE_FAULT domain=0x0023 address=0x1cce00000 flags=0x0020]

And no association to the AP can be established.

This patch changes that to dma_map_single(), which works correctly. Even
virt_to_phys() documentation says device drivers should not use it:

    This function does not give bus mappings for DMA transfers. In
    almost all conceivable cases a device driver should not be using
    this function

Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1

Signed-off-by: Zhenghao Gu <imguzh@gmail.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20231212031914.47339-1-imguzh@gmail.com
drivers/net/wireless/ath/ath11k/dp.c
drivers/net/wireless/ath/ath11k/hal.c