1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/net/wireless/ath/ath12k
Baochen Qiang 38055789d1 wifi: ath12k: use 128 bytes aligned iova in transmit path for WCN7850
In transmit path, it is likely that the iova is not aligned to PCIe TLP
max payload size, which is 128 for WCN7850. Normally in such cases hardware
is expected to split the packet into several parts in a manner such that
they, other than the first one, have aligned iova. However due to hardware
limitations, WCN7850 does not behave like that properly with some specific
unaligned iova in transmit path. This easily results in target hang in a
KPI transmit test: packet send/receive failure, WMI command send timeout
etc. Also fatal error seen in PCIe level:

	...
	Capabilities: ...
		...
		DevSta: ... FatalErr+ ...
		...
	...

Work around this by manually moving/reallocating payload buffer such that
we can map it to a 128 bytes aligned iova. The moving requires sufficient
head room or tail room in skb: for the former we can do ourselves a favor
by asking some extra bytes when registering with mac80211, while for the
latter we can do nothing.

Moving/reallocating buffer consumes additional CPU cycles, but the good news
is that an aligned iova increases PCIe efficiency. In my tests on some X86
platforms the KPI results are almost consistent.

Since this is seen only with WCN7850, add a new hardware parameter to
differentiate from others.

Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3

Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Cc: <stable@vger.kernel.org>
Tested-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://patch.msgid.link/20240715023814.20242-1-quic_bqiang@quicinc.com
2024-08-05 12:28:07 +03:00
..
acpi.c wifi: ath12k: fix ACPI warning when resume 2024-06-11 21:36:22 +03:00
acpi.h wifi: ath12k: ACPI band edge channel power support 2024-04-23 12:29:15 +03:00
ce.c wifi: ath12k: Fix spelling mistakes in warning messages and comments 2023-02-17 18:04:29 +02:00
ce.h wifi: ath12k: fix wrong definition of CE ring's base address 2024-05-28 20:45:35 +03:00
core.c wifi: ath12k: add basic WoW functionalities 2024-06-24 19:31:46 +03:00
core.h wifi: ath12k: Add htt_stats_dump file ops support 2024-07-01 21:54:27 +03:00
dbring.c wifi: ath12k: Update Qualcomm Innovation Center, Inc. copyrights 2023-11-30 18:59:24 +02:00
dbring.h
debug.c wifi: ath12k: Update Qualcomm Innovation Center, Inc. copyrights 2023-11-30 18:59:24 +02:00
debug.h wifi: ath12k: add ATH12K_DBG_WOW log level 2024-06-24 19:31:45 +03:00
debugfs.c wifi: ath12k: Add support to enable debugfs_htt_stats 2024-07-01 21:54:26 +03:00
debugfs.h wifi: ath12k: unregister per pdev debugfs 2024-06-11 21:44:18 +03:00
debugfs_htt_stats.c wifi: ath12k: Support TQM stats 2024-07-01 21:57:28 +03:00
debugfs_htt_stats.h wifi: ath12k: Support TQM stats 2024-07-01 21:57:28 +03:00
dp.c wifi: ath12k: refactor rx descriptor CMEM configuration 2024-05-25 11:54:41 +03:00
dp.h wifi: ath12k: fix peer metadata parsing 2024-06-26 18:42:25 +03:00
dp_mon.c wifi: ath12k: Remove unsupported tx monitor handling 2024-05-07 13:08:49 +03:00
dp_mon.h wifi: ath12k: refactor DP Rxdma ring structure 2023-11-29 13:27:07 +02:00
dp_rx.c wifi: ath12k: Add support to parse requested stats_type 2024-07-01 21:54:27 +03:00
dp_rx.h wifi: ath12k: Add support to parse requested stats_type 2024-07-01 21:54:27 +03:00
dp_tx.c wifi: ath12k: use 128 bytes aligned iova in transmit path for WCN7850 2024-08-05 12:28:07 +03:00
dp_tx.h wifi: ath12k: fix ack signal strength calculation 2024-05-17 09:56:54 +03:00
fw.c wifi: ath12k: Read board id to support split-PHY QCN9274 2024-02-02 14:32:52 +02:00
fw.h wifi: ath12k: Read board id to support split-PHY QCN9274 2024-02-02 14:32:52 +02:00
hal.c wifi: ath12k: Refactor idle ring descriptor setup 2024-05-03 16:19:23 +03:00
hal.h wifi: ath12k: Refactor idle ring descriptor setup 2024-05-03 16:19:23 +03:00
hal_desc.h wifi: ath12k: fix peer metadata parsing 2024-06-26 18:42:25 +03:00
hal_rx.c wifi: ath12k: add support for BA1024 2024-01-18 07:52:02 +02:00
hal_rx.h wifi: ath12k: add 320 MHz bandwidth enums 2023-12-01 18:04:05 +02:00
hal_tx.c
hal_tx.h wifi: ath12k: fix ack signal strength calculation 2024-05-17 09:56:54 +03:00
hif.h wifi: ath12k: add panic handler 2024-06-03 16:11:38 +03:00
htc.c wifi: ath12k: add basic WoW functionalities 2024-06-24 19:31:46 +03:00
htc.h
hw.c wifi: ath12k: use 128 bytes aligned iova in transmit path for WCN7850 2024-08-05 12:28:07 +03:00
hw.h wifi: ath12k: use 128 bytes aligned iova in transmit path for WCN7850 2024-08-05 12:28:07 +03:00
Kconfig Kconfig: reduce the amount of power sequencing noise 2024-07-18 13:56:40 +02:00
mac.c wifi: ath12k: use 128 bytes aligned iova in transmit path for WCN7850 2024-08-05 12:28:07 +03:00
mac.h wifi: ath12k: Fix pdev id sent to firmware for single phy devices 2024-06-26 18:40:55 +03:00
Makefile wifi: ath12k: Add support to enable debugfs_htt_stats 2024-07-01 21:54:26 +03:00
mhi.c wifi: ath12k: do not process consecutive RDDM event 2024-05-30 18:51:27 +03:00
mhi.h wifi: ath12k: support suspend/resume 2024-04-23 12:27:16 +03:00
p2p.c wifi: ath12k: Add additional checks for vif and sta iterators 2024-04-10 17:12:15 +03:00
p2p.h wifi: ath12k: Add additional checks for vif and sta iterators 2024-04-10 17:12:15 +03:00
pci.c wifi: ath12k: fix soft lockup on suspend 2024-07-26 12:38:10 +02:00
pci.h wifi: ath12k: do not process consecutive RDDM event 2024-05-30 18:51:27 +03:00
peer.c
peer.h wifi: ath12k: Update Qualcomm Innovation Center, Inc. copyrights 2023-11-30 18:59:24 +02:00
qmi.c wifi: ath12k: Fix devmem address prefix when logging 2024-05-28 20:42:54 +03:00
qmi.h wifi: ath12k: read single_chip_mlo_support parameter from QMI PHY capability 2024-04-24 18:34:10 +03:00
reg.c wifi: ath12k: Refactor the hardware state 2024-05-03 16:12:14 +03:00
reg.h wifi: ath12k: avoid repeated hw access from ar 2023-12-01 18:04:45 +02:00
rx_desc.h wifi: ath12k: add MAC id support in WBM error path 2024-02-02 14:32:51 +02:00
trace.c
trace.h tracing/treewide: Remove second parameter of __assign_str() 2024-05-22 20:14:47 -04:00
wmi.c wifi: ath12k: fix peer metadata parsing 2024-06-26 18:42:25 +03:00
wmi.h wifi: ath12k: fix peer metadata parsing 2024-06-26 18:42:25 +03:00
wow.c wifi: ath12k: fix reusing outside iterator in ath12k_wow_vif_set_wakeups() 2024-07-26 12:33:38 +02:00
wow.h wifi: ath12k: add basic WoW functionalities 2024-06-24 19:31:46 +03:00