diff mbox series

[v2,1/1] wifi: nl80211: Extend del pmksa support for SAE and OWE security

Message ID 083b63a2e6f5ae42e11e4044350a28cea8d462b7.1699426085.git.vinayak.yadawad@broadcom.com (mailing list archive)
State Superseded
Delegated to: Johannes Berg
Headers show
Series [v2,1/1] wifi: nl80211: Extend del pmksa support for SAE and OWE security | expand

Commit Message

Vinayak Yadawad Nov. 8, 2023, 6:49 a.m. UTC
Current handling of del pmksa with SSID is limited to FILS
security. In the current change the del pmksa support is extended
to SAE/OWE security offloads as well. For OWE/SAE offloads, the
PMK is generated and cached at driver/FW, so user app needs the
capability to request cache deletion based on SSID for drivers
supporting SAE/OWE offload.
---
v1->v2: Addressed review comments for indentation
Signed-off-by: Vinayak Yadawad <vinayak.yadawad@broadcom.com>
---
 net/wireless/nl80211.c | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

Comments

Kalle Valo Nov. 9, 2023, 11:01 a.m. UTC | #1
Vinayak Yadawad <vinayak.yadawad@broadcom.com> writes:

> Current handling of del pmksa with SSID is limited to FILS
> security. In the current change the del pmksa support is extended
> to SAE/OWE security offloads as well. For OWE/SAE offloads, the
> PMK is generated and cached at driver/FW, so user app needs the
> capability to request cache deletion based on SSID for drivers
> supporting SAE/OWE offload.
> ---
> v1->v2: Addressed review comments for indentation
> Signed-off-by: Vinayak Yadawad <vinayak.yadawad@broadcom.com>

The s-o-b should be before the "---" line.
Vinayak Yadawad Nov. 9, 2023, 12:32 p.m. UTC | #2
Hi Kalle,

>The s-o-b should be before the "---" line.
Addressed this in v3 of the patch.
[PATCH v3 1/1] wifi: nl80211: Extend del pmksa support for SAE and OWE security

Regards,
Vinayak



On Thu, Nov 9, 2023 at 4:31 PM Kalle Valo <kvalo@kernel.org> wrote:
>
> Vinayak Yadawad <vinayak.yadawad@broadcom.com> writes:
>
> > Current handling of del pmksa with SSID is limited to FILS
> > security. In the current change the del pmksa support is extended
> > to SAE/OWE security offloads as well. For OWE/SAE offloads, the
> > PMK is generated and cached at driver/FW, so user app needs the
> > capability to request cache deletion based on SSID for drivers
> > supporting SAE/OWE offload.
> > ---
> > v1->v2: Addressed review comments for indentation
> > Signed-off-by: Vinayak Yadawad <vinayak.yadawad@broadcom.com>
>
> The s-o-b should be before the "---" line.
>
> --
> https://patchwork.kernel.org/project/linux-wireless/list/
>
> https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
diff mbox series

Patch

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 569234bc2be6..8dc1c800f171 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -12183,24 +12183,37 @@  static int nl80211_setdel_pmksa(struct sk_buff *skb, struct genl_info *info)
 
 	memset(&pmksa, 0, sizeof(struct cfg80211_pmksa));
 
-	if (!info->attrs[NL80211_ATTR_PMKID])
+	if ((info->genlhdr->cmd == NL80211_CMD_SET_PMKSA) &&
+	    (!info->attrs[NL80211_ATTR_PMKID]))
 		return -EINVAL;
 
-	pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]);
+	if (info->attrs[NL80211_ATTR_PMKID])
+		pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]);
 
 	if (info->attrs[NL80211_ATTR_MAC]) {
 		pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
-	} else if (info->attrs[NL80211_ATTR_SSID] &&
-		   info->attrs[NL80211_ATTR_FILS_CACHE_ID] &&
-		   (info->genlhdr->cmd == NL80211_CMD_DEL_PMKSA ||
+	} else if (info->attrs[NL80211_ATTR_SSID]) {
+		/* SSID based pmksa flush suppported only for FILS,
+		 * OWE/SAE OFFLOAD cases
+		 */
+		if (info->attrs[NL80211_ATTR_FILS_CACHE_ID] &&
+		    (info->genlhdr->cmd == NL80211_CMD_DEL_PMKSA ||
 		    info->attrs[NL80211_ATTR_PMK])) {
+			pmksa.cache_id =
+				nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]);
+		} else if ((info->genlhdr->cmd == NL80211_CMD_DEL_PMKSA) &&
+		    (!wiphy_ext_feature_isset(
+		    &rdev->wiphy, NL80211_EXT_FEATURE_SAE_OFFLOAD) &&
+		    (!wiphy_ext_feature_isset(
+		    &rdev->wiphy,NL80211_EXT_FEATURE_OWE_OFFLOAD)))){
+			return -EINVAL;
+		}
 		pmksa.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]);
 		pmksa.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]);
-		pmksa.cache_id =
-			nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]);
 	} else {
 		return -EINVAL;
 	}
+
 	if (info->attrs[NL80211_ATTR_PMK]) {
 		pmksa.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]);
 		pmksa.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]);