mirror_ubuntu-kernels/drivers/net/wireless/ath
Sriram R 1db2b0d0a3 ath11k: Avoid race during regd updates
Whenever ath11k is bootup with a user country already set, cfg80211
notifies this country info to ath11k soon after registration, where the
notification is sent to the firmware for fetching the rules of this user
country input.

Multiple race conditions could be seen in this scenario where a new
request is either lost as pointed in [1] or a new regd overwrites the
default regd provided by the firmware during bootup. Note that, the
default regd is used for intersection purpose and hence it should not be
overwritten.

The main reason as pointed by [1] is the usage of ATH11K_FLAG_REGISTERED
flag which is updated after completion of core registration, whereas the
reg notification from cfg80211 and wmi events for the corresponding
request can happen much before that. Since the ATH11K_FLAG_REGISTERED is
currently used to determine if the event containing reg rules belong to
default regd or for user request, there is a possibility of the default
regd getting overwritten.

Since the default reg rules will be received only once per pdev on
firmware load, the above flag based check can be replaced with a check
to see if default_regd is already set, so that we can now always update
the new_regd. Also if the new_regd is set, this will be always used to
update the reg rules for the registered phy.

[1] https://patchwork.kernel.org/project/linux-wireless/patch/1829665.1PRlr7bOQj@ripper/

Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.4.0.1-01460-QCAHKSWPL_SILICONZ-1
Fixes: d5c65159f2 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")

Signed-off-by: Sriram R <srirrama@codeaurora.org>
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210721212029.142388-4-jouni@codeaurora.org
2021-09-28 13:57:32 +03:00
..
ar5523 treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
ath5k ath: switch from 'pci_' to 'dma_' API 2021-07-02 14:39:59 +03:00
ath6kl ath6kl: wmi: fix an error code in ath6kl_wmi_sync_point() 2021-08-29 10:12:50 +03:00
ath9k ath9k: owl-loader: fetch pci init values through nvmem 2021-09-16 11:07:41 +03:00
ath10k ARM: SoC drivers for 5.15 2021-09-01 15:25:28 -07:00
ath11k ath11k: Avoid race during regd updates 2021-09-28 13:57:32 +03:00
carl9170 wireless: carl9170: fix LEDS build errors & warnings 2021-06-12 13:37:46 +03:00
wcn36xx wcn36xx: Implement Idle Mode Power Save 2021-09-21 16:34:32 +03:00
wil6210 ethtool: extend coalesce setting uAPI with CQE mode 2021-08-24 07:38:29 -07:00
ath.h ath: Modify ath_key_delete() to not need full key entry 2020-12-17 08:51:17 +02:00
debug.c
dfs_pattern_detector.c ath: dfs_pattern_detector: Fix some function kernel-doc headers 2020-11-07 10:06:46 +02:00
dfs_pattern_detector.h
dfs_pri_detector.c ath: dfs_pri_detector: Demote zero/half completed kernel-doc headers 2020-11-07 10:06:49 +02:00
dfs_pri_detector.h
hw.c ath: Fix wrong function name in comments 2021-06-15 17:01:24 +03:00
Kconfig Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 2020-06-15 20:18:39 +03:00
key.c ath: Modify ath_key_delete() to not need full key entry 2020-12-17 08:51:17 +02:00
main.c
Makefile ath11k: driver for Qualcomm IEEE 802.11ax devices 2019-11-25 14:16:34 +02:00
reg.h
regd_common.h
regd.c ath: regd: Provide description for ath_reg_apply_ir_flags's 'reg' param 2020-11-07 10:06:43 +02:00
regd.h
spectral_common.h ath11k: Introduce spectral hw configurable param 2021-09-28 11:52:57 +03:00
trace.c
trace.h