From patchwork Mon Nov 13 08:52:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jithu Jance X-Patchwork-Id: 743746 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5E333C4332F for ; Mon, 13 Nov 2023 08:53:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230015AbjKMIxO (ORCPT ); Mon, 13 Nov 2023 03:53:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44002 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229817AbjKMIxN (ORCPT ); Mon, 13 Nov 2023 03:53:13 -0500 Received: from mail-il1-x130.google.com (mail-il1-x130.google.com [IPv6:2607:f8b0:4864:20::130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA0E6D79 for ; Mon, 13 Nov 2023 00:53:10 -0800 (PST) Received: by mail-il1-x130.google.com with SMTP id e9e14a558f8ab-35930447ae9so15324735ab.2 for ; Mon, 13 Nov 2023 00:53:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1699865590; x=1700470390; darn=vger.kernel.org; h=mime-version:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=32gub2dZr5/iGUHKrY/AaUWgxAA88sOmxu3+/OmBjms=; b=T1vOXdNhIEGjQIMv9w2Ws1LhPrCq0+O2DGxLzTO7oIQ3JkxLtd0kyjOLktgWS7r6+6 IPnF/wy3f3fgVPrOy18gHkJZ+yHog5K/Z/XVWz3GmPXKVTdMHqwu7Z7/Ql9u7h7DWcfJ lelC//L+t0gvT9UevUIOSQdmoydZ6FDMAGaz8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699865590; x=1700470390; h=mime-version:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=32gub2dZr5/iGUHKrY/AaUWgxAA88sOmxu3+/OmBjms=; b=jWBAJskJ0zt71sIlVoaNROYOach4K5qf92WVpK/qBWcfKBiCUzGKS2rvUbckNah2Ui 6ob0cxKbaYQTsv2kZcjDwv02G4Yu92ji+kOkkoFN/KaB2jKD0YxsKgmqwdUKnlknVqeS z70pcAUHdBWN1LzAvREXUJh5oZK0kLRHoWD3mnfpb9sUqqB5ejqbi94tfl/Vmxvmehr1 W24NWAlPefLqvlSTN9DoNTJYsz5lMq6VdJnSDQXwSFnaVQ8p/TSViny1Wt2Izo8LgHkg rb7GhdZNbp4QFH7vPbGH3nMagPG34J10VqBPVAx7o36/qUeSuZvEpfEgTCH8580X909G NVNA== X-Gm-Message-State: AOJu0YxGG8TqQyvaxpZL0eD62DLcyIQDgZ8wo2Gc8+aj3Rklxc6/TPEy sL3/Db2lM33IDo7LonSDLUjGC5KS8DaqNbYdmLI= X-Google-Smtp-Source: AGHT+IGZ2g11yhXi4svo2ILo7ayRKuhsxMBEcAYtKUlFqFrhVyi5Ek0u6UAq0GBWn797VpEl0EAnfQ== X-Received: by 2002:a05:6e02:188f:b0:351:5b43:5ecd with SMTP id o15-20020a056e02188f00b003515b435ecdmr9358071ilu.14.1699865589983; Mon, 13 Nov 2023 00:53:09 -0800 (PST) Received: from C02F22LSML85.dhcp.broadcom.net ([192.19.252.250]) by smtp.gmail.com with ESMTPSA id x24-20020aa784d8000000b00692cb1224casm3461582pfn.183.2023.11.13.00.53.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Nov 2023 00:53:08 -0800 (PST) From: Jithu Jance To: johannes@sipsolutions.net Cc: linux-wireless@vger.kernel.org, vinayak.yadawad@broadcom.com, Jithu Jance Subject: [PATCH 1/1] wifi: nl80211: Add PTK/GTK rekey interval attributes for APs supporting PSK offload Date: Mon, 13 Nov 2023 14:22:24 +0530 Message-Id: <20231113085224.75642-1-jithu.jance@broadcom.com> X-Mailer: git-send-email 2.38.1 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org This patch adds attributes to NL80211_CMD_START_AP that the user application can use to pass down PTK/GTK rekey interval times to the driver. If driver can't support the configuration, it is expected to return failure to NL8011_CMD_START_AP. The rekey interval timings are to be passed in seconds. Signed-off-by: Jithu Jance --- include/net/cfg80211.h | 6 ++++++ include/uapi/linux/nl80211.h | 13 +++++++++++++ net/wireless/nl80211.c | 11 +++++++++++ 3 files changed, 30 insertions(+) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index b137a33a1b68..459e29d4d766 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -1218,6 +1218,10 @@ struct survey_info { * * NL80211_SAE_PWE_BOTH * Allow either hunting-and-pecking loop or hash-to-element + * @ptk_rekey_interval: PTK rekey interval in seconds for drivers supporting + * AP 4 way handshake offload. + * @gtk_rekey_interval: GTK rekey interval in seconds for drivers supporting + * AP 4 way handshake offload. */ struct cfg80211_crypto_settings { u32 wpa_versions; @@ -1235,6 +1239,8 @@ struct cfg80211_crypto_settings { const u8 *sae_pwd; u8 sae_pwd_len; enum nl80211_sae_pwe_mechanism sae_pwe; + u32 ptk_rekey_interval; + u32 gtk_rekey_interval; }; /** diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index dced2c49daec..1bc4650efed1 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -205,6 +205,10 @@ * preshared key material is provided, for example when that driver does * not support setting the temporal keys through %NL80211_CMD_NEW_KEY. * + * NL80211_CMD_START_AP can optionally carry %NL80211_ATTR_GTK_REKEY_INTERVAL + * and %NL80211_ATTR_PTK_REKEY_INTERVAL to pass down user configured values to + * the driver. + * * For 802.1X the PMK or PMK-R0 are set by providing %NL80211_ATTR_PMK * using %NL80211_CMD_SET_PMK. For offloaded FT support also * %NL80211_ATTR_PMKR0_NAME must be provided. @@ -2826,6 +2830,12 @@ enum nl80211_commands { * @NL80211_ATTR_MLO_LINK_DISABLED: Flag attribute indicating that the link is * disabled. * + * @NL80211_ATTR_PTK_REKEY_INTERVAL: PTK refresh interval in seconds for drivers + * supporting NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK. + * + * @NL80211_ATTR_GTK_REKEY_INTERVAL: GTK refresh interval in seconds for drivers + * supporting NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK. + * * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use @@ -3364,6 +3374,9 @@ enum nl80211_attrs { NL80211_ATTR_MLO_LINK_DISABLED, + NL80211_ATTR_PTK_REKEY_INTERVAL, + NL80211_ATTR_GTK_REKEY_INTERVAL, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 569234bc2be6..9c4b2da8f269 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -10892,6 +10892,17 @@ static int nl80211_crypto_settings(struct cfg80211_registered_device *rdev, else settings->sae_pwe = NL80211_SAE_PWE_UNSPECIFIED; + if (info->attrs[NL80211_ATTR_PTK_REKEY_INTERVAL] || + info->attrs[NL80211_ATTR_GTK_REKEY_INTERVAL]) { + if (!wiphy_ext_feature_isset(&rdev->wiphy, + NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK)) + return -EINVAL; + if (info->attrs[NL80211_ATTR_PTK_REKEY_INTERVAL]) + settings->ptk_rekey_interval = nla_get_u32(info->attrs[NL80211_ATTR_PTK_REKEY_INTERVAL]); + else + settings->gtk_rekey_interval = nla_get_u32(info->attrs[NL80211_ATTR_GTK_REKEY_INTERVAL]); + } + return 0; }