Commit 9fd28936 authored by Aloka Dixit's avatar Aloka Dixit Committed by Kalle Valo
Browse files

wifi: ath12k: refactor arvif security parameter configuration



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: default avatarAloka Dixit <quic_alokad@quicinc.com>
Acked-by: default avatarJeff Johnson <quic_jjohnson@quicinc.com>
Signed-off-by: default avatarKalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240508202912.11902-7-quic_alokad@quicinc.com
parent 84edf47b
Loading
Loading
Loading
Loading
+21 −12
Original line number Diff line number Diff line
@@ -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);