mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
359a6e36e9
Synchronize the ath11k backports with the current ath-next tree. All of the changes are various bugfixes, there is no new major feature. Notable bugfixes are: * WCN6855 board name fixes * One MSI vector booting is working again This is rather important for most of the older platforms. * DFS CAC state in virtual interfaces was fixed * TX power during CAC reporting Signed-off-by: Robert Marko <robimarko@gmail.com>
85 lines
3.0 KiB
Diff
85 lines
3.0 KiB
Diff
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",
|