kernel_samsung_a53x/drivers/net/wireless/ath/ath11k
Luca Weiss 73b68308ab wifi: ath11k: Defer on rproc_get failure
[ Upstream commit 2a3ec40b98b46c339adb57313d3b933ee5e7a8e8 ]

If we already have gotten the rproc_handle (meaning the "qcom,rproc"
property is defined in the devicetree), it's a valid state that the
remoteproc module hasn't probed yet so we should defer probing instead
of just failing to probe.

This resolves a race condition when the ath11k driver probes and fails
before the wpss remoteproc driver has probed, like the following:

  [    6.232360] ath11k 17a10040.wifi: failed to get rproc
  [    6.232366] ath11k 17a10040.wifi: failed to get rproc: -22
  [    6.232478] ath11k: probe of 17a10040.wifi failed with error -22
       ...
  [    6.252415] remoteproc remoteproc2: 8a00000.remoteproc is available
  [    6.252776] remoteproc remoteproc2: powering up 8a00000.remoteproc
  [    6.252781] remoteproc remoteproc2: Booting fw image qcom/qcm6490/fairphone5/wpss.mdt, size 7188

So, defer the probe if we hit that so we can retry later once the wpss
remoteproc is available.

Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-01264-QCAMSLSWPLZ-1.37886.3

Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20231027-ath11k-rproc-defer-v1-1-f6b6a812cd18@fairphone.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-18 12:12:28 +01:00
..
ahb.c wifi: ath11k: Defer on rproc_get failure 2024-11-18 12:12:28 +01:00
ahb.h
ce.c
ce.h
core.c
core.h
dbring.c
dbring.h
debug.c
debug.h
debugfs.c
debugfs.h
debugfs_htt_stats.c
debugfs_htt_stats.h
debugfs_sta.c
debugfs_sta.h
dp.c
dp.h
dp_rx.c wifi: ath11k: fix htt pktlog locking 2024-11-18 11:43:25 +01:00
dp_rx.h
dp_tx.c
dp_tx.h
hal.c
hal.h
hal_desc.h
hal_rx.c
hal_rx.h
hal_tx.c
hal_tx.h
hif.h
htc.c
htc.h
hw.c
hw.h
Kconfig
mac.c
mac.h
Makefile
mhi.c
mhi.h
pci.c
pci.h
peer.c
peer.h
qmi.c
qmi.h
reg.c
reg.h
rx_desc.h
spectral.c
spectral.h
testmode.c
testmode.h
testmode_i.h
thermal.c
thermal.h
trace.c
trace.h
wmi.c
wmi.h