Message ID | 083b63a2e6f5ae42e11e4044350a28cea8d462b7.1699426085.git.vinayak.yadawad@broadcom.com |
---|---|
State | New |
Headers | show |
Series | [v2,1/1] wifi: nl80211: Extend del pmksa support for SAE and OWE security | expand |
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.
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 --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]);
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(-)