]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: ath12k: refactor arvif security parameter configuration
authorAloka Dixit <quic_alokad@quicinc.com>
Wed, 8 May 2024 20:29:09 +0000 (13:29 -0700)
committerKalle Valo <quic_kvalo@quicinc.com>
Thu, 16 May 2024 08:15:04 +0000 (11:15 +0300)
Configure security parameters in a separate function to make it
easier to support setting the same for nontransmitted profiles.

Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1

Signed-off-by: Aloka Dixit <quic_alokad@quicinc.com>
Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240508202912.11902-7-quic_alokad@quicinc.com
drivers/net/wireless/ath/ath12k/mac.c

index 3f57acc16c4054b41b27a2d5cf6482db52eed92d..6720ec0d7fdd68cfa041b93eaa05766ad07a0a8d 100644 (file)
@@ -1299,6 +1299,26 @@ static int ath12k_mac_remove_vendor_ie(struct sk_buff *skb, unsigned int oui,
        return 0;
 }
 
+static void ath12k_mac_set_arvif_ies(struct ath12k_vif *arvif, struct sk_buff *bcn)
+{
+       struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)bcn->data;
+       const u8 *start, *tail;
+       u16 rem_len;
+
+       start = bcn->data + ieee80211_get_hdrlen_from_skb(bcn) + sizeof(mgmt->u.beacon);
+       tail = skb_tail_pointer(bcn);
+       rem_len = tail - start;
+
+       arvif->rsnie_present = false;
+       arvif->wpaie_present = false;
+
+       if (cfg80211_find_ie(WLAN_EID_RSN, start, rem_len))
+               arvif->rsnie_present = true;
+       if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT, WLAN_OUI_TYPE_MICROSOFT_WPA,
+                                   start, rem_len))
+               arvif->wpaie_present = true;
+}
+
 static int ath12k_mac_setup_bcn_tmpl(struct ath12k_vif *arvif)
 {
        struct ath12k *ar = arvif->ar;
@@ -1307,8 +1327,6 @@ static int ath12k_mac_setup_bcn_tmpl(struct ath12k_vif *arvif)
        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)
@@ -1320,16 +1338,7 @@ static int ath12k_mac_setup_bcn_tmpl(struct ath12k_vif *arvif)
                return -EPERM;
        }
 
-       ies = bcn->data + ieee80211_get_hdrlen_from_skb(bcn);
-       ies += sizeof(mgmt->u.beacon);
-
-       if (cfg80211_find_ie(WLAN_EID_RSN, ies, (skb_tail_pointer(bcn) - ies)))
-               arvif->rsnie_present = true;
-
-       if (cfg80211_find_vendor_ie(WLAN_OUI_MICROSOFT,
-                                   WLAN_OUI_TYPE_MICROSOFT_WPA,
-                                   ies, (skb_tail_pointer(bcn) - ies)))
-               arvif->wpaie_present = true;
+       ath12k_mac_set_arvif_ies(arvif, bcn);
 
        if (arvif->vif->type == NL80211_IFTYPE_AP && arvif->vif->p2p) {
                ret = ath12k_mac_setup_bcn_p2p_ie(arvif, bcn);