From nobody Mon Sep 28 13:19:04 2026 Received: from smtp9.infineon.com (smtp9.infineon.com [217.10.52.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 996543932DB; Fri, 21 Aug 2026 07:56:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.10.52.204 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787299016; cv=none; b=mKTF1diFBtREjWvDsZTxaBoJOdar4kWW6WkgMjb0gasfFdOztjGrQSADQOxFCZC5pMOrCfRGLi4fGexjQL4F8aNj5Q1MoBEnp0KhTI2CJ15PC8bEjUPNu2KQVGvZalCehkKIiBZ35WJlbTolX2uN1Sk+IfIYlLCjG8WOEtnf9ks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787299016; c=relaxed/simple; bh=+onrYa/k5oO0PS6kqA40NrjwtkOJgeqpwE4W0k9mQmo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XPm5exe1/AVzM2zC1JTOQ3hElKVFYrqlqcaU26qY3gIyviEmFawVyMGhQ18yO15FoAtAuk3p5A/GMpdKqc5OgkDqSXfj2JiV4urXDp0o59F63RR5osfAe2cdf+NYgTY0tOJQzl6sdc/moLZmj5dCgZcz54GLKxyecdi+G/CVU3Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=infineon.com; spf=pass smtp.mailfrom=infineon.com; dkim=pass (1024-bit key) header.d=infineon.com header.i=@infineon.com header.b=d7Iu9pf1; arc=none smtp.client-ip=217.10.52.204 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=infineon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=infineon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=infineon.com header.i=@infineon.com header.b="d7Iu9pf1" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=infineon.com; i=@infineon.com; q=dns/txt; s=IFXMAIL; t=1787299015; x=1818835015; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+onrYa/k5oO0PS6kqA40NrjwtkOJgeqpwE4W0k9mQmo=; b=d7Iu9pf1Qdu8A+W527p7FHZOSXYNbRktWTAWgROHiNZnkMiaf3eAR351 1BCwg+qzT+I8Y1y3H9T/nLxPqF/j2fcjElp84p+8eEiyol7wwu3qy1csO 7B4W0A1oK4LzaAFcAz5GPBIh1fuN5vwoX2IfCDRF2GgndvXsbbT/xe3T8 w=; X-CSE-ConnectionGUID: xB8GWDruThiciZOxOxJxdA== X-CSE-MsgGUID: flS8wlQETrieuky/ZmiAGQ== X-IronPort-AV: E=McAfee;i="6800,10657,11881"; a="105579461" X-IronPort-AV: E=Sophos;i="6.25,234,1779141600"; d="scan'208";a="105579461" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO MUCSE822.infineon.com) ([172.23.29.53]) by smtp9.infineon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2026 09:56:47 +0200 Received: from MUCSE809.infineon.com (172.23.29.35) by MUCSE822.infineon.com (172.23.29.53) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Fri, 21 Aug 2026 09:56:46 +0200 Received: from ISCN5CG5251XQT.infineon.com (10.161.6.196) by MUCSE809.infineon.com (172.23.29.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Fri, 21 Aug 2026 09:56:42 +0200 From: Jason Huang To: CC: , , , , , , , , , Carella Chen , Jason Huang Subject: [PATCH v5 1/5] wifi: nl80211: add roam offload extended feature Date: Fri, 21 Aug 2026 15:56:13 +0800 Message-ID: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-1-eeab4fda0f31@infineon.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-0-eeab4fda0f31@infineon.com> References: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-0-eeab4fda0f31@infineon.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MUCSE812.infineon.com (172.23.29.38) To MUCSE809.infineon.com (172.23.29.35) From: Carella Chen Drivers can offload FT or OKC roaming without necessarily advertising full 802.1X 4-way handshake offload. Add an extended feature bit for that capability and allow PMK configuration when it is present. This gives userspace a way to provide PMK or PMK-R0 material needed by firmware roaming implementations while keeping the existing 4-way handshake offload capability unchanged. Assisted-by: GitHub-Copilot-CLI:gpt-5.5 Signed-off-by: Carella Chen Signed-off-by: Jason Huang --- include/uapi/linux/nl80211.h | 4 ++++ net/wireless/nl80211.c | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h index 020387d76412..9f8d9e3d5990 100644 --- a/include/uapi/linux/nl80211.h +++ b/include/uapi/linux/nl80211.h @@ -7110,6 +7110,9 @@ enum nl80211_feature_flags { * @NL80211_EXT_FEATURE_PROBE_AP: Driver supports probing the associated AP * in STA mode using @NL80211_CMD_PROBE_PEER. * + * @NL80211_EXT_FEATURE_ROAM_OFFLOAD: Driver supports Fast Transition or + * Opportunistic Key Caching roaming offload in station mode. + * * @NUM_NL80211_EXT_FEATURES: number of extended features. * @MAX_NL80211_EXT_FEATURES: highest extended feature index. */ @@ -7192,6 +7195,7 @@ enum nl80211_ext_feature_index { NL80211_EXT_FEATURE_ROC_ADDR_FILTER, NL80211_EXT_FEATURE_SET_KEY_LTF_SEED, NL80211_EXT_FEATURE_PROBE_AP, + NL80211_EXT_FEATURE_ROAM_OFFLOAD, =20 /* add new features before the definition below */ NUM_NL80211_EXT_FEATURES, diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 44f2bad08670..15731440c57a 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -18434,6 +18434,7 @@ static int nl80211_set_multicast_to_unicast(struct = sk_buff *skb, static int nl80211_set_pmk(struct sk_buff *skb, struct genl_info *info) { struct cfg80211_registered_device *rdev =3D info->user_ptr[0]; + struct wiphy *wiphy =3D &rdev->wiphy; struct net_device *dev =3D info->user_ptr[1]; struct wireless_dev *wdev =3D dev->ieee80211_ptr; struct cfg80211_pmk_conf pmk_conf =3D {}; @@ -18442,8 +18443,10 @@ static int nl80211_set_pmk(struct sk_buff *skb, st= ruct genl_info *info) wdev->iftype !=3D NL80211_IFTYPE_P2P_CLIENT) return -EOPNOTSUPP; =20 - if (!wiphy_ext_feature_isset(&rdev->wiphy, - NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X)) + if (!wiphy_ext_feature_isset(wiphy, + NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X) && + !wiphy_ext_feature_isset(wiphy, + NL80211_EXT_FEATURE_ROAM_OFFLOAD)) return -EOPNOTSUPP; =20 if (!info->attrs[NL80211_ATTR_MAC] || !info->attrs[NL80211_ATTR_PMK]) --=20 2.25.1 From nobody Mon Sep 28 13:19:04 2026 Received: from smtp9.infineon.com (smtp9.infineon.com [217.10.52.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2CF3C41A79C; Fri, 21 Aug 2026 07:56:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.10.52.204 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787299019; cv=none; b=cWjyGky5PlZjRVJ6+m0vqdRHYWGqpp7GXp+rG+HfluybP7XcjPN8K2UtMMgL2uFWOtoqqdpqelLAleiY1xulM3HxdH7kpXfbjPajg10m9rCJ8SbL05trAvAk0I+5iY1U4syV7rSDF3WZqXYA43/lnYV+G8y/GXuCmURKgKPY7nw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787299019; c=relaxed/simple; bh=qZDVinXHIGD+S2Cm49ML3pf7G3rNjlOWu1x6Ag4xjUs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=lodFQc1NC2qfXpQfXg5W2J0jjX+PUcv7RuuXDVH9WSG4wkimUds2yewyD8HZU5a1IaGeavwEuuY9NfMXvzsFj5tOurgA3p4XXO2tFtzysL8IpHNLPlcEWJbRzLoEfnd+ejwwuOpQR4mzGilZKPlqKFuH+QMVV/5OXwl97+qRRD0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=infineon.com; spf=pass smtp.mailfrom=infineon.com; dkim=pass (1024-bit key) header.d=infineon.com header.i=@infineon.com header.b=ZaH6gq5Q; arc=none smtp.client-ip=217.10.52.204 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=infineon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=infineon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=infineon.com header.i=@infineon.com header.b="ZaH6gq5Q" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=infineon.com; i=@infineon.com; q=dns/txt; s=IFXMAIL; t=1787299018; x=1818835018; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qZDVinXHIGD+S2Cm49ML3pf7G3rNjlOWu1x6Ag4xjUs=; b=ZaH6gq5Qg0ynJr6raQa8ODJhIccxck5ADxKRwCAFhphlOqrPByKup2oH j0giTJTuDkzEkuFYg7sc7zxNeu70IXD8BgJTgl9Kj1qaCAmFAceGPmuSf 5oTdYEh7gtLNVLzuvlLxjNMH7vuTbR1DvZM2VhJx7DAEyDmnWVO6xcNXC 8=; X-CSE-ConnectionGUID: nazhmknhTleOVlQyaeULzA== X-CSE-MsgGUID: 0OWqUrNiSkCFN3+pTHGSYQ== X-IronPort-AV: E=McAfee;i="6800,10657,11881"; a="105579477" X-IronPort-AV: E=Sophos;i="6.25,234,1779141600"; d="scan'208";a="105579477" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO MUCSE814.infineon.com) ([172.23.29.40]) by smtp9.infineon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2026 09:56:54 +0200 Received: from MUCSE809.infineon.com (172.23.29.35) by MUCSE814.infineon.com (172.23.29.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Fri, 21 Aug 2026 09:56:53 +0200 Received: from ISCN5CG5251XQT.infineon.com (10.161.6.196) by MUCSE809.infineon.com (172.23.29.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Fri, 21 Aug 2026 09:56:49 +0200 From: Jason Huang To: CC: , , , , , , , , , Carella Chen , Jason Huang Subject: [PATCH v5 2/5] wifi: brcmfmac: detect firmware FBT and OKC support Date: Fri, 21 Aug 2026 15:56:14 +0800 Message-ID: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-2-eeab4fda0f31@infineon.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-0-eeab4fda0f31@infineon.com> References: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-0-eeab4fda0f31@infineon.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MUCSE812.infineon.com (172.23.29.38) To MUCSE809.infineon.com (172.23.29.35) From: Carella Chen Some firmware advertises Fast BSS Transition and Opportunistic Key Caching support through the firmware capability string. Track those capabilities so later roaming offload handling can be enabled only when firmware reports support. Assisted-by: GitHub-Copilot-CLI:gpt-5.5 Signed-off-by: Carella Chen Signed-off-by: Jason Huang --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c | 2 ++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/d= rivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c index 488364ef8ff2..cc19e5e7ebf5 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c @@ -45,6 +45,8 @@ static const struct brcmf_feat_fwcap brcmf_fwcap_map[] = =3D { { BRCMF_FEAT_SAE, "sae " }, { BRCMF_FEAT_FWAUTH, "idauth" }, { BRCMF_FEAT_SAE_EXT, "sae_ext" }, + { BRCMF_FEAT_FBT, "fbt " }, + { BRCMF_FEAT_OKC, "okc" }, }; =20 #ifdef DEBUG diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h b/d= rivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h index 31f8695ca417..8165a286b630 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h @@ -59,7 +59,9 @@ BRCMF_FEAT_DEF(SCAN_V2) \ BRCMF_FEAT_DEF(PMKID_V2) \ BRCMF_FEAT_DEF(PMKID_V3) \ - BRCMF_FEAT_DEF(SAE_EXT) + BRCMF_FEAT_DEF(SAE_EXT) \ + BRCMF_FEAT_DEF(FBT) \ + BRCMF_FEAT_DEF(OKC) =20 /* * Quirks: --=20 2.25.1 From nobody Mon Sep 28 13:19:04 2026 Received: from smtp11.infineon.com (smtp11.infineon.com [217.10.52.105]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C7AFD419313; Fri, 21 Aug 2026 07:57:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.10.52.105 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787299030; cv=none; b=IMadEGOA3G7fzQp9Z1AhViusfXichsqRsVVOAT1+roOaveXGqCIJjIJIsO0qdzmZt/j8BrqOGlaNlwJhLQ6Pvlr6SDjuC+HOLpH2nXUSEyZEDXUcnS+kAYdxAW0VDBeHJ4q1yukSlMnq5efNn9KGNxo1xA/usnEDjgoS8hZncx8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787299030; c=relaxed/simple; bh=StdLxsvUVXdzP8w7YEWqdH9NS2xn4P9VQr7TqXLuHQs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OdgDtA4uvoPLHG7cVHo6PI9tra2kRwt+DJsDq3VRIX5RyuTMqrkZfkLO5CG+AlgqsQA+QRKD7RmjBxm+6E9I0cOma9IzDoRidoEZ/f/gOpYSw6wiq4XRpVmT2cy675cDj0ftRJOY7SGL8KJ+7k9N3q3rc8N6xHOuotpnKRFtLH4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=infineon.com; spf=pass smtp.mailfrom=infineon.com; dkim=pass (1024-bit key) header.d=infineon.com header.i=@infineon.com header.b=f0vbMw3T; arc=none smtp.client-ip=217.10.52.105 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=infineon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=infineon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=infineon.com header.i=@infineon.com header.b="f0vbMw3T" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=infineon.com; i=@infineon.com; q=dns/txt; s=IFXMAIL; t=1787299028; x=1818835028; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=StdLxsvUVXdzP8w7YEWqdH9NS2xn4P9VQr7TqXLuHQs=; b=f0vbMw3TSu92bLc3TLTzq1v0s5OoWg6fW5DyzEq++4PXOjwXlBMR3n52 qmoGTpWXpOi0iRIWg0DlCno0WZnslwOqiwOtovqFPMx/FU27mbo6dW8nM /4w1ULcH+OsM26ZIQoltAjfKatGT5S+X1XqKCzzCqbVfi+9jDnMrhu9TT s=; X-CSE-ConnectionGUID: Z/XUZRZCRZOIWl8ueMRzeg== X-CSE-MsgGUID: U1alvkhpRl+zmXNbRxwjew== X-IronPort-AV: E=McAfee;i="6800,10657,11881"; a="156882704" X-IronPort-AV: E=Sophos;i="6.25,234,1779141600"; d="scan'208";a="156882704" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO MUCSE812.infineon.com) ([172.23.29.38]) by smtp11.infineon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2026 09:57:00 +0200 Received: from MUCSE809.infineon.com (172.23.29.35) by MUCSE812.infineon.com (172.23.29.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Fri, 21 Aug 2026 09:56:59 +0200 Received: from ISCN5CG5251XQT.infineon.com (10.161.6.196) by MUCSE809.infineon.com (172.23.29.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Fri, 21 Aug 2026 09:56:54 +0200 From: Jason Huang To: CC: , , , , , , , , , Chung-Hsien Hsu , Chi-hsien Lin , Carella Chen , Shelley Yang , Jason Huang Subject: [PATCH v5 3/5] wifi: brcmfmac: add PMK programming for firmware roaming offload Date: Fri, 21 Aug 2026 15:56:15 +0800 Message-ID: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-3-eeab4fda0f31@infineon.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-0-eeab4fda0f31@infineon.com> References: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-0-eeab4fda0f31@infineon.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MUCSE812.infineon.com (172.23.29.38) To MUCSE809.infineon.com (172.23.29.35) From: Darren Li FT and OKC roaming offload need PMK material in firmware even when the initial 802.1X exchange is handled by userspace. Add a roaming firmware-supplicant profile state for those connections and allow PMK configuration while firmware FT or OKC state is active. Program the OKC PMK through the okc_info_pmk iovar before setting the regular PMK when firmware reports OKC state. Only select the roaming firmware-supplicant state when firmware advertises FBT or OKC support; devices without those capabilities keep the profile in the userspace supplicant state and do not issue roaming-offload specific iovars on every connect. For FT-PSK with firmware supplicant support, keep the profile in the PSK firmware-supplicant state. Assisted-by: GitHub-Copilot-CLI:gpt-5.5 Signed-off-by: Darren Li Signed-off-by: Chung-Hsien Hsu Signed-off-by: Chi-hsien Lin Co-developed-by: Carella Chen Signed-off-by: Carella Chen Co-developed-by: Shelley Yang Signed-off-by: Shelley Yang Signed-off-by: Jason Huang --- .../broadcom/brcm80211/brcmfmac/cfg80211.c | 56 ++++++++++++++++++= +--- .../broadcom/brcm80211/brcmfmac/cfg80211.h | 5 +- 2 files changed, 54 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/= drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index 872c48806d09..f2916cc9e5fc 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -2112,9 +2112,11 @@ brcmf_set_key_mgmt(struct net_device *ndev, struct c= fg80211_connect_params *sme) struct brcmf_pub *drvr =3D ifp->drvr; s32 val; s32 err; + s32 okc_enable; const struct brcmf_tlv *rsn_ie; const u8 *ie; u32 ie_len; + bool fwsup_roam; u32 offset; u16 rsn_cap; u32 mfp; @@ -2122,6 +2124,9 @@ brcmf_set_key_mgmt(struct net_device *ndev, struct cf= g80211_connect_params *sme) =20 profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_NONE; profile->is_ft =3D false; + profile->is_okc =3D false; + fwsup_roam =3D brcmf_feat_is_enabled(ifp, BRCMF_FEAT_FBT) || + brcmf_feat_is_enabled(ifp, BRCMF_FEAT_OKC); =20 if (!sme->crypto.n_akm_suites) return 0; @@ -2138,6 +2143,8 @@ brcmf_set_key_mgmt(struct net_device *ndev, struct cf= g80211_connect_params *sme) val =3D WPA_AUTH_UNSPECIFIED; if (sme->want_1x) profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_1X; + else if (fwsup_roam) + profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_ROAM; break; case WLAN_AKM_SUITE_PSK: val =3D WPA_AUTH_PSK; @@ -2153,11 +2160,15 @@ brcmf_set_key_mgmt(struct net_device *ndev, struct = cfg80211_connect_params *sme) val =3D WPA2_AUTH_UNSPECIFIED; if (sme->want_1x) profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_1X; + else if (fwsup_roam) + profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_ROAM; break; case WLAN_AKM_SUITE_8021X_SHA256: val =3D WPA2_AUTH_1X_SHA256; if (sme->want_1x) profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_1X; + else if (fwsup_roam) + profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_ROAM; break; case WLAN_AKM_SUITE_PSK_SHA256: val =3D WPA2_AUTH_PSK_SHA256; @@ -2170,10 +2181,16 @@ brcmf_set_key_mgmt(struct net_device *ndev, struct = cfg80211_connect_params *sme) profile->is_ft =3D true; if (sme->want_1x) profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_1X; + else if (fwsup_roam) + profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_ROAM; break; case WLAN_AKM_SUITE_FT_PSK: val =3D WPA2_AUTH_PSK | WPA2_AUTH_FT; profile->is_ft =3D true; + if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_FWSUP)) + profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_PSK; + else if (fwsup_roam) + profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_ROAM; break; case WLAN_AKM_SUITE_WFA_DPP: val =3D WFA_AUTH_DPP; @@ -2204,8 +2221,22 @@ brcmf_set_key_mgmt(struct net_device *ndev, struct c= fg80211_connect_params *sme) =20 if (profile->use_fwsup =3D=3D BRCMF_PROFILE_FWSUP_1X) brcmf_dbg(INFO, "using 1X offload\n"); + + if (profile->use_fwsup =3D=3D BRCMF_PROFILE_FWSUP_1X || + profile->use_fwsup =3D=3D BRCMF_PROFILE_FWSUP_ROAM) { + err =3D brcmf_fil_bsscfg_int_get(ifp, "okc_enable", + &okc_enable); + if (err) { + bphy_err(drvr, "get okc_enable failed (%d)\n", err); + } else { + brcmf_dbg(INFO, "okc_enable (%d)\n", okc_enable); + profile->is_okc =3D okc_enable; + } + } if (profile->use_fwsup =3D=3D BRCMF_PROFILE_FWSUP_SAE) brcmf_dbg(INFO, "using SAE offload\n"); + if (profile->use_fwsup =3D=3D BRCMF_PROFILE_FWSUP_ROAM) + brcmf_dbg(INFO, "using roaming offload\n"); =20 if (!brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MFP)) goto skip_mfp_config; @@ -2494,13 +2525,14 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct = net_device *ndev, =20 if (sme->crypto.psk && !is_sae_akm && profile->use_fwsup !=3D BRCMF_PROFILE_FWSUP_SAE) { - if (WARN_ON(profile->use_fwsup !=3D - BRCMF_PROFILE_FWSUP_NONE)) { + if (profile->use_fwsup =3D=3D BRCMF_PROFILE_FWSUP_NONE) { + brcmf_dbg(INFO, "using PSK offload\n"); + profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_PSK; + } else if (WARN_ON(profile->use_fwsup !=3D + BRCMF_PROFILE_FWSUP_PSK)) { err =3D -EINVAL; goto done; } - brcmf_dbg(INFO, "using PSK offload\n"); - profile->use_fwsup =3D BRCMF_PROFILE_FWSUP_PSK; } if (profile->use_fwsup !=3D BRCMF_PROFILE_FWSUP_NONE) { /* enable firmware supplicant for this interface */ @@ -5953,17 +5985,29 @@ static int brcmf_cfg80211_set_pmk(struct wiphy *wip= hy, struct net_device *dev, const struct cfg80211_pmk_conf *conf) { struct brcmf_if *ifp; + struct brcmf_pub *drvr; + int ret; =20 brcmf_dbg(TRACE, "enter\n"); =20 - /* expect using firmware supplicant for 1X */ ifp =3D netdev_priv(dev); - if (WARN_ON(ifp->vif->profile.use_fwsup !=3D BRCMF_PROFILE_FWSUP_1X)) + drvr =3D ifp->drvr; + if (WARN_ON(ifp->vif->profile.use_fwsup !=3D BRCMF_PROFILE_FWSUP_1X && + !ifp->vif->profile.is_ft && + !ifp->vif->profile.is_okc)) return -EINVAL; =20 if (conf->pmk_len > BRCMF_WSEC_MAX_PSK_LEN) return -ERANGE; =20 + if (ifp->vif->profile.is_okc) { + ret =3D brcmf_fil_iovar_data_set(ifp, "okc_info_pmk", + conf->pmk, conf->pmk_len); + if (ret < 0) + bphy_err(drvr, "okc_info_pmk iovar failed: ret=3D%d\n", + ret); + } + return brcmf_set_pmk(ifp, conf->pmk, conf->pmk_len); } =20 diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h b/= drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h index 63e534523f51..1aa99390a951 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h @@ -127,7 +127,8 @@ enum brcmf_profile_fwsup { BRCMF_PROFILE_FWSUP_NONE, BRCMF_PROFILE_FWSUP_PSK, BRCMF_PROFILE_FWSUP_1X, - BRCMF_PROFILE_FWSUP_SAE + BRCMF_PROFILE_FWSUP_SAE, + BRCMF_PROFILE_FWSUP_ROAM }; =20 /** @@ -164,6 +165,7 @@ enum brcmf_mgmt_tx_status { * @bssid: bssid of joined/joining ibss. * @sec: security information. * @key: key information + * @is_okc: OKC is used for current connection. */ struct brcmf_cfg80211_profile { u8 bssid[ETH_ALEN]; @@ -172,6 +174,7 @@ struct brcmf_cfg80211_profile { enum brcmf_profile_fwsup use_fwsup; u16 use_fwauth; bool is_ft; + bool is_okc; }; =20 /** --=20 2.25.1 From nobody Mon Sep 28 13:19:04 2026 Received: from smtp9.infineon.com (smtp9.infineon.com [217.10.52.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D64F241BA83; Fri, 21 Aug 2026 07:57:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.10.52.204 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787299031; cv=none; b=O9xXMSwJ1GkAJO1eboFzAM+2eepd/I7dOt8TCfVVCNs4HFrA/nErJz+xHgNXc7+loZQUbTjMJpk6UMUCWUsMnSTa3+VRMUYXuJE4KSDIYW7b/xznSn4Nvten8fYdPPvg6G3VtuoQYVqCjuS3WWPXNtvW4I4siKgTPsObJv3RlhM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787299031; c=relaxed/simple; bh=K8vTRJbbTzSsQyUUJQiGT9OhfCWKl65Qlx+r6j1+VhY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dzB5YDZmdtCxGRoRm2Tf2IjKrGJW1s32e/xjDvcucpLjH6KJj01xkLVBlzPi4grq1nGrzz6n1hTUauAc7nahrufHfWpAiYZljiDKVQhpjz9nGfeyko2MZx2GDNjy0/EHim4kYsUbSjQAXNL+vGUGSoNabRphvzkuHhIfB51zUDw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=infineon.com; spf=pass smtp.mailfrom=infineon.com; dkim=pass (1024-bit key) header.d=infineon.com header.i=@infineon.com header.b=eAFeU0Z3; arc=none smtp.client-ip=217.10.52.204 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=infineon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=infineon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=infineon.com header.i=@infineon.com header.b="eAFeU0Z3" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=infineon.com; i=@infineon.com; q=dns/txt; s=IFXMAIL; t=1787299029; x=1818835029; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=K8vTRJbbTzSsQyUUJQiGT9OhfCWKl65Qlx+r6j1+VhY=; b=eAFeU0Z3tINiPdmgMtDZigyxHrzczHsNgDARHnm8pKUmIHCFLXFDxUsY YfHIAuJvveuP2yXy4a3PvUFA9EEjycPvhWtufeJRFNOEulRH5W3pFheDt 669mHw3DUSKA0cTx258MS785+Bw12Uqna8Hw3ns+mV3ZTEAue2dHk8hRE Q=; X-CSE-ConnectionGUID: eadkak4XS2KFDZxyAOUx4w== X-CSE-MsgGUID: kiPBsjPKQLC02+nNtfiIKA== X-IronPort-AV: E=McAfee;i="6800,10657,11881"; a="105579507" X-IronPort-AV: E=Sophos;i="6.25,234,1779141600"; d="scan'208";a="105579507" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO MUCSE805.infineon.com) ([172.23.29.31]) by smtp9.infineon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Aug 2026 09:57:07 +0200 Received: from MUCSE809.infineon.com (172.23.29.35) by MUCSE805.infineon.com (172.23.29.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Fri, 21 Aug 2026 09:57:06 +0200 Received: from ISCN5CG5251XQT.infineon.com (10.161.6.196) by MUCSE809.infineon.com (172.23.29.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Fri, 21 Aug 2026 09:57:01 +0200 From: Jason Huang To: CC: , , , , , , , , , Chung-Hsien Hsu , Chi-hsien Lin , Carella Chen , Jason Huang Subject: [PATCH v5 4/5] wifi: brcmfmac: report port authorization after offloaded roaming Date: Fri, 21 Aug 2026 15:56:16 +0800 Message-ID: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-4-eeab4fda0f31@infineon.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-0-eeab4fda0f31@infineon.com> References: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-0-eeab4fda0f31@infineon.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MUCSE812.infineon.com (172.23.29.38) To MUCSE809.infineon.com (172.23.29.35) From: Darren Li Firmware can complete FT or OKC roaming before the driver reports the connect or roam event to cfg80211. Detect those successful offloaded cases when the profile uses firmware 1X or roaming offload and the association request carries PMK cache state, FT is in use, or OKC is enabled. After reporting the connect or roam event, call cfg80211_port_authorized() so nl80211 emits the dedicated NL80211_CMD_PORT_AUTHORIZED event instead of reusing the reserved NL80211_ATTR_PORT_AUTHORIZED flag in CONNECT/ROAM notifications. Assisted-by: GitHub-Copilot-CLI:gpt-5.5 Signed-off-by: Darren Li Signed-off-by: Chung-Hsien Hsu Signed-off-by: Chi-hsien Lin Signed-off-by: Carella Chen Signed-off-by: Jason Huang --- .../broadcom/brcm80211/brcmfmac/cfg80211.c | 65 ++++++++++++++++++= ++-- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/= drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index f2916cc9e5fc..c11b3eac9d47 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -6466,6 +6466,47 @@ static s32 brcmf_get_assoc_ies(struct brcmf_cfg80211= _info *cfg, return err; } =20 +static bool brcmf_has_pmkid(const u8 *parse, u32 len) +{ + const struct brcmf_tlv *rsn_ie; + const u8 *ie; + u32 ie_len; + u32 offset; + u16 count; + + if (!parse) + return false; + + rsn_ie =3D brcmf_parse_tlvs(parse, len, WLAN_EID_RSN); + if (!rsn_ie) + return false; + + ie =3D (const u8 *)rsn_ie; + ie_len =3D rsn_ie->len + TLV_HDR_LEN; + + offset =3D TLV_HDR_LEN + WPA_IE_VERSION_LEN + WPA_IE_MIN_OUI_LEN; + if (offset + WPA_IE_SUITE_COUNT_LEN >=3D ie_len) + return false; + + count =3D ie[offset] + (ie[offset + 1] << 8); + offset +=3D WPA_IE_SUITE_COUNT_LEN + count * WPA_IE_MIN_OUI_LEN; + if (offset + WPA_IE_SUITE_COUNT_LEN >=3D ie_len) + return false; + + count =3D ie[offset] + (ie[offset + 1] << 8); + offset +=3D WPA_IE_SUITE_COUNT_LEN + count * WPA_IE_MIN_OUI_LEN; + if (offset + RSN_CAP_LEN >=3D ie_len) + return false; + + offset +=3D RSN_CAP_LEN; + if (offset + RSN_PMKID_COUNT_LEN > ie_len) + return false; + + count =3D ie[offset] + (ie[offset + 1] << 8); + + return count > 0; +} + static s32 brcmf_bss_roaming_done(struct brcmf_cfg80211_info *cfg, struct net_device *ndev, @@ -6480,6 +6521,7 @@ brcmf_bss_roaming_done(struct brcmf_cfg80211_info *cf= g, struct brcmf_bss_info_le *bi; struct brcmu_chan ch; struct cfg80211_roam_info roam_info =3D {}; + bool authorized =3D false; u32 freq; s32 err =3D 0; u8 *buf; @@ -6526,14 +6568,18 @@ brcmf_bss_roaming_done(struct brcmf_cfg80211_info *= cfg, roam_info.resp_ie =3D conn_info->resp_ie; roam_info.resp_ie_len =3D conn_info->resp_ie_len; =20 + if ((profile->use_fwsup =3D=3D BRCMF_PROFILE_FWSUP_1X || + profile->use_fwsup =3D=3D BRCMF_PROFILE_FWSUP_ROAM) && + (brcmf_has_pmkid(roam_info.req_ie, roam_info.req_ie_len) || + profile->is_ft || profile->is_okc)) + authorized =3D true; + cfg80211_roamed(ndev, &roam_info, GFP_KERNEL); + if (authorized) + cfg80211_port_authorized(ndev, profile->bssid, NULL, 0, + GFP_KERNEL); brcmf_dbg(CONN, "Report roaming result\n"); =20 - if (profile->use_fwsup =3D=3D BRCMF_PROFILE_FWSUP_1X && profile->is_ft) { - cfg80211_port_authorized(ndev, profile->bssid, NULL, 0, GFP_KERNEL); - brcmf_dbg(CONN, "Report port authorized\n"); - } - set_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state); brcmf_dbg(TRACE, "Exit\n"); return err; @@ -6548,6 +6594,7 @@ brcmf_bss_connect_done(struct brcmf_cfg80211_info *cf= g, struct brcmf_cfg80211_profile *profile =3D &ifp->vif->profile; struct brcmf_cfg80211_connect_info *conn_info =3D cfg_to_conn(cfg); struct cfg80211_connect_resp_params conn_params; + bool authorized; =20 brcmf_dbg(TRACE, "Enter\n"); =20 @@ -6572,7 +6619,15 @@ brcmf_bss_connect_done(struct brcmf_cfg80211_info *c= fg, conn_params.req_ie_len =3D conn_info->req_ie_len; conn_params.resp_ie =3D conn_info->resp_ie; conn_params.resp_ie_len =3D conn_info->resp_ie_len; + authorized =3D completed && + (profile->use_fwsup =3D=3D BRCMF_PROFILE_FWSUP_1X || + profile->use_fwsup =3D=3D BRCMF_PROFILE_FWSUP_ROAM) && + brcmf_has_pmkid(conn_params.req_ie, + conn_params.req_ie_len); cfg80211_connect_done(ndev, &conn_params, GFP_KERNEL); + if (authorized) + cfg80211_port_authorized(ndev, profile->bssid, NULL, 0, + GFP_KERNEL); brcmf_dbg(CONN, "Report connect result - connection %s\n", completed ? "succeeded" : "failed"); } --=20 2.25.1 From nobody Mon Sep 28 13:19:04 2026 Received: from smtp2.infineon.com (smtp2.infineon.com [217.10.52.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 42B60363C40; Mon, 24 Aug 2026 02:27:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.10.52.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787538484; cv=none; b=ILsl16OPSUJIjKSWWtFbNFMieiXFT7SRk7JdjBKAiXodrsQ7BiC7nmDWNVx0PZzU/B5/bp3dSgQfif8lDGoxzX1/ZNE0wkpFsp6akDD/Zn7pvJQCduoSI9WBNziOQrhwwadGkCeOl5TuaUmn0kPARzzbfAyhfAEQeyaquK7gp6Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787538484; c=relaxed/simple; bh=2orO2X3kae5MZd+KLTJhLBcyE1WmQ7MbZo7jM8M6XHQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=JvmzARRreAwWKst91cUa3vuQ0TQYnsywGiiFbdopnBPARgTW58sfVo4fuCA7Fv9Wokvvg6AwhdsoWI+pIA80M8SgpBdGiqxg4XjmODIA3mF0K1EjQC/Kp1qrPd2bwSO1aFEtEMaIahoI3oecidBklNzg774YjphpNYOcr2jBeR0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=infineon.com; spf=pass smtp.mailfrom=infineon.com; dkim=pass (1024-bit key) header.d=infineon.com header.i=@infineon.com header.b=EKxq2hU3; arc=none smtp.client-ip=217.10.52.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=infineon.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=infineon.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=infineon.com header.i=@infineon.com header.b="EKxq2hU3" DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=infineon.com; i=@infineon.com; q=dns/txt; s=IFXMAIL; t=1787538481; x=1819074481; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2orO2X3kae5MZd+KLTJhLBcyE1WmQ7MbZo7jM8M6XHQ=; b=EKxq2hU3xPvXJddnY3nrqEoc3oOIz6zSPD7RXd1+u+UfL+CDYtDxxnxR fZ2xDM6BUeKLOLbJCq62JM1mJI5Tfx0xcSagYqL+ZSwdROAeCrvg/4tLT 18FYQDRYiysMDIr/0ZUThkHbN04+XYONnQAz6eqrP1QQXuFrf6Mo5mdMs w=; X-CSE-ConnectionGUID: tzJA+TcfTgyJ3/6JDCa49g== X-CSE-MsgGUID: GzrBeViJRjWKDmGG+8VFcQ== X-IronPort-AV: E=McAfee;i="6800,10657,11884"; a="174150362" X-IronPort-AV: E=Sophos;i="6.25,239,1779141600"; d="scan'208";a="174150362" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO MUCSE812.infineon.com) ([172.23.29.38]) by smtp2.infineon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Aug 2026 04:27:52 +0200 Received: from MUCSE809.infineon.com (172.23.29.35) by MUCSE812.infineon.com (172.23.29.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Mon, 24 Aug 2026 04:27:51 +0200 Received: from ISCN5CG5251XQT.infineon.com (10.161.6.196) by MUCSE809.infineon.com (172.23.29.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Mon, 24 Aug 2026 04:27:47 +0200 From: Jason Huang To: CC: , , , , , , , , , Carella Chen , Jason Huang Subject: [PATCH v5 5/5] wifi: brcmfmac: advertise firmware roam offload support Date: Mon, 24 Aug 2026 10:27:35 +0800 Message-ID: <20260824022735.468599-1-Jason.Huang2@infineon.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-0-eeab4fda0f31@infineon.com> References: <20260821-upstream-wireless-next-main-jason-11r-support-v1-v5-0-eeab4fda0f31@infineon.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MUCSE823.infineon.com (172.23.29.54) To MUCSE809.infineon.com (172.23.29.35) From: Carella Chen Advertise NL80211_EXT_FEATURE_ROAM_OFFLOAD only when firmware reports FBT or OKC support. That lets userspace provide PMK material for firmware roaming without enabling the path on devices that cannot complete the offloaded roam. Assisted-by: GitHub-Copilot-CLI:gpt-5.5 Signed-off-by: Carella Chen Signed-off-by: Jason Huang --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/= drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c index c11b3eac9d47..6a97be3149fc 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -7830,6 +7830,10 @@ static int brcmf_setup_wiphy(struct wiphy *wiphy, st= ruct brcmf_if *ifp) } if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_SAE_EXT)) wiphy->features |=3D NL80211_FEATURE_SAE; + if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_FBT) || + brcmf_feat_is_enabled(ifp, BRCMF_FEAT_OKC)) + wiphy_ext_feature_set(wiphy, + NL80211_EXT_FEATURE_ROAM_OFFLOAD); wiphy->mgmt_stypes =3D brcmf_txrx_stypes; wiphy->max_remain_on_channel_duration =3D 5000; if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_PNO)) { --=20 2.25.1