aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/ath11k/0029-wifi-ath11k-add-parsing-of-phy-bitmap-for-reg-rules.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/ath11k/0029-wifi-ath11k-add-parsing-of-phy-bitmap-for-reg-rules.patch')
-rw-r--r--package/kernel/mac80211/patches/ath11k/0029-wifi-ath11k-add-parsing-of-phy-bitmap-for-reg-rules.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/ath11k/0029-wifi-ath11k-add-parsing-of-phy-bitmap-for-reg-rules.patch b/package/kernel/mac80211/patches/ath11k/0029-wifi-ath11k-add-parsing-of-phy-bitmap-for-reg-rules.patch
new file mode 100644
index 00000000000..10d517a27a5
--- /dev/null
+++ b/package/kernel/mac80211/patches/ath11k/0029-wifi-ath11k-add-parsing-of-phy-bitmap-for-reg-rules.patch
@@ -0,0 +1,84 @@
+From 534c2dd8099a9cc4bad8ea8b3c7fa1f730e10d5d Mon Sep 17 00:00:00 2001
+From: Aditya Kumar Singh <quic_adisi@quicinc.com>
+Date: Tue, 10 Oct 2023 10:27:19 +0300
+Subject: [PATCH] wifi: ath11k: add parsing of phy bitmap for reg rules
+
+Certain regulatory domains could put restrictions on phy mode operation.
+For example, in a few countries HE Operation is not allowed. For such
+countries, firmware indicates this via phy bitmap in each reg rule.
+
+Currently, there is no logic to parse this info and then pass it on to the
+cfg80211/regulatory.
+
+Add parsing of this phy bitmap from the regulatory channel change event and
+then accordingly map it to cfg80211/regulatory flags and pass it on to it.
+
+While at it, correct typo in debug print s/dsf/dfs.
+
+Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
+
+Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
+Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
+Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
+Link: https://lore.kernel.org/r/20231004092655.25020-1-quic_adisi@quicinc.com
+---
+ drivers/net/wireless/ath/ath11k/reg.c | 11 +++++++++++
+ drivers/net/wireless/ath/ath11k/reg.h | 3 +++
+ drivers/net/wireless/ath/ath11k/wmi.c | 5 +++--
+ 3 files changed, 17 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/ath/ath11k/reg.c
++++ b/drivers/net/wireless/ath/ath11k/reg.c
+@@ -352,6 +352,16 @@ static u32 ath11k_map_fw_reg_flags(u16 r
+ return flags;
+ }
+
++static u32 ath11k_map_fw_phy_flags(u32 phy_flags)
++{
++ u32 flags = 0;
++
++ if (phy_flags & ATH11K_REG_PHY_BITMAP_NO11AX)
++ flags |= NL80211_RRF_NO_HE;
++
++ return flags;
++}
++
+ static bool
+ ath11k_reg_can_intersect(struct ieee80211_reg_rule *rule1,
+ struct ieee80211_reg_rule *rule2)
+@@ -685,6 +695,7 @@ ath11k_reg_build_regd(struct ath11k_base
+ }
+
+ flags |= ath11k_map_fw_reg_flags(reg_rule->flags);
++ flags |= ath11k_map_fw_phy_flags(reg_info->phybitmap);
+
+ ath11k_reg_update_rule(tmp_regd->reg_rules + i,
+ reg_rule->start_freq,
+--- a/drivers/net/wireless/ath/ath11k/reg.h
++++ b/drivers/net/wireless/ath/ath11k/reg.h
+@@ -24,6 +24,9 @@ enum ath11k_dfs_region {
+ ATH11K_DFS_REG_UNDEF,
+ };
+
++/* Phy bitmaps */
++#define ATH11K_REG_PHY_BITMAP_NO11AX BIT(5)
++
+ /* ATH11K Regulatory API's */
+ void ath11k_reg_init(struct ath11k *ar);
+ void ath11k_reg_free(struct ath11k_base *ab);
+--- a/drivers/net/wireless/ath/ath11k/wmi.c
++++ b/drivers/net/wireless/ath/ath11k/wmi.c
+@@ -5440,10 +5440,11 @@ static int ath11k_pull_reg_chan_list_ext
+ }
+
+ ath11k_dbg(ab, ATH11K_DBG_WMI,
+- "cc_ext %s dsf %d BW: min_2ghz %d max_2ghz %d min_5ghz %d max_5ghz %d",
++ "cc_ext %s dfs %d BW: min_2ghz %d max_2ghz %d min_5ghz %d max_5ghz %d phy_bitmap 0x%x",
+ reg_info->alpha2, reg_info->dfs_region,
+ reg_info->min_bw_2ghz, reg_info->max_bw_2ghz,
+- reg_info->min_bw_5ghz, reg_info->max_bw_5ghz);
++ reg_info->min_bw_5ghz, reg_info->max_bw_5ghz,
++ reg_info->phybitmap);
+
+ ath11k_dbg(ab, ATH11K_DBG_WMI,
+ "num_2ghz_reg_rules %d num_5ghz_reg_rules %d",