mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 15:32:33 +00:00
7baa1573eb
Synchronize the ath11k backports with the current ath-next tree.
This introduces support for MBSSID and EMA, adds factory test mode and
some new HTT stats.
Tested-by: Francisco G Luna <frangonlun@gmail.com>
Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit acde5271a6
)
87 lines
2.8 KiB
Diff
87 lines
2.8 KiB
Diff
From cb9bea773c85e372931cd7a177db4165adf29d95 Mon Sep 17 00:00:00 2001
|
|
From: Aloka Dixit <quic_alokad@quicinc.com>
|
|
Date: Fri, 5 May 2023 16:11:28 +0300
|
|
Subject: [PATCH 75/77] wifi: ath11k: refactor vif parameter configurations
|
|
|
|
Security parameters for each non-transmitting profile can be
|
|
different when MBSSID is enabled and this information is included
|
|
in the MBSSID element in the Beacon frame. Current implementation
|
|
to set rsnie_present and wpaie_present does not parse this element
|
|
hence it applies only to the transmitting interface.
|
|
|
|
Move the code to a separate function to make additions for
|
|
non-transmitting interfaces cleaner.
|
|
|
|
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
|
|
|
Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com>
|
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
|
Link: https://lore.kernel.org/r/20230405221648.17950-6-quic_alokad@quicinc.com
|
|
---
|
|
drivers/net/wireless/ath/ath11k/mac.c | 41 ++++++++++++++++-----------
|
|
1 file changed, 24 insertions(+), 17 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
|
@@ -1351,28 +1351,14 @@ err_mon_del:
|
|
return ret;
|
|
}
|
|
|
|
-static int ath11k_mac_setup_bcn_tmpl(struct ath11k_vif *arvif)
|
|
+static void ath11k_mac_set_vif_params(struct ath11k_vif *arvif,
|
|
+ struct sk_buff *bcn)
|
|
{
|
|
- struct ath11k *ar = arvif->ar;
|
|
- struct ath11k_base *ab = ar->ab;
|
|
- struct ieee80211_hw *hw = ar->hw;
|
|
- struct ieee80211_vif *vif = arvif->vif;
|
|
- struct ieee80211_mutable_offsets offs = {};
|
|
- struct sk_buff *bcn;
|
|
struct ieee80211_mgmt *mgmt;
|
|
u8 *ies;
|
|
- int ret;
|
|
-
|
|
- if (arvif->vdev_type != WMI_VDEV_TYPE_AP)
|
|
- return 0;
|
|
-
|
|
- bcn = ieee80211_beacon_get_template(hw, vif, &offs, 0);
|
|
- if (!bcn) {
|
|
- ath11k_warn(ab, "failed to get beacon template from mac80211\n");
|
|
- return -EPERM;
|
|
- }
|
|
|
|
ies = bcn->data + ieee80211_get_hdrlen_from_skb(bcn);
|
|
+ mgmt = (struct ieee80211_mgmt *)bcn->data;
|
|
ies += sizeof(mgmt->u.beacon);
|
|
|
|
if (cfg80211_find_ie(WLAN_EID_RSN, ies, (skb_tail_pointer(bcn) - ies)))
|
|
@@ -1386,7 +1372,28 @@ static int ath11k_mac_setup_bcn_tmpl(str
|
|
arvif->wpaie_present = true;
|
|
else
|
|
arvif->wpaie_present = false;
|
|
+}
|
|
+
|
|
+static int ath11k_mac_setup_bcn_tmpl(struct ath11k_vif *arvif)
|
|
+{
|
|
+ struct ath11k *ar = arvif->ar;
|
|
+ struct ath11k_base *ab = ar->ab;
|
|
+ struct ieee80211_hw *hw = ar->hw;
|
|
+ struct ieee80211_vif *vif = arvif->vif;
|
|
+ struct ieee80211_mutable_offsets offs = {};
|
|
+ struct sk_buff *bcn;
|
|
+ int ret;
|
|
+
|
|
+ if (arvif->vdev_type != WMI_VDEV_TYPE_AP)
|
|
+ return 0;
|
|
+
|
|
+ bcn = ieee80211_beacon_get_template(hw, vif, &offs, 0);
|
|
+ if (!bcn) {
|
|
+ ath11k_warn(ab, "failed to get beacon template from mac80211\n");
|
|
+ return -EPERM;
|
|
+ }
|
|
|
|
+ ath11k_mac_set_vif_params(arvif, bcn);
|
|
ret = ath11k_wmi_bcn_tmpl(ar, arvif->vdev_id, &offs, bcn);
|
|
|
|
kfree_skb(bcn);
|