From patchwork Wed Nov 30 13:09:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710488 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=pKPk9Dwz; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=LkU2NlfB; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfjG1qMTz23nv for ; Thu, 1 Dec 2022 00:11:11 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=h/i2n9BhWxS/e+V7BN7/TbHteb37IHefiWektRnTgVw=; b=pKPk9DwzDh8pKD q8C1j82DJL9MQSbup1vdBvFATa/uIT7KzAZdpfbQqPX4+mqlRGfKJ0mqRd5at7UYjNxc3BlfiGwtk MMgt4bau8PgAk7DAjEkq6UTACMlh9h9mWk39c6m4mjszNDARMLDi3yXiEg0hmijuA7FUApMx6nbmx VFV8h4DwC2lvzjpclORrhsN0xERi92AM/CjDpfQDR8JsrGsM++8q8S0XiwUD/Acn/qFW1dgWG0lI8 PHFLkPtEw/92FSuOPuRLDhLh363eE1Sf3kSvqIHT1ttZTlTvNTkDKSAc8SsJOuWLeG6o/14uP6Qju q5GG7vh9q/z3HWwLFIQw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mr1-00GM6W-Oy; Wed, 30 Nov 2022 13:10:23 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mqz-00GM5t-94 for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:22 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813821; x=1701349821; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8swzS4P20F3hADcWqYOHJKA7v/ooHmMJJh7E8bkq71w=; b=LkU2NlfBKX3ANBzxbaTkgFC/SoMUOvOTA8MbSaRgnA24j1FbR6anW1wg zHTtBv7EdQI8XVa39d8S849HITVIRkUj/AWteOomzu7hVxmB5/OFraCCo OfFvNlKVBZ83d3E06aMMMMQbsOR44+j4r+fKX1ZKKwiGbYYMirjTptZ3F kZ/7kWSd/bCX75mXvbxxy+6BsdVvbmd5I8X17xy7AUKdoEeCHf6oXZlI+ AV1DewFpjCckF8MuCO1A6z7Uns9RjkUof8S80soKIcFj5Zcrii2uENm1k 1yOe2ZhsbxUTk7paBgOnnfCS7NL6PhIgTbRoUCKNNAaoDGaqEmXpzfKY8 A==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238674" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238674" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:20 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098043" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098043" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:19 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Andrei Otcheretianski Subject: [PATCH v2 01/15] common: Combine definitions for Multi-Link and per STA profile control Date: Wed, 30 Nov 2022 15:09:25 +0200 Message-Id: <20221130130939.115928-2-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051021_383338_B23491C8 X-CRM114-Status: GOOD ( 12.85 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: The control fields are 16 bit wide. Combine the per byte definitions to make it more convenient. Signed-off-by: Andrei Otcheretianski --- src/common/ieee802_11_defs.h | 32 ++++++++++++++ src/drivers/driver_nl80211_event.c | 16 ++++++++++----- 2 fi [...] Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org The control fields are 16 bit wide. Combine the per byte definitions to make it more convenient. Signed-off-by: Andrei Otcheretianski --- src/common/ieee802_11_defs.h | 32 ++++++++++++++---------------- src/drivers/driver_nl80211_event.c | 16 ++++++++++----- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h index 310b7660e2..427b284b85 100644 --- a/src/common/ieee802_11_defs.h +++ b/src/common/ieee802_11_defs.h @@ -2539,28 +2539,26 @@ struct ieee80211_eht_capabilities { /* IEEE P802.11be/D2.2, 9.4.2.312.2 - Basic Multi-Link element */ /* Figure 9-1002g: Presence Bitmap subfield of the Basic Multi-Link element */ -#define BASIC_MULTI_LINK_CTRL0_PRES_LINK_ID 0x10 -#define BASIC_MULTI_LINK_CTRL0_PRES_BSS_PARAM_CH_COUNT 0x20 -#define BASIC_MULTI_LINK_CTRL0_PRES_MSD_INFO 0x40 -#define BASIC_MULTI_LINK_CTRL0_PRES_EML_CAPA 0x80 - -#define BASIC_MULTI_LINK_CTRL1_PRES_MLD_CAPA 0x01 -#define BASIC_MULTI_LINK_CTRL1_PRES_AP_MLD_ID 0x02 +#define BASIC_MULTI_LINK_CTRL_PRES_LINK_ID 0x0010 +#define BASIC_MULTI_LINK_CTRL_PRES_BSS_PARAM_CH_COUNT 0x0020 +#define BASIC_MULTI_LINK_CTRL_PRES_MSD_INFO 0x0040 +#define BASIC_MULTI_LINK_CTRL_PRES_EML_CAPA 0x0080 +#define BASIC_MULTI_LINK_CTRL_PRES_MLD_CAPA 0x0100 +#define BASIC_MULTI_LINK_CTRL_PRES_AP_MLD_ID 0x0200 /* * STA Control field definitions of Per-STA Profile subelement in Basic * Multi-Link element as described in Figure 9-1002n: STA Control field format. */ -#define BASIC_MLE_STA_CTRL0_LINK_ID_SHIFT 0 -#define BASIC_MLE_STA_CTRL0_LINK_ID_MASK 0x0F -#define BASIC_MLE_STA_CTRL0_COMPLETE_PROFILE 0x10 -#define BASIC_MLE_STA_CTRL0_PRES_STA_MAC 0x20 -#define BASIC_MLE_STA_CTRL0_PRES_BEACON_INT 0x40 -#define BASIC_MLE_STA_CTRL0_PRES_TSF_OFFSET 0x80 -#define BASIC_MLE_STA_CTRL1_PRES_DTIM_INFO 0x01 -#define BASIC_MLE_STA_CTRL1_PRES_NSTR_LINK_PAIR 0x02 -#define BASIC_MLE_STA_CTRL1_NSTR_BITMAP 0x04 -#define BASIC_MLE_STA_CTRL1_PRES_BSS_PARAM_COUNT 0x08 +#define BASIC_MLE_STA_CTRL_LINK_ID_MASK 0x000F +#define BASIC_MLE_STA_CTRL_COMPLETE_PROFILE 0x0010 +#define BASIC_MLE_STA_CTRL_PRES_STA_MAC 0x0020 +#define BASIC_MLE_STA_CTRL_PRES_BEACON_INT 0x0040 +#define BASIC_MLE_STA_CTRL_PRES_TSF_OFFSET 0x0080 +#define BASIC_MLE_STA_CTRL_PRES_DTIM_INFO 0x0100 +#define BASIC_MLE_STA_CTRL_PRES_NSTR_LINK_PAIR 0x0200 +#define BASIC_MLE_STA_CTRL_NSTR_BITMAP 0x0400 +#define BASIC_MLE_STA_CTRL_PRES_BSS_PARAM_COUNT 0x0800 #define BASIC_MLE_STA_PROF_STA_MAC_IDX 3 diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c index c10c31a376..c7ea565870 100644 --- a/src/drivers/driver_nl80211_event.c +++ b/src/drivers/driver_nl80211_event.c @@ -536,18 +536,18 @@ static void nl80211_get_basic_mle_links_info(const u8 *mle, size_t mle_len, if (pos[0] == MULTI_LINK_SUB_ELEM_ID_PER_STA_PROFILE) { u8 link_id; const u8 *sta_profile; + u16 sta_ctrl; if (pos[1] < BASIC_MLE_STA_PROF_STA_MAC_IDX + ETH_ALEN) goto next_subelem; sta_profile = &pos[2]; - link_id = sta_profile[0] & - BASIC_MLE_STA_CTRL0_LINK_ID_MASK; + sta_ctrl = WPA_GET_LE16(sta_profile); + link_id = sta_ctrl & BASIC_MLE_STA_CTRL_LINK_ID_MASK; if (link_id >= MAX_NUM_MLD_LINKS) goto next_subelem; - if (!(sta_profile[0] & - BASIC_MLE_STA_CTRL0_PRES_STA_MAC)) + if (!(sta_ctrl & BASIC_MLE_STA_CTRL_PRES_STA_MAC)) goto next_subelem; info->non_assoc_links |= BIT(link_id); @@ -640,7 +640,13 @@ static int nl80211_update_rejected_links_info(struct driver_sta_mlo_info *mlo, static int nl80211_get_assoc_link_id(const u8 *data, u8 len) { - if (!(data[0] & BASIC_MULTI_LINK_CTRL0_PRES_LINK_ID)) + u16 control; + + if (len < 2) + return -1; + + control = WPA_GET_LE16(data); + if (!(control & BASIC_MULTI_LINK_CTRL_PRES_LINK_ID)) return -1; #define BASIC_ML_IE_COMMON_INFO_LINK_ID_IDX \ From patchwork Wed Nov 30 13:09:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710486 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=wJTMoomY; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=KjN4q6wO; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfjG1zfHz23p8 for ; Thu, 1 Dec 2022 00:11:11 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=UhAQe8i6uR3nmqgA7qTXhwZ1QQAxGM2z0rM91jftDbM=; b=wJTMoomYmaHmnJ AqcCQOPhlEYJMd4k8B8T61fwoOIVje6BYcGH7KKBVsmjDgwZeumHtO0rnc29t1cD0KLapxhSOKtCP ZK8Xn7mOkmC0sFdQmnSsf8Pw61rPcB/b6A/lRUbDCpeYufXEjTfASoxA8xms+6EG47e+CSyR7HqYH 0kgdLJfdl2ZJ8P/oIzXaum82FYHfye98sVGO2hGovIbi0n2I+3KLhSZdZP44HriCtP+LNUe11us1W wR93anDm6TaiSZHg8Ybni4YF1cA2qcxew5DzJHwCWs2yLJd8anx1SmzsSTMmULCUT/yycumtv2L7r MD2Fqd9SnRsGpLw4nhag==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MrA-00GM9J-0y; Wed, 30 Nov 2022 13:10:32 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mr0-00GM5t-Ox for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813822; x=1701349822; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uz+q0nhjUBvK98a8163VvESTHQpvvgMhsZ02GQBSWAw=; b=KjN4q6wO0fjsXF5adJ7ha9VIpEqPr30Kqs1F8m98bCIvDdWJdztFB7t8 ppZZqT9Y3967G/iusgAKAX3SE/InsFe1hKeNk+i5A8dWEHpXNz0KXfWM3 QDO9vl3YaE3eyhmqaSRxxF1L+MDuHFiOqV3grXt7E82MfSsAb7UdE/1ez LHNYMSS5468YAKCWp+L+uURwHaFtWNl7fvm52xE9QI8zo6VGmB0FxzSc6 evsGd/vj1zZM2XStheXQrext2/AZ7heOQfvMyvyKfZMJ0UEY7q2BOiKk/ 6ni94GJSl9mBAWvw3NV6jEGL+Qaf7LO0qo6qHoIKrx3p1y+XvpIqvJBFZ w==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238677" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238677" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:22 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098055" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098055" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:20 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Ilan Peer , Andrei Otcheretianski Subject: [PATCH v2 02/15] ctrl_iface: Report RNR and ML in BSS command Date: Wed, 30 Nov 2022 15:09:26 +0200 Message-Id: <20221130130939.115928-3-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051022_890073_F19FC373 X-CRM114-Status: GOOD ( 18.70 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Ilan Peer Add the required ML and RNR definitions and report the information in BSS command. Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/common/ieee802_11_defs.h | 104 ++++++++++++++ src/common/wpa_ctrl.h | 2 + [...] Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Ilan Peer Add the required ML and RNR definitions and report the information in BSS command. Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/common/ieee802_11_defs.h | 104 ++++++++++++++ src/common/wpa_ctrl.h | 2 + wpa_supplicant/ctrl_iface.c | 269 +++++++++++++++++++++++++++++++++-- 3 files changed, 367 insertions(+), 8 deletions(-) diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h index 427b284b85..d4c292d376 100644 --- a/src/common/ieee802_11_defs.h +++ b/src/common/ieee802_11_defs.h @@ -2562,6 +2562,100 @@ struct ieee80211_eht_capabilities { #define BASIC_MLE_STA_PROF_STA_MAC_IDX 3 +struct eht_ml_basic_common_info { + u8 len; + u8 mld_addr[ETH_ALEN]; + + /* + * Followed by optional fields based on the multi link basic presence + * bitmap + * + * link info: 1 octet + * BSS parameters change count: 1 octet + * Medium synchronization delay: 2 octets + * EML capabilities: 2 octets + * MLD capabilities: 2 octets + * MLD ID: 1 octet + */ + u8 variable[]; +} STRUCT_PACKED; + +#define EHT_ML_LINK_ID_MSK 0x0f + +#define EHT_ML_MEDIUM_SYNC_DELAY_DURATION 0x00ff +#define EHT_ML_MEDIUM_SYNC_DELAY_OFDM_ED_TH 0x0f00 +#define EHT_ML_MEDIUM_SYNC_DELAY_MAX_TXOP 0xf000 + +#define EHT_ML_EML_CAPA_EMLSR_SUPP_MSK 0x0001 +#define EHT_ML_EML_CAPA_EMLSR_PADDING_DELAY_MSK 0x000e +#define EHT_ML_EML_CAPA_EMLSR_TRANS_DELAY_MSK 0x0070 +#define EHT_ML_EML_CAPA_EMLMR_SUPP_MSK 0x0080 +#define EHT_ML_EML_CAPA_EMLMR_DELAY_MSK 0x0700 +#define EHT_ML_EML_CAPA_TRANSITION_TIMEOUT_MSK 0x7800 + +#define EHT_ML_MLD_CAPA_MAX_NUM_SIM_LINKS_MSK 0x000f +#define EHT_ML_MLD_CAPA_SRS_SUPP_MSK 0x0010 +#define EHT_ML_MLD_CAPA_TID_TO_LINK_MAP_ALL_TO_ALL 0x0020 +#define EHT_ML_MLD_CAPA_TID_TO_LINK_MAP_ALL_TO_ONE 0x0040 +#define EHT_ML_MLD_CAPA_TID_TO_LINK_MAP_NEG_SUPP_MSK 0x0060 +#define EHT_ML_MLD_CAPA_FREQ_SEP_FOR_STR_MSK 0x0f80 +#define EHT_ML_MLD_CAPA_AAR_SUPP_MSK 0x1000 + +/** + * + * This structure is the "eht per sta subelement" fixed fields as described in + * P802.11be_D2.0 section 9.4.2.312.2 + */ +struct ieee80211_eht_per_sta_profile { + le16 sta_control; + + /* Followed by sta info and sta profile fields */ + u8 variable[]; +} STRUCT_PACKED; + +/* + * EHT probe request Multi link presence bitmap as defined in P802.11be_D2.0 + * section 9.4.2.312.3 + */ +#define EHT_ML_PRES_BM_PROB_REQ_MLD_ID 0x0010 + +struct eht_ml_probe_req_common_info { + u8 len; + + /* + * Followed by optional fields based on the multi link basic presence + * bitmap + * + * MLD ID: 1 octet + */ + u8 variable[]; +} STRUCT_PACKED; + +/* + * EHT Reconfiguration Multi-Link presence bitmap as defined in P802.11be_D2.0 + * section 9.4.2.312.4 + */ +#define EHT_ML_PRES_BM_RECONFIGURE_MLD_ADDRESS 0x0001 + +/** + * struct ieee80211_eht_ml - eht multi link element + * + * This structure is the "eht multi link element" fixed fields as described in + * P802.11be_D2.0 section 9.4.2.312.1 + */ +struct ieee80211_eht_ml { + le16 ml_control; + + /* Followed by common info and link info fields */ + u8 variable[]; +} STRUCT_PACKED; + +enum ieee80211_eht_ml_sub_elem { + EHT_ML_SUB_ELEM_PER_STA_PROFILE = 0, + EHT_ML_SUB_ELEM_VENDOR = 221, + EHT_ML_SUB_ELEM_FRAGMENT = 254, +}; + /* IEEE P802.11ay/D4.0, 9.4.2.251 - EDMG Operation element */ #define EDMG_BSS_OPERATING_CHANNELS_OFFSET 6 #define EDMG_OPERATING_CHANNEL_WIDTH_OFFSET 7 @@ -2703,4 +2797,14 @@ enum dscp_policy_request_type { #define WFA_CAPA_QM_DSCP_POLICY BIT(0) #define WFA_CAPA_QM_UNSOLIC_DSCP BIT(1) +struct ieee80211_neighbor_ap_info { + u8 tbtt_info_hdr; + u8 tbtt_info_len; + u8 op_class; + u8 channel; + + /* Followed by the rest of the TBTT Information field contents */ + u8 data[0]; +} STRUCT_PACKED; + #endif /* IEEE802_11_DEFS_H */ diff --git a/src/common/wpa_ctrl.h b/src/common/wpa_ctrl.h index ba54da544f..4ab2a1b634 100644 --- a/src/common/wpa_ctrl.h +++ b/src/common/wpa_ctrl.h @@ -466,6 +466,8 @@ extern "C" { #define WPA_BSS_MASK_UPDATE_IDX BIT(22) #define WPA_BSS_MASK_BEACON_IE BIT(23) #define WPA_BSS_MASK_FILS_INDICATION BIT(24) +#define WPA_BSS_MASK_RNR BIT(25) +#define WPA_BSS_MASK_ML BIT(26) /* VENDOR_ELEM_* frame id values */ diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index e91bf4ebe8..785575fbf1 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -5001,6 +5001,262 @@ static int print_fils_indication(struct wpa_bss *bss, char *pos, char *end) #endif /* CONFIG_FILS */ +static int print_rnr(struct wpa_bss *bss, char *pos, char *end) +{ + char *start = pos; + const u8 *ie, *ie_end; + u32 n = 0; + int ret; + + ie = wpa_bss_get_ie(bss, WLAN_EID_REDUCED_NEIGHBOR_REPORT); + if (!ie) + return 0; + + ie_end = ie + 2 + ie[1]; + ie += 2; + + while (ie < ie_end) { + struct ieee80211_neighbor_ap_info *info = + (struct ieee80211_neighbor_ap_info *)ie; + const u8 *tbtt_start; + + if (ie + sizeof(struct ieee80211_neighbor_ap_info) >= ie_end) + return 0; + + if (ie + sizeof(struct ieee80211_neighbor_ap_info) + + info->tbtt_info_len > ie_end) + return 0; + + ret = os_snprintf(pos, end - pos, + "ap_info[%u]: tbtt_info: hdr=0x%x, len=%u, ", + n, *ie, info->tbtt_info_len); + if (os_snprintf_error(end - pos, ret)) + return 0; + pos += ret; + + ret = os_snprintf(pos, end - pos, + "op_c=%u, channel=%u, ", + info->op_class, info->channel); + if (os_snprintf_error(end - pos, ret)) + return 0; + pos += ret; + + ie += 4; + tbtt_start = ie; + if (info->tbtt_info_len >= 1) { + ret = os_snprintf(pos, end - pos, + "tbtt_offset=%u, ", *ie); + if (os_snprintf_error(end - pos, ret)) + return 0; + + ie++; + pos += ret; + } + + if (info->tbtt_info_len >= 7) { + ret = os_snprintf(pos, end - pos, + "bssid=" MACSTR ", ", + MAC2STR(ie)); + if (os_snprintf_error(end - pos, ret)) + return 0; + + ie += 6; + pos += ret; + } + + if (info->tbtt_info_len >= 11) { + ret = os_snprintf(pos, end - pos, + "short SSID=0x%x, ", + WPA_GET_LE32(ie)); + if (os_snprintf_error(end - pos, ret)) + return 0; + + ie += 4; + pos += ret; + } + + if (info->tbtt_info_len >= 12) { + ret = os_snprintf(pos, end - pos, + "bss_params=0x%x, ", *ie); + if (os_snprintf_error(end - pos, ret)) + return 0; + + ie++; + pos += ret; + } + + if (info->tbtt_info_len >= 13) { + ret = os_snprintf(pos, end - pos, + "PSD=0x%x, ", *ie); + if (os_snprintf_error(end - pos, ret)) + return 0; + + ie++; + pos += ret; + } + + if (info->tbtt_info_len >= 16) { + ret = os_snprintf(pos, end - pos, + "mld ID=%u, link ID=%u", + *ie, *(ie + 1) & 0xF); + if (os_snprintf_error(end - pos, ret)) + return 0; + + ie += 3; + pos += ret; + } + + ie = tbtt_start + info->tbtt_info_len; + + ret = os_snprintf(pos, end - pos, "\n"); + if (os_snprintf_error(end - pos, ret)) + return 0; + pos += ret; + + n++; + } + + return pos - start; +} + + +static int print_ml(struct wpa_bss *bss, char *pos, char *end) +{ + struct ieee80211_eht_ml *ml; + char *start = pos; + const u8 *ie, *ie_end; + u16 ml_control; + u8 common_info_length; + int ret; + + ie = get_ml_ie(wpa_bss_ie_ptr(bss), bss->ie_len, + MULTI_LINK_CONTROL_TYPE_BASIC); + if (!ie) + return 0; + + ie_end = ie + 2 + ie[1]; + ie += 3; + ml = (struct ieee80211_eht_ml *)ie; + + /* control + common info length + MLD MAC Address */ + if (ie_end - ie < 2 + 1 + 6) + return 0; + + ml_control = le_to_host16(ml->ml_control); + + common_info_length = *(ie + 2); + ret = os_snprintf(pos, end - pos, + "multi-link: control=0x%x, common info len=%u", + ml_control, common_info_length); + if (os_snprintf_error(end - pos, ret)) + return 0; + + pos += ret; + ie += 2; + + if (ie_end - ie < common_info_length) + return 0; + + ie++; + common_info_length--; + + if (common_info_length < ETH_ALEN) + return 0; + + ret = os_snprintf(pos, end - pos, ", MLD addr=" MACSTR, MAC2STR(ie)); + if (os_snprintf_error(end - pos, ret)) + return 0; + + pos += ret; + ie += ETH_ALEN; + common_info_length -= ETH_ALEN; + + if (ml_control & BASIC_MULTI_LINK_CTRL_PRES_LINK_ID) { + if (common_info_length < 1) + return 0; + + ret = os_snprintf(pos, end - pos, ", link ID=%u", *ie); + if (os_snprintf_error(end - pos, ret)) + return 0; + + pos += ret; + ie++; + common_info_length--; + } + + if (ml_control & BASIC_MULTI_LINK_CTRL_PRES_BSS_PARAM_CH_COUNT) { + if (common_info_length < 1) + return 0; + + ret = os_snprintf(pos, end - pos, + ", BSS change parameters=0x%x", *ie); + if (os_snprintf_error(end - pos, ret)) + return 0; + + pos += ret; + ie++; + common_info_length--; + } + + if (ml_control & BASIC_MULTI_LINK_CTRL_PRES_MSD_INFO) { + if (common_info_length < 2) + return 0; + + ret = os_snprintf(pos, end - pos, ", MSD Info=0x%x", + WPA_GET_LE16(ie)); + if (os_snprintf_error(end - pos, ret)) + return 0; + + pos += ret; + ie += 2; + common_info_length -= 2; + } + + if (ml_control & BASIC_MULTI_LINK_CTRL_PRES_EML_CAPA) { + if (common_info_length < 2) + return 0; + + ret = os_snprintf(pos, end - pos, ", EML capabilities=0x%x", + WPA_GET_LE16(ie)); + if (os_snprintf_error(end - pos, ret)) + return 0; + + pos += ret; + ie += 2; + common_info_length -= 2; + } + + if (ml_control & BASIC_MULTI_LINK_CTRL_PRES_MLD_CAPA) { + if (common_info_length < 2) + return 0; + + ret = os_snprintf(pos, end - pos, ", MLD capabilities=0x%x", + WPA_GET_LE16(ie)); + if (os_snprintf_error(end - pos, ret)) + return 0; + + pos += ret; + ie += 2; + common_info_length -= 2; + } + + if (ml_control & BASIC_MULTI_LINK_CTRL_PRES_AP_MLD_ID) { + if (common_info_length < 1) + return 0; + + ret = os_snprintf(pos, end - pos, ", MLD ID=0x%x\n", *ie); + if (os_snprintf_error(end - pos, ret)) + return 0; + + pos += ret; + ie += 1; + common_info_length--; + } + + return pos - start; +} + + static int print_bss_info(struct wpa_supplicant *wpa_s, struct wpa_bss *bss, unsigned long mask, char *buf, size_t buflen) { @@ -5442,14 +5698,11 @@ static int print_bss_info(struct wpa_supplicant *wpa_s, struct wpa_bss *bss, } #endif /* CONFIG_FILS */ - if (!is_zero_ether_addr(bss->mld_addr)) { - ret = os_snprintf(pos, end - pos, - "ap_mld_addr=" MACSTR "\n", - MAC2STR(bss->mld_addr)); - if (os_snprintf_error(end - pos, ret)) - return 0; - pos += ret; - } + if (mask & WPA_BSS_MASK_RNR) + pos += print_rnr(bss, pos, end); + + if (mask & WPA_BSS_MASK_ML) + pos += print_ml(bss, pos, end); if (mask & WPA_BSS_MASK_DELIM) { ret = os_snprintf(pos, end - pos, "====\n"); From patchwork Wed Nov 30 13:09:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710489 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=Ylf9fueE; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=UcKbnoPL; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfjP5SbCz23nv for ; Thu, 1 Dec 2022 00:11:21 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WbrpFZ+pIgOYDytFlNv7bMH+jsmButJTl9Dw/CEpOE8=; b=Ylf9fueE7JGjqI 8m4MsvT20UUS3RGK6wYWsmxoduFnYK1hHG8ULlpGi0+NdImRbe1fXLn39e+feYc7fuWjSu168o5JT XNkrBozKnEuPRJ7wikKiyqvnCFElB7EZBPRzXUpsqx/yMC1uWFkXaIhzotkwoPM5zI8s+kiFiPlaC N4xbG/ywfDsNFg0xKDfTiZE4sd3n0gYP+24oOR2JQB2iK8iHMLl1/S+6YXqfLPQOv+cDzAedibfWN B/98LAlJyHwkmKK/ZqzNms3jyD9qBGZwRRjvZltyVf1O/F256C1pNjN0FZOkT35yJu6/X7jkqdxoU OxzcmLaY5Qp9ezrxDk8A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MrJ-00GME6-VY; Wed, 30 Nov 2022 13:10:42 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mr2-00GM6D-8y for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813824; x=1701349824; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=q4ucL+Fl48Nj85grviQHLCmKe8W5+JE+nsTIp3PQpc8=; b=UcKbnoPLcTjMHfgsfTrhQZYlLLP0mdFv+vh9KbrNCjTxeOCwBSUG0go7 H/eLvTlUWhRJYbNyEehDRSDQArSsiNmImQ87Rt/jVioHpjwG22/eLtIhl rSXYX9eOHGoFAWPu+oeHML/AfzjqkQhawnm2BdP9vde2ekuorOwLK/NO4 Ps+Q6vpFZTy4OD+6nh25WvWDQ/pWtfx+CoUowDFtsGxoVyth0Aofff/Zr TgT8jI03GAj579/fBNvmuvehi4GEHpHSqLjf8U85N8qR1f89IhLm+vETj f1KFnt/UMGCJQ5G2ntcvOFI3L2fxnOOypvTSc9PC27P0FMEsBCyIJm4Xu w==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238679" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238679" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:23 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098069" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098069" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:22 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Ilan Peer , Andrei Otcheretianski Subject: [PATCH v2 03/15] driver: Modify authentication and association APIs to support MLO Date: Wed, 30 Nov 2022 15:09:27 +0200 Message-Id: <20221130130939.115928-4-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051024_376312_258299EB X-CRM114-Status: GOOD ( 11.59 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Ilan Peer Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/drivers/driver.h | 52 ++++++++++++++++++++++++++++++++++++++++++++ 1 file [...] Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Ilan Peer Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/drivers/driver.h | 52 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/drivers/driver.h b/src/drivers/driver.h index 0b019e3afd..079f54db4e 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -720,6 +720,21 @@ struct wpa_driver_auth_params { * auth_data_len - Length of auth_data buffer in octets */ size_t auth_data_len; + + /** + * mld - Establish an MLD connection + */ + bool mld; + + /** + * mld_link_id - The link ID of the MLD AP to which we are associating + */ + u8 mld_link_id; + + /** + * The MLD AP address + */ + const u8 *ap_mld_addr; }; /** @@ -883,6 +898,38 @@ struct wpa_driver_sta_auth_params { size_t fils_kek_len; }; +struct wpa_driver_mld_params { + /** + * mld_addr - AP's MLD address + */ + const u8 *mld_addr; + + /** + * valid_links - The valid links including the association link + */ + u16 valid_links; + + /** + * assoc_link_id - The link on which the association is performed. + */ + u8 assoc_link_id; + + /** + * mld_links - link information. + * + * Should include information on all the requested links for association + * including the link on which the association should take place. + * For the association link, the 'ies' and 'ies_len' should be NULL and + * 0 respectively. + */ + struct { + int freq; + const u8 *bssid; + const u8 *ies; + size_t ies_len; + } mld_links[MAX_NUM_MLD_LINKS]; +}; + /** * struct wpa_driver_associate_params - Association parameters * Data for struct wpa_driver_ops::associate(). @@ -1256,6 +1303,11 @@ struct wpa_driver_associate_params { * disable_eht - Disable EHT for this connection */ int disable_eht; + + /* + * mld_params - MLD association parameters + */ + struct wpa_driver_mld_params mld_params; }; enum hide_ssid { From patchwork Wed Nov 30 13:09:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710490 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=iMv80YUz; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=J7snVGUg; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfjX38tdz23nv for ; Thu, 1 Dec 2022 00:11:28 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=F3fIYj1A0sBzbmMuKtT8CJMjmIMukM+iOhtbhdZ1UqY=; b=iMv80YUzOwPl/s ZtGnSU/KWCnJoQRIDc49aqVnbtLEX92ZM6Yya9TQwMngndlIBwm8TTWR0RimYoCfaT7n3hcg37G74 MOp9dBCGAK6CskpT1ucr9G3IPApedA0wfE2ipALdK6oQiC9Q913D1BhJA6jZ7z29TjCHFW3cfNDDx eXuN0Fy1IDmGepghOq35MJtZTStg0qDr1R9y9Kb9x40ivi8rxvwoIzhVk/Gsng0zvp4CKET0Jf688 UZRvecXrRhfD2NsljRdiUcvDr/ydX1dlNt5/nJwti93mx2H9Bj25mxvosYEE6hm2aGiToirTbMHfJ J1UuptFlB9DAgcP1r1qg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MrS-00GMHy-Du; Wed, 30 Nov 2022 13:10:50 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mr4-00GM76-5x for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813826; x=1701349826; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QyaVv5wik49v8iv/2rf4LCMJoQQPOq40g2AT2wZRcxk=; b=J7snVGUgoObEI3K7zyG6QIMc2chvc66GAKb6yo95mH8jKugnYyHNXJC1 t9LBAqFGCQhmgMH87Bo9cR3OtXJeYHzXvKWD926knsjnaK3qDbbZ1tH2c CQwHq9/W2lAqzwOhHj59hfN/0j4WSAE/IR6ffv/k/mFnwSk166/mEsUeZ pjf2X5jaO84QJWc1vka9iS0JunmxGffx68SU5vO9pl8v1Jdqd1V7w1lUW pv4NCG3Wl/rK0lI9XLs5i+h3nvmxtC/obEu3C0j+5gEZZoUI08OyEtfxD jOl8VaDoMyoo1Yt5wDdSiW4nwdj8Vgl94h2GUV/f60/aLNBM4jWEfAm7X A==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238683" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238683" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:25 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098083" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098083" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:24 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Ilan Peer , Johannes Berg , Andrei Otcheretianski Subject: [PATCH v2 04/15] nl80211: Add support for MLD authentication Date: Wed, 30 Nov 2022 15:09:28 +0200 Message-Id: <20221130130939.115928-5-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051026_280617_897E86C3 X-CRM114-Status: GOOD ( 14.26 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Ilan Peer Set MLO attributes for NL80211_CMD_AUTHENTICATE and make sure that MLD configuration is preserved between authentication retries. Signed-off-by: Johannes Berg Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/drivers/driver_nl80 [...] Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Ilan Peer Set MLO attributes for NL80211_CMD_AUTHENTICATE and make sure that MLD configuration is preserved between authentication retries. Signed-off-by: Johannes Berg Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/drivers/driver_nl80211.c | 24 ++++++++++++++++++++++++ src/drivers/driver_nl80211.h | 3 +++ 2 files changed, 27 insertions(+) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index c3e6594f30..9408e8207d 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -278,6 +278,10 @@ void nl80211_mark_disconnected(struct wpa_driver_nl80211_data *drv) os_free(drv->pending_roam_data); drv->pending_roam_data = NULL; #endif /* CONFIG_DRIVER_NL80211_QCA */ + + drv->auth_mld = 0; + drv->auth_mld_link_id = -1; + os_memset(drv->auth_ap_mld_addr, 0, ETH_ALEN); } @@ -3782,6 +3786,12 @@ static void nl80211_copy_auth_params(struct wpa_driver_nl80211_data *drv, } } + if (params->mld) { + drv->auth_mld = params->mld; + drv->auth_mld_link_id = params->mld_link_id; + os_memcpy(drv->auth_ap_mld_addr, params->ap_mld_addr, ETH_ALEN); + } + os_free(drv->auth_data); drv->auth_data = NULL; drv->auth_data_len = 0; @@ -3945,6 +3955,17 @@ retry: goto fail; } + if (params->mld && params->ap_mld_addr) { + wpa_printf(MSG_DEBUG, " * MLD: link_id=%u, MLD addr=" MACSTR, + params->mld_link_id, MAC2STR(params->ap_mld_addr)); + + if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, + params->mld_link_id) || + nla_put(msg, NL80211_ATTR_MLD_ADDR, ETH_ALEN, + params->ap_mld_addr)) + goto fail; + } + ret = send_and_recv_msgs(drv, msg, NULL, NULL, NULL, NULL); msg = NULL; if (ret) { @@ -4048,6 +4069,9 @@ int wpa_driver_nl80211_authenticate_retry(struct wpa_driver_nl80211_data *drv) params.ie_len = drv->auth_ie_len; params.auth_data = drv->auth_data; params.auth_data_len = drv->auth_data_len; + params.mld = drv->auth_mld; + params.mld_link_id = drv->auth_mld_link_id; + params.ap_mld_addr = drv->auth_ap_mld_addr; for (i = 0; i < 4; i++) { if (drv->auth_wep_key_len[i]) { diff --git a/src/drivers/driver_nl80211.h b/src/drivers/driver_nl80211.h index 0740e064ab..dadaab4517 100644 --- a/src/drivers/driver_nl80211.h +++ b/src/drivers/driver_nl80211.h @@ -225,6 +225,9 @@ struct wpa_driver_nl80211_data { int auth_wep_tx_keyidx; int auth_local_state_change; int auth_p2p; + bool auth_mld; + u8 auth_mld_link_id; + u8 auth_ap_mld_addr[ETH_ALEN]; /* * Tells whether the last scan issued from wpa_supplicant was a normal From patchwork Wed Nov 30 13:09:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710491 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=tVBZct6O; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=LXSMoCyo; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfjp20XPz23nv for ; Thu, 1 Dec 2022 00:11:42 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4a5cf4jVqPfI8T9UHxhwX9ddVkObiXzlYB18T4TVwvw=; b=tVBZct6Ok2QatF lE97s0HZ89B2DIpCsYZeh4Rr/JK9qk13wLVC/j6yNMNFio6PrRdFwdfKP8UGSAORYJi3ih+JN0EGR K97jNG1DgMD5otiAG/OB6f2Oaf3whZFtdVkHOL9e5/sO1nkpsr2UZ1NH3n8M8W4nfhslVUQ5PoJJV /MppfgB0RvySpuiLcB/EYi5Hp+MK/fw+ClgJvwFtFQsjqOGCdSPTCkt64msMu9iihhreJju3irmcI zss5p+ctRyHGMRvIvX037/DKpxC90yxrNQ/nV9mdrKLWC1fcoiyI924RszRsLrxMqmeN1+7wkgDWH xGr9Zdcd1pejQqien4jg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mre-00GMON-GC; Wed, 30 Nov 2022 13:11:02 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mr5-00GM76-Q7 for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813827; x=1701349827; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=AtoPYNEwAvGec6BbxM0J7v9EszdxIALZkQR7F/RVf/A=; b=LXSMoCyoJnhg5extGgY72z6G/+8bQiRdAnweBCU/MltVJyhmSzEYj3TV 0aKKEoyWU2oqeuZSGxlW1mhbCMLUzA4E4ziGNvy7GAf4CjJVPTlacGTep HWIWdRA8SZgRuhwwCPAqR8jC1D/QW48dAX9Zpb/gskCY5MVYp2BLL3yIJ 2WsxClZj8kEkRbs22oEWMIYSuCCF+2xNSPG06B03aUIfSdRIyj51VOdE/ +iozI0NND5rq3KL6e5eXunrzL9o/bDM8jRJoKFu9vmpNNv1MvdwbOIQaa ZoUBXGe+sZ9MqWPlJMHLhasQqC37yVZ56R1xHLPowo0ilEbRbUOHpKXGH A==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238688" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238688" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:27 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098090" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098090" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:25 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Ilan Peer , Andrei Otcheretianski Subject: [PATCH v2 05/15] nl80211: Support MLD association request Date: Wed, 30 Nov 2022 15:09:29 +0200 Message-Id: <20221130130939.115928-6-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051027_915822_A8283DD8 X-CRM114-Status: GOOD ( 13.04 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Ilan Peer Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/drivers/driver_nl80211.c | 80 +++++++++++++++++++++++++++++++++++- 1 file [...] Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Ilan Peer Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/drivers/driver_nl80211.c | 80 +++++++++++++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 2 deletions(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 9408e8207d..188e4b5fe7 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -6260,10 +6260,86 @@ static int nl80211_connect_common(struct wpa_driver_nl80211_data *drv, struct wpa_driver_associate_params *params, struct nl_msg *msg) { + if (params->mld_params.mld_addr && + params->mld_params.valid_links > 0) { + struct wpa_driver_mld_params *mld_params = ¶ms->mld_params; + struct nlattr *links, *attr; + size_t i; + u8 link_id; + + wpa_printf(MSG_DEBUG, " * MLD: MLD addr=" MACSTR, + MAC2STR(mld_params->mld_addr)); + + if (nla_put(msg, NL80211_ATTR_MLD_ADDR, ETH_ALEN, + mld_params->mld_addr)) + return -1; + + if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, + mld_params->assoc_link_id)) + return -1; + + links = nla_nest_start(msg, NL80211_ATTR_MLO_LINKS); + if (!links) + return -1; + + attr = nla_nest_start(msg, 0); + if (!attr) + return -1; + + /* first add the association link ID */ + link_id = mld_params->assoc_link_id; + if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, + link_id) || + nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, + mld_params->mld_links[link_id].bssid) || + nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, + mld_params->mld_links[link_id].freq)) + return -1; + + os_memcpy(drv->sta_mlo_info.links[link_id].bssid, + mld_params->mld_links[link_id].bssid, ETH_ALEN); + + nla_nest_end(msg, attr); + + for (i = 1, link_id = 0; link_id < MAX_NUM_MLD_LINKS; link_id++) { + if (!(mld_params->valid_links & BIT(link_id)) || + link_id == mld_params->assoc_link_id) + continue; + + attr = nla_nest_start(msg, i); + if (!attr) + return -1; + + if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, + link_id) || + nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, + mld_params->mld_links[link_id].bssid) || + nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, + mld_params->mld_links[link_id].freq) || + (mld_params->mld_links[i].ies_len && + nla_put(msg, NL80211_ATTR_IE, + mld_params->mld_links[link_id].ies_len, + mld_params->mld_links[link_id].ies))) + return -1; + + os_memcpy(drv->sta_mlo_info.links[link_id].bssid, + mld_params->mld_links[link_id].bssid, ETH_ALEN); + nla_nest_end(msg, attr); + i++; + } + + nla_nest_end(msg, links); + + os_memcpy(drv->sta_mlo_info.ap_mld_addr, + params->mld_params.mld_addr, ETH_ALEN); + drv->sta_mlo_info.assoc_link_id = mld_params->assoc_link_id; + drv->sta_mlo_info.req_links = mld_params->valid_links; + } + if (nla_put_flag(msg, NL80211_ATTR_IFACE_SOCKET_OWNER)) return -1; - if (params->bssid) { + if (params->bssid && !params->mld_params.mld_addr) { wpa_printf(MSG_DEBUG, " * bssid=" MACSTR, MAC2STR(params->bssid)); if (nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, params->bssid)) @@ -6278,7 +6354,7 @@ static int nl80211_connect_common(struct wpa_driver_nl80211_data *drv, return -1; } - if (params->freq.freq) { + if (params->freq.freq && !params->mld_params.mld_addr) { wpa_printf(MSG_DEBUG, " * freq=%d", params->freq.freq); if (nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, params->freq.freq)) From patchwork Wed Nov 30 13:09:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710492 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=svAs1/6t; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=JJxbg5GC; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfkD10YLz23nv for ; Thu, 1 Dec 2022 00:12:04 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=fVbNj+TOAaI3rtLP5LUQAtgbyp+1p6AZeNlJ2JU7C3g=; b=svAs1/6tW50DKU u0ZUAilOX5NrVkmcMezU2L5sFep1ymZ0FE57GBWvY0lRI5c5465tHtw/13oWHWx4OcGzZbfrGqCsV 9ihYIpaA/lwa2NM3xNLniDs4WJKZWzMLDg/O6QKxH6fVigYpl8c1uCYrbkFgVk7/3MgPxgis9wEhP EMbWdQY5oId/amkj+R3Dsr3c11k845BGQ02haZAD9CohpRw07O+A4wCCAt09Y1HyOR8F/P4HfTqmG ptPlOFpEIUpICoXPgy4N+l9vpqCj3N/tStI0SaZuSu012yRt04rGhfWO4IYvIiL43e2A8yGjJDZsm fbtWKGPyiw6awLI3p2wA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mru-00GMV2-5b; Wed, 30 Nov 2022 13:11:18 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mr7-00GM8L-9y for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813829; x=1701349829; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zB8DOqaLUlsakbjrDUaQi1w9fxA6QQpDzsKFDwuyQBY=; b=JJxbg5GCw3jDOuB++ZCcowIIwk65fClYkGM2Fc8D2kB4S6d8Sy46uKs7 kxHgHV0YLJwlT/6InqPvlWW/CEI+/d+sQT1gXk/+5XgLxoxm3/d0fX+6d luE8rUKAamHuLDGoj6SH515xF4sy6U8DRHM+s+z/EjRyaJ7AIDJXYJjPh bFmCcy3PfLSWN6lyLsivrqtHWapuaXgDisA4iZ7+8vSb1kLoJYssHuFCN KI2hTefHOUaGXRGscpjWyURdTeKAP0yc0Or2wXnxWs3ZuhC9iHw36PC4R NO5fFIpwgkHAXlWWtFXBZxQuLwzgkgtYdjYB+7fdK7bKd5gZ29mJWeN9o g==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238693" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238693" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:28 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098097" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098097" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:27 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Andrei Otcheretianski Subject: [PATCH v2 06/15] wpa_supplicant: make valid_links u16 Date: Wed, 30 Nov 2022 15:09:30 +0200 Message-Id: <20221130130939.115928-7-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051029_427686_284524B0 X-CRM114-Status: GOOD ( 12.59 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: MAX_NUM_MLD_LINKS is 15, thus u8 isn't enough for the bitmap. Fix it. While at it, clean mlo information better. Signed-off-by: Andrei Otcheretianski --- wpa_supplicant/events.c | 7 +++---- wpa_supplicant/wpa_supplicant_i.h | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions( [...] Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org MAX_NUM_MLD_LINKS is 15, thus u8 isn't enough for the bitmap. Fix it. While at it, clean mlo information better. Signed-off-by: Andrei Otcheretianski --- wpa_supplicant/events.c | 7 +++---- wpa_supplicant/wpa_supplicant_i.h | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c index fe8ab50ff3..69e8034340 100644 --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c @@ -310,14 +310,13 @@ void wpa_supplicant_stop_countermeasures(void *eloop_ctx, void *sock_ctx) static void wpas_reset_mlo_info(struct wpa_supplicant *wpa_s) { - int i; - if (!wpa_s->valid_links) return; wpa_s->valid_links = 0; - for (i = 0; i < MAX_NUM_MLD_LINKS; i++) - wpa_s->links[i].bss = NULL; + wpa_s->mlo_assoc_link_id = 0; + os_memset(wpa_s->ap_mld_addr, 0, ETH_ALEN); + os_memset(wpa_s->links, 0, sizeof(wpa_s->links)); } diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h index 0cc8633eea..f10674de49 100644 --- a/wpa_supplicant/wpa_supplicant_i.h +++ b/wpa_supplicant/wpa_supplicant_i.h @@ -687,8 +687,8 @@ struct wpa_supplicant { unsigned int assoc_freq; u8 ap_mld_addr[ETH_ALEN]; u8 mlo_assoc_link_id; - u8 valid_links; /* bitmap of valid MLO link IDs */ - struct { + u16 valid_links; /* bitmap of valid MLO link IDs */ + struct ml_sta_link_info { u8 addr[ETH_ALEN]; u8 bssid[ETH_ALEN]; unsigned int freq; From patchwork Wed Nov 30 13:09:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710494 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=thQhFS/T; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=TfdkITg4; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMflF4fBkz23nv for ; Thu, 1 Dec 2022 00:12:57 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Ax4XGCZaddojpPOtUGia7dS/SRSK9hMGmkx8xYPTDb4=; b=thQhFS/T2XRXxd GsWJvHf1sKBUSZomzCIpRxvjtm6RdpOLtcMpEx74tfbwIeyZVgxCUemdOxiJJQyuv5FwVi/dNcDvu 02v7zdPPKgso5SZMvMAnN77k0MdtQGY+hoY74DX8HCVqvq8lGhR3oS1P/hDapXHefp5T0x4ZpA5u+ ta0Go53QIjUl/4NJydoeWsXHt2DhcMotRLbl/GBLCU6dIy+UanYaPRKULisYj1MLnarUTVhbK6Ns4 mE0nrI2wILcuDEyoqlLBeuheLKEtZDagg4TpwytAyMgO6clZZcuE2usYurhR/SDUJWLtPXb0xp/mn o4zuXZ9sg4LOkJR4pszg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MsG-00GMhp-Gn; Wed, 30 Nov 2022 13:11:40 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mr8-00GM76-JR for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813830; x=1701349830; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=iPNrA/HfNwdD+ajNveOk2t7S/htgzZkAoWubjvLAENA=; b=TfdkITg4jRGx8JnRxOnS/axyXFSsFBx0XZyaXi7M6+tZQJs4ejWqPjAH coGZByMadGTGM+5cW8OidOxupaADaz5ohmeZiO1djmoQK8wirU9+kbmHe 53SqdrgQFSImnmImMpLycBP70xU3MM/aEvPIWi2jQi/Gd+q9YNiXhsWXh PLxsVdNcZ6cMuv4M6Xrx6/azVcPW9slegfGO6oQw4OIi4Z9jxSdPLOHot OlYQNFJG7Ayp/0DsijlR6v03/V4++hy4vJuSPi/NpJIUf4+NxUE9zN/XX z/jvH6lb7EYW0TNSaKaZVGG7ZOVc0jGTeY8O+xjFIwkj216phieyzoreY g==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238695" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238695" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:30 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098114" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098114" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:28 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Andrei Otcheretianski , Ilan Peer Subject: [PATCH v2 07/15] SME: Add support for handling authentication with MLD Date: Wed, 30 Nov 2022 15:09:31 +0200 Message-Id: <20221130130939.115928-8-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051030_754356_AEEF73A7 X-CRM114-Status: GOOD ( 21.83 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: In case that the AP supports MLD, request an MLD authentication from the driver. When processing the authentication event from the driver verify that the MLD address in the authentication data matches [...] Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org In case that the AP supports MLD, request an MLD authentication from the driver. When processing the authentication event from the driver verify that the MLD address in the authentication data matches that of the requested AP. Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/drivers/driver.h | 2 + wpa_supplicant/bss.c | 18 +++ wpa_supplicant/bss.h | 1 + wpa_supplicant/events.c | 3 +- wpa_supplicant/sme.c | 191 ++++++++++++++++++++++++++++++ wpa_supplicant/wpa_supplicant_i.h | 2 + 6 files changed, 216 insertions(+), 1 deletion(-) diff --git a/src/drivers/driver.h b/src/drivers/driver.h index 079f54db4e..b84f22ab70 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -2153,6 +2153,8 @@ struct wpa_driver_capa { * frames in STA mode */ #define WPA_DRIVER_FLAGS2_PROT_RANGE_NEG_STA 0x0000000000002000ULL +/** Driver supports MLO in station/AP mode */ +#define WPA_DRIVER_FLAGS2_MLO 0x0000000000004000ULL u64 flags2; #define FULL_AP_CLIENT_STATE_SUPP(drv_flags) \ diff --git a/wpa_supplicant/bss.c b/wpa_supplicant/bss.c index 401c5342ee..265082b2f0 100644 --- a/wpa_supplicant/bss.c +++ b/wpa_supplicant/bss.c @@ -1445,3 +1445,21 @@ int wpa_bss_ext_capab(const struct wpa_bss *bss, unsigned int capab) return ieee802_11_ext_capab(wpa_bss_get_ie(bss, WLAN_EID_EXT_CAPAB), capab); } + + +/** + * wpa_bss_defrag_mle - Get a buffer holding a de-fragmented ML element + * @bss: BSS table entry + * @type: ML control type + */ +struct wpabuf *wpa_bss_defrag_mle(const struct wpa_bss *bss, u8 type) +{ + struct ieee802_11_elems elems; + const u8 *pos = wpa_bss_ie_ptr(bss); + size_t len = bss->ie_len ? bss->ie_len : bss->beacon_ie_len; + + if (ieee802_11_parse_elems(pos, len, &elems, 1) == ParseFailed) + return NULL; + + return ieee802_11_defrag_mle(&elems, type); +} diff --git a/wpa_supplicant/bss.h b/wpa_supplicant/bss.h index b68fc879d0..b7ea211cbd 100644 --- a/wpa_supplicant/bss.h +++ b/wpa_supplicant/bss.h @@ -201,4 +201,5 @@ void calculate_update_time(const struct os_reltime *fetch_time, unsigned int age_ms, struct os_reltime *update_time); +struct wpabuf *wpa_bss_defrag_mle(const struct wpa_bss *bss, u8 type); #endif /* BSS_H */ diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c index 69e8034340..dcedfbf41b 100644 --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c @@ -308,11 +308,12 @@ void wpa_supplicant_stop_countermeasures(void *eloop_ctx, void *sock_ctx) } -static void wpas_reset_mlo_info(struct wpa_supplicant *wpa_s) +void wpas_reset_mlo_info(struct wpa_supplicant *wpa_s) { if (!wpa_s->valid_links) return; + wpa_s->mld = 0; wpa_s->valid_links = 0; wpa_s->mlo_assoc_link_id = 0; os_memset(wpa_s->ap_mld_addr, 0, ETH_ALEN); diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c index 73a04bba8d..119f1817da 100644 --- a/wpa_supplicant/sme.c +++ b/wpa_supplicant/sme.c @@ -367,6 +367,186 @@ static void sme_auth_handle_rrm(struct wpa_supplicant *wpa_s, } +static bool wpas_ml_element(struct wpa_supplicant *wpa_s, struct wpa_bss *bss) +{ + struct wpabuf *mlbuf; + const u8 *rnr_ie, *pos; + u8 ml_ie_len, rnr_ie_len; + struct ieee80211_eht_ml *eht_ml; + struct eht_ml_basic_common_info *ml_basic_common_info; + u8 i; + const u16 control = + host_to_le16(MULTI_LINK_CONTROL_TYPE_BASIC | + BASIC_MULTI_LINK_CTRL_PRES_LINK_ID | + BASIC_MULTI_LINK_CTRL_PRES_BSS_PARAM_CH_COUNT | + BASIC_MULTI_LINK_CTRL_PRES_MLD_CAPA); + bool ret = false; + + if (!(wpa_s->drv_flags2 & WPA_DRIVER_FLAGS2_MLO)) { + wpa_dbg(wpa_s, MSG_DEBUG, "MLD: not supported by driver"); + return false; + } + + mlbuf = wpa_bss_defrag_mle(bss, MULTI_LINK_CONTROL_TYPE_BASIC); + if (!mlbuf) { + wpa_dbg(wpa_s, MSG_DEBUG, "MLD: no ML element"); + return false; + } + + ml_ie_len = wpabuf_len(mlbuf); + + /* control + common info len + MLD address + MLD link information */ + if (ml_ie_len < 2 + 1 + ETH_ALEN + 1) + goto out; + + eht_ml = (struct ieee80211_eht_ml *)wpabuf_head(mlbuf); + if ((eht_ml->ml_control & control) != control) { + wpa_printf(MSG_DEBUG, "MLD: unexpected ML element control=0x%x", + eht_ml->ml_control); + goto out; + } + + ml_basic_common_info = + (struct eht_ml_basic_common_info *)eht_ml->variable; + + /* common info length should be valid (self, mld_addr, link_id) */ + if (ml_basic_common_info->len < 1 + ETH_ALEN + 1) + goto out; + + /* get the MLD address and MLD link ID */ + os_memcpy(wpa_s->ap_mld_addr, ml_basic_common_info->mld_addr, + ETH_ALEN); + wpa_s->mlo_assoc_link_id = ml_basic_common_info->variable[0] & + EHT_ML_LINK_ID_MSK; + + os_memcpy(wpa_s->links[wpa_s->mlo_assoc_link_id].bssid, bss->bssid, + ETH_ALEN); + wpa_s->links[wpa_s->mlo_assoc_link_id].freq = bss->freq; + + wpa_printf(MSG_DEBUG, "MLD: address=" MACSTR ", link ID=%u", + MAC2STR(wpa_s->ap_mld_addr), + wpa_s->mlo_assoc_link_id); + + wpa_s->mld = 1; + wpa_s->valid_links = BIT(wpa_s->mlo_assoc_link_id); + + rnr_ie = wpa_bss_get_ie(bss, WLAN_EID_REDUCED_NEIGHBOR_REPORT); + if (!rnr_ie) { + wpa_dbg(wpa_s, MSG_DEBUG, "MLD: no RNR element"); + ret = true; + goto out; + } + + rnr_ie_len = rnr_ie[1]; + pos = rnr_ie + 2; + + while (rnr_ie_len > sizeof(struct ieee80211_neighbor_ap_info)) { + struct ieee80211_neighbor_ap_info *ap_info = + (struct ieee80211_neighbor_ap_info *)pos; + const u8 *data = ap_info->data; + + wpa_printf(MSG_DEBUG, "MLD: op_class=%u, channel=%u", + ap_info->op_class, ap_info->channel); + + if (ap_info->tbtt_info_len < 16) { + rnr_ie_len -= + sizeof(struct ieee80211_neighbor_ap_info) + + ap_info->tbtt_info_len; + + pos += sizeof(struct ieee80211_neighbor_ap_info) + + ap_info->tbtt_info_len; + continue; + } + + data += 13; + + wpa_printf(MSG_DEBUG, "MLD: mld ID=%u, link ID=%u", + *data, *(data + 1) & 0xF); + + if (*data) { + wpa_printf(MSG_DEBUG, + "MLD: reported link not part of MLD"); + } else { + struct wpa_bss *neigh_bss = + wpa_bss_get_bssid(wpa_s, ap_info->data + 1); + u8 link_id = *(data + 1) & 0xF; + + if (neigh_bss) { + wpa_s->valid_links |= BIT(link_id); + os_memcpy(wpa_s->links[link_id].bssid, + ap_info->data + 1, ETH_ALEN); + wpa_s->links[link_id].freq = + neigh_bss->freq; + } else { + wpa_printf(MSG_DEBUG, + "MLD: neighbor not found in scan"); + } + } + + rnr_ie_len -= sizeof(struct ieee80211_neighbor_ap_info) + + ap_info->tbtt_info_len; + + pos += sizeof(struct ieee80211_neighbor_ap_info) + + ap_info->tbtt_info_len; + } + + wpa_printf(MSG_DEBUG, "MLD: valid_links=0x%x", wpa_s->valid_links); + + for (i = 0; i < MAX_NUM_MLD_LINKS; i++) { + if (!(wpa_s->valid_links & BIT(i))) + continue; + + wpa_printf(MSG_DEBUG, "MLD: link=%u, bssid=" MACSTR, + i, + MAC2STR(wpa_s->links[i].bssid)); + } + + ret = true; +out: + wpabuf_free(mlbuf); + return ret; +} + + +static void wpas_sme_ml_auth(struct wpa_supplicant *wpa_s, + union wpa_event_data *data) +{ + struct ieee802_11_elems elems; + const u8 *mld_addr; + + if (!wpa_s->mld) + return; + + if (ieee802_11_parse_elems(data->auth.ies, data->auth.ies_len, + &elems, 0) != ParseOK) { + wpa_printf(MSG_DEBUG, "MLD: failed parsing elements"); + goto out; + } + + if (!elems.basic_mle || !elems.basic_mle_len) { + wpa_printf(MSG_DEBUG, "MLD: no ML element in auth"); + goto out; + } + + mld_addr = get_basic_mle_mld_addr(elems.basic_mle, elems.basic_mle_len); + if (!mld_addr) + goto out; + + wpa_printf(MSG_DEBUG, "MLD: mld_address=" MACSTR, + MAC2STR(mld_addr)); + + if (os_memcmp(wpa_s->ap_mld_addr, mld_addr, ETH_ALEN)) { + wpa_printf(MSG_DEBUG, "MLD: invalid MLD address"); + goto out; + } + + return; +out: + wpa_printf(MSG_DEBUG, "MLD: auth: clearing MLD state"); + wpas_reset_mlo_info(wpa_s); +} + + static void sme_send_authentication(struct wpa_supplicant *wpa_s, struct wpa_bss *bss, struct wpa_ssid *ssid, int start) @@ -796,6 +976,13 @@ static void sme_send_authentication(struct wpa_supplicant *wpa_s, } #endif /* CONFIG_MBO */ + if (wpas_ml_element(wpa_s, bss)) { + wpa_printf(MSG_DEBUG, "MLD: in authentication"); + params.mld = true; + params.mld_link_id = wpa_s->mlo_assoc_link_id; + params.ap_mld_addr = wpa_s->ap_mld_addr; + } + #ifdef CONFIG_SAE if (!skip_auth && params.auth_alg == WPA_AUTH_ALG_SAE && pmksa_cache_set_current(wpa_s->wpa, NULL, bss->bssid, ssid, 0, @@ -1789,6 +1976,10 @@ void sme_event_auth(struct wpa_supplicant *wpa_s, union wpa_event_data *data) } #endif /* CONFIG_FILS */ + /* TODO: Support for other auth_type as well */ + if (data->auth.auth_type == WLAN_AUTH_OPEN) + wpas_sme_ml_auth(wpa_s, data); + sme_associate(wpa_s, ssid->mode, data->auth.peer, data->auth.auth_type); } diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h index f10674de49..27f1913a05 100644 --- a/wpa_supplicant/wpa_supplicant_i.h +++ b/wpa_supplicant/wpa_supplicant_i.h @@ -685,6 +685,7 @@ struct wpa_supplicant { struct wpa_bss *current_bss; int ap_ies_from_associnfo; unsigned int assoc_freq; + u8 mld; u8 ap_mld_addr[ETH_ALEN]; u8 mlo_assoc_link_id; u16 valid_links; /* bitmap of valid MLO link IDs */ @@ -1765,6 +1766,7 @@ void wpa_supplicant_update_channel_list(struct wpa_supplicant *wpa_s, int wpa_supplicant_need_to_roam_within_ess(struct wpa_supplicant *wpa_s, struct wpa_bss *current_bss, struct wpa_bss *seleceted); +void wpas_reset_mlo_info(struct wpa_supplicant *wpa_s); /* eap_register.c */ int eap_register_methods(void); From patchwork Wed Nov 30 13:09:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710493 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=1vyE4hyw; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=LxH0aqaa; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfl53Cgtz23nv for ; Thu, 1 Dec 2022 00:12:49 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2j4b7NmwoYjkB9KPkP4ZIWrVtHmlv9UrE4wuoy+ceug=; b=1vyE4hywuxmmx+ fET6t+M+7u62MQ4M5YDHeeVFMvdK88q8451lBft3RN10U/D9B9y4r9IAaoeEW8G6MgIvXN9EcWlvT F8TKmsmG2bPSyBNtB2kKd+e/CQPl0yt3mF/U+1eIay2K0RBKO7qCd4+z27gbeEINjqWdnrH2urBhb nJGHfzSs80v4WC2keZeGOd2xKuNP0Mw/xinpRfYLwKhkG27u8Z7abAj37UYuI016QzXrOqT+yEA6R ollbq+jhx/1k2EpMhhz6R5Tjqm4HqU1aS0P2xyymNUr065fzCMFP4arMCMCYD0j5VhLyzdtqi4Lt6 MXVuzmMJX9EgaAMoavrg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Msj-00GMu4-Mj; Wed, 30 Nov 2022 13:12:09 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MrA-00GM8L-2Y for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813832; x=1701349832; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=RY9Cqb6Ug2D0Z7zeO3VQorj0c0WK08UiqsaFKVesZCg=; b=LxH0aqaax7gSmTAP4Iwa7NA5wtzH3khw06CYEDNpDrXbAweO2QMvsBEm 0J4yYcphdffZF67ED4z09gfyzVYabRl3liTseuqgzVMBYVDZjikEtMIXj DlABGlaSYSerkGYf90fbe4ZFaSLJTybb5oswBMNUaG3okTtQcc4pSrZH6 tPPbKChQrZkQTikSsdMI4I7QF+CanVXI5blCI4ep3CJOh4Hq8DPR1PT4Q 3BUiDYxcMrXqWGIjlAAsHujPaxbucXd3fmYDVk35U7LI963WO+HhiusY3 OcqIhI73SLcoaj9G9OTRRlYs02o5jqNcXj2424T8WCYc8BjuWFeIFHfQa g==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238700" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238700" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:31 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098127" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098127" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:30 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Andrei Otcheretianski , Ilan Peer Subject: [PATCH v2 08/15] SME: Add support for handling association with MLD Date: Wed, 30 Nov 2022 15:09:32 +0200 Message-Id: <20221130130939.115928-9-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051032_175218_EF6A2609 X-CRM114-Status: GOOD ( 11.78 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: In case that the AP supports MLD, request an MLD association from the driver. When processing the association event from the driver verify that the multi link information in the association response ML element matches the links on which the association was expected. Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org In case that the AP supports MLD, request an MLD association from the driver. When processing the association event from the driver verify that the multi link information in the association response ML element matches the links on which the association was expected. Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- wpa_supplicant/sme.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c index 119f1817da..f0a3ff47b1 100644 --- a/wpa_supplicant/sme.c +++ b/wpa_supplicant/sme.c @@ -2398,6 +2398,31 @@ mscs_fail: else params.uapsd = -1; + if (wpa_s->mld) { + size_t i; + + wpa_printf(MSG_DEBUG, + "MLD: in association. assoc_link_id=%u, valid_links=0x%x", + wpa_s->mlo_assoc_link_id, wpa_s->valid_links); + + params.mld_params.mld_addr = wpa_s->ap_mld_addr; + params.mld_params.valid_links = wpa_s->valid_links; + params.mld_params.assoc_link_id = wpa_s->mlo_assoc_link_id; + for (i = 0; i < MAX_NUM_MLD_LINKS ; i++) { + if (!(wpa_s->valid_links & BIT(i))) + continue; + + params.mld_params.mld_links[i].bssid = + wpa_s->links[i].bssid; + params.mld_params.mld_links[i].freq = + wpa_s->links[i].freq; + + wpa_printf(MSG_DEBUG, "MLD: id=%zu, freq=%d, " MACSTR, + i, wpa_s->links[i].freq, + MAC2STR(wpa_s->links[i].bssid)); + } + } + if (wpa_drv_associate(wpa_s, ¶ms) < 0) { wpa_msg(wpa_s, MSG_INFO, "SME: Association request to the " "driver failed"); From patchwork Wed Nov 30 13:09:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710495 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=LQj4Wxtr; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=B8PCdHuI; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMflX4vq4z23nv for ; Thu, 1 Dec 2022 00:13:12 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=d15GSP9dDF/vomUJz+kYri77zAShYo4WP2106Ntv/Fw=; b=LQj4WxtrYk4isf 24tdkUiEoLuzaEuBcObyFbZS4pNV2yw/ScMTYxvJb3HEl/g2hpXCyM2pCI6CQpi0pXuobIhaRB2VV +iHTTgOgD0Gyj6rVZjonVUwdwQ0LtTNPHDYkx3CAWvkhGlF+ZDa18B8zGM4o8SeI0lnrBTa/gnOM5 /mAeRI1AZlV20cETzbAfe87XUWBx6UXSLLYVTNiAkFOi1LkvWBRUJZKzS+01A64DoUu+7DE9mXtPZ h1j8Rw5sh8A8LJ9/b7aPHPqdhFHN5qeWGZhSyB7cdU0CHpM7cMdWIiHZDTc8UV+OMjUmT5siSoEPh fUEIeD1tqF+tPK1Kvi2w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mt4-00GN9x-PQ; Wed, 30 Nov 2022 13:12:30 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MrB-00GMBj-Tz for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813833; x=1701349833; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BfGGbVgICneVTr7zGPrsPN0ZvGhntzsJ6XXGA1+vNdc=; b=B8PCdHuIPfc9XDOfP1CADC5yKGU+VI1zE7qD2dN3Y0FLLeeaJQqtUc2S gcAxkFdS+dGpXFyXKe1DZRYIpz3z2SJqdOT1iNWajOYhMizZTJJ+HSjcp yZyr29V5b77JWK+E8YPldf7gVmVNrZ68kmw9qaBhv7Ty4kysF0MUKN3fi LaSK0Jp6K9HRjGj7O/NeKnmrVZWa4CUlcc/cl0ldmjEcEjheOonh6MKbZ 06KqMtMiR/4jlESl6e2lpY2nq8Ec+i7/vwC7EJl1ujy4RIQmnNtjrc1ei 5/DiLTVVsAzYtnUkIZbIfUoKIBhCH93kpWagiQnCv+oOltC/ayDq/60Os w==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238701" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238701" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:33 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098135" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098135" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:31 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Andrei Otcheretianski , Ilan Peer Subject: [PATCH v2 09/15] SME: Accept authentication frame from an MLD AP Date: Wed, 30 Nov 2022 15:09:33 +0200 Message-Id: <20221130130939.115928-10-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051034_032495_DCA0744A X-CRM114-Status: UNSURE ( 9.02 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: The underline driver is expected to translate the link addresses to MLD addresses when processing an authentication frame from a MLD AP. Thus, accept authentication frame when the peer matches the exp [...] Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org The underline driver is expected to translate the link addresses to MLD addresses when processing an authentication frame from a MLD AP. Thus, accept authentication frame when the peer matches the expected MLD address. Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- wpa_supplicant/sme.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c index f0a3ff47b1..8a75567a21 100644 --- a/wpa_supplicant/sme.c +++ b/wpa_supplicant/sme.c @@ -1819,10 +1819,18 @@ void sme_event_auth(struct wpa_supplicant *wpa_s, union wpa_event_data *data) } if (os_memcmp(wpa_s->pending_bssid, data->auth.peer, ETH_ALEN) != 0) { - wpa_dbg(wpa_s, MSG_DEBUG, "SME: Ignore authentication with " - "unexpected peer " MACSTR, - MAC2STR(data->auth.peer)); - return; + bool fail = true; + + if (wpa_s->mld && + !os_memcmp(wpa_s->ap_mld_addr, data->auth.peer, ETH_ALEN)) + fail = false; + + if (fail) { + wpa_dbg(wpa_s, MSG_DEBUG, + "SME: Ignore authentication with unexpected peer " MACSTR, + MAC2STR(data->auth.peer)); + return; + } } wpa_dbg(wpa_s, MSG_DEBUG, "SME: Authentication response: peer=" MACSTR From patchwork Wed Nov 30 13:09:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710496 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=hxJKyXie; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=PSZQfEcg; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfmc3sKyz23nv for ; Thu, 1 Dec 2022 00:14:08 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Pdo68IFsw6j7h29CF1ETf6lIDs6hXMBC/9umbdOAcgw=; b=hxJKyXieK6g7wi Yv5O+RDYt4AuQEt+9w/fPnoZGthIy0uCcuxLQtsSzmtAEnEootXbmiALCN3wFnyg835+ULSaNzrq9 P9VkUC4BAbV7XvnWyGMlfh4o+17LKsUpMoGnjyvC7iZBlKbOeq2pF1mcNyS8OaeZuAZcSPgud9Kqh bBuS9HUnmt3z99toXhAcY86zve4SGVAMjPUnoelZp2dzkzgLQMbxeMyAJf2lBea6pTTa77szyqJ2j urjN8pmahGMj9SbXE7whtJFoawIoOweiyo+Vw164KPkckBX2MczuA+KXgN8pcCz8CbzrsOCQX2qkG bt9fWxiPnK1Tv+UpCWnA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mtu-00GNec-24; Wed, 30 Nov 2022 13:13:22 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MrH-00GMBj-Rg for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813839; x=1701349839; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Iyfuq887a5kp74EmVd+3UzhoBJCoGQbbEc5Fb7aeZ+c=; b=PSZQfEcgYuGl6EArAKlAmhbSRdY+aI/BeoKCeMg9DSFCDqldBrbGnec2 TGQhJ0JXVMx+YzXnvb1MFiOv7N6Nx9xQfSJ83JxuhcbpM9RUhfddj6e7E az62WPhHR3L5wN72VIhfpH++fq2hzdzCGcqjOVbLoX9mg19LDZRKEkTVY PSbeCxijyyyHeG1j0LgFPL8xLaKCblU/oBzevypIhFbdzRm5+Oi8WxTU+ qtq+6vYLg7D2+FBMTDOEB56lvNMb0wG3po6/5B7daY1zqL3j0LvdjErgb btF3GbMVBe3nL8/XwUPl0/6FVbO7Cvv++xWQW3k+JKLeaGozzya73EEF9 g==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238707" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238707" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:39 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098147" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098147" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:33 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Ilan Peer , Andrei Otcheretianski Subject: [PATCH v2 10/15] nl80211: Get MLO support capability Date: Wed, 30 Nov 2022 15:09:34 +0200 Message-Id: <20221130130939.115928-11-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051039_959770_B49B007B X-CRM114-Status: UNSURE ( 8.12 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Ilan Peer Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/drivers/driver_nl80211_capa.c | 3 +++ 1 file changed, 3 insertions(+) Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Ilan Peer Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/drivers/driver_nl80211_capa.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c index 512bbb6de2..7cb1a1dec7 100644 --- a/src/drivers/driver_nl80211_capa.c +++ b/src/drivers/driver_nl80211_capa.c @@ -1113,6 +1113,9 @@ static int wiphy_info_handler(struct nl_msg *msg, void *arg) capa->max_num_akms = nla_get_u16(tb[NL80211_ATTR_MAX_NUM_AKM_SUITES]); + if (tb[NL80211_ATTR_MLO_SUPPORT]) + capa->flags2 |= WPA_DRIVER_FLAGS2_MLO; + return NL_SKIP; } From patchwork Wed Nov 30 13:09:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710497 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=bbCaBP/H; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=JWnp9etg; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfnD1BXxz23nv for ; Thu, 1 Dec 2022 00:14:40 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jkn/fjRiE/XccN01zu9eZ5gGecKdpOr3OvVMna7cHBE=; b=bbCaBP/H/G4Tx7 bxgu1YjSheRx0DLX0vrMWrAT2HGi1jPQ0BTkYMN5WgLY5kBYKmSuWAAIVdqTpKkHx2685MQYbW9eJ b9FnLwQ92Y9Gch/J20W+cYtglR5ZYcJHQU4Tuf7LL1YJ+P0ToorN4jCRGhgKiBLIVOLNdo8fFgnmj 7kKdt9ZgosH1bOsvxr9Uv0nuzurcYGmdTAq4KTyYZJ8bzZH7HhSAWRU586pCWE+MY53huxIVB0RlP ABpL1ovBtJuvF9+01BbM6jwK7nnviclR2xecoK3BdTt7cXanO5253pvVRXIErk+AqYwq1zNiE48rD 6woGPq6egRkBO1dKWkkw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MuU-00GO0u-EM; Wed, 30 Nov 2022 13:13:58 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MrR-00GMHb-SV for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813849; x=1701349849; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+g1W/E0W5YyajcEK6ZqL9hgWIuQslfp3k9+4qDI1jgE=; b=JWnp9etgVcTwdfTlchxASE2JIAd91Nzh333kEHJnh4b5jyWjI7oMvfy2 fvb4x+vYKJ6Rcn4q8tLQoUq1HfxfxWhWWpfnx0dZMpEy4eOZgAe5bUcjp P80dpL0Uko5WBwzSLEZ9X9Kactl44rOUI8i7sSlAGceRRZ9P/nQo07YYs IX6vPjWQ/2KFd/soZzPlYWeoHtYkqxaaW5rLc6PSqgjXpFqGePt423blW u6BNhpUq2ZfddNBpjlqqNpfArSq0EBlfcjH4M0iPcqbLmWthvsqe+U+Er xYKMPx6ldLWCSOhLUKuUB8F0Lo59+udhY8IPEmazhyj983bQ2PrdHEd46 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238734" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238734" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:49 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098182" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098182" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:35 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Ilan Peer , Andrei Otcheretianski Subject: [PATCH v2 11/15] nl80211: Handle scan results with MLD connection Date: Wed, 30 Nov 2022 15:09:35 +0200 Message-Id: <20221130130939.115928-12-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051050_020369_61ED139B X-CRM114-Status: GOOD ( 10.86 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Ilan Peer With an MLD connection the BSSID reported in the association event is the MLD AP address, while the association state reported in the scan results relates to the MLD AP specific link. In such a case d [...] Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Ilan Peer With an MLD connection the BSSID reported in the association event is the MLD AP address, while the association state reported in the scan results relates to the MLD AP specific link. In such a case do not disconnect. Signed-off-by: Ilan Peer Signed-off-by: Andrei Otcheretianski --- src/drivers/driver_nl80211_scan.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/drivers/driver_nl80211_scan.c b/src/drivers/driver_nl80211_scan.c index d54dd3a33e..4b0a5c720b 100644 --- a/src/drivers/driver_nl80211_scan.c +++ b/src/drivers/driver_nl80211_scan.c @@ -911,8 +911,21 @@ static void nl80211_check_bss_status(struct wpa_driver_nl80211_data *drv, "nl80211: Local state (associated with " MACSTR ") does not match with BSS state", MAC2STR(drv->bssid)); - clear_state_mismatch(drv, r->bssid); - clear_state_mismatch(drv, drv->bssid); + + if (os_memcmp(drv->sta_mlo_info.ap_mld_addr, drv->bssid, + ETH_ALEN)) { + clear_state_mismatch(drv, r->bssid); + + if (!is_zero_ether_addr(drv->sta_mlo_info.ap_mld_addr)) + clear_state_mismatch(drv, + drv->sta_mlo_info.ap_mld_addr); + else + clear_state_mismatch(drv, drv->bssid); + + } else { + wpa_printf(MSG_DEBUG, + "nl80211: BSSID is the MLD address"); + } } } From patchwork Wed Nov 30 13:09:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710500 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=P2Ud3Vyw; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=cGCc+N8J; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfqw72z4z23ng for ; Thu, 1 Dec 2022 00:17:00 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=oyeGSPh2DcaKo7NenvCHdHFS7owVqQ6wvDGoPRC0z1Y=; b=P2Ud3VywUDGr/B RN+GtRNJ2ofpRG0qxqE5OKYXNsiCnX2NGfJuPkAMAiEDI2CrhFWwvkwC2MG0LU2uvlbQq4xndPSkm cIUpDlm0y0reOeAsGLMOpyZshrSE2ugJXUdElf0LGO/OpSKpfQC7r8lDpl6afLhx2SgAwL0cTq4Qv xwyD2yh3ZTvwAFklZ/7Hf+C6AFmPLGx+tzoAX2tCXEa4OB+J2peJ9A0gWMyy/XheqZSo/2ViTmRvv AupJEqOcUQ4vV3c1/rc/tjuX+QTLj6L40aWIXFyR3opObkO3xuiP8e+IJuda79FDOQQtBb8INsEKh q4KcnCFFuZZUkqRG7s2A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mwd-00GP7p-0V; Wed, 30 Nov 2022 13:16:11 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MrV-00GMHb-3o for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813853; x=1701349853; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HL7FzYsT4KragyINm4Mq0LAR30aZKgLxeDZaGOL+h4Y=; b=cGCc+N8JVuHPjfOPmjywxoYrxgs5X0pqwYdEQ/wLZmdU+GwUaiqweFXI p27/Hfe6XEjHhco2r/okXt9xCY9zu8FZgtlqRQ261MUMQSR7e5xaFMBm/ iwMakKCUY1RP/vWsrzyqWHPWfF9+923t5KxWgwQ5zDh01VtMo5KzCKtvw 1k8NKoGp6j1vQYZBUXD/VbEOUVJuUfApNtjoN5e+xePcTHnPw4J7jI/81 IGZ5iWhIgM8ZzXHVDiQwYHoK071fiTkGoqcYE8I7RymaHinhfmTK9w93y glqsWZ9smnq2sHP5Ri54R1oI/4yjbxrur5Dq6UprPKnbREwCbcq+v4sRl A==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238738" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238738" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:49 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098190" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098190" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:44 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Andrei Otcheretianski Subject: [PATCH v2 12/15] driver_nl80211: Support get_sta_mlo_info for SME drivers Date: Wed, 30 Nov 2022 15:09:36 +0200 Message-Id: <20221130130939.115928-13-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051053_229141_92D908D7 X-CRM114-Status: GOOD ( 11.72 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Query updated MLO information using NL80211_CMD_GET_INTERFACE command. Signed-off-by: Andrei Otcheretianski --- src/drivers/driver_nl80211.c | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Query updated MLO information using NL80211_CMD_GET_INTERFACE command. Signed-off-by: Andrei Otcheretianski --- src/drivers/driver_nl80211.c | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 188e4b5fe7..23129f4b3b 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -1025,6 +1025,50 @@ static int wpa_driver_nl80211_get_ssid(void *priv, u8 *ssid) } +static int get_mlo_info(struct nl_msg *msg, void *arg) +{ + struct nlattr *tb[NL80211_ATTR_MAX + 1]; + struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); + struct nlattr *link_attr, *link_data[NL80211_ATTR_MAX + 1]; + static struct nla_policy link_policy[NL80211_ATTR_MAX + 1] = { + [NL80211_ATTR_MLO_LINK_ID] = { .type = NLA_U8 }, + [NL80211_ATTR_MAC] = { .minlen = ETH_ALEN, .maxlen = ETH_ALEN }, + }; + struct driver_sta_mlo_info *info = arg; + int rem; + + nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0), + genlmsg_attrlen(gnlh, 0), NULL); + + if (!tb[NL80211_ATTR_MLO_LINKS]) + return NL_SKIP; + + info->valid_links = 0; + nla_for_each_nested(link_attr, tb[NL80211_ATTR_MLO_LINKS], rem) { + u8 link_id; + + if (nla_parse_nested(link_data, NL80211_ATTR_MAX, + link_attr, link_policy) != 0) + continue; + + if (!link_data[NL80211_ATTR_MLO_LINK_ID] || + !link_data[NL80211_ATTR_MAC]) + continue; + + link_id = nla_get_u8(link_data[NL80211_ATTR_MLO_LINK_ID]); + info->valid_links |= BIT(link_id); + os_memcpy(info->links[link_id].addr, + nla_data(link_data[NL80211_ATTR_MAC]), + ETH_ALEN); + if (link_data[NL80211_ATTR_WIPHY_FREQ]) + info->links[link_id].freq = + nla_get_u32(link_data[NL80211_ATTR_WIPHY_FREQ]); + } + + return NL_SKIP; +} + + static int nl80211_get_sta_mlo_info(void *priv, struct driver_sta_mlo_info *mlo_info) { @@ -1034,6 +1078,15 @@ static int nl80211_get_sta_mlo_info(void *priv, if (!drv->associated) return -1; + if (drv->capa.flags & WPA_DRIVER_FLAGS_SME) { + struct nl_msg *msg; + + msg = nl80211_drv_msg(drv, 0, NL80211_CMD_GET_INTERFACE); + if (send_and_recv_msgs(drv, msg, get_mlo_info, &drv->sta_mlo_info, + NULL, NULL)) + return -1; + } + os_memcpy(mlo_info, &drv->sta_mlo_info, sizeof(*mlo_info)); return 0; } From patchwork Wed Nov 30 13:09:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710498 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=ky35gtb1; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=GlD89GMh; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfnx4jyyz23ng for ; Thu, 1 Dec 2022 00:15:17 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=E/I4qiPcdvbmlcv2ejRMr5JKix9rdlYmUacFbBX86qs=; b=ky35gtb1JNgxlK vWTSQf1ElxUPJPwVJarRL+j2HmBUZsVpnfKR+pWMsMzPsZTuqhJBPd7p2K8xrFetWPG9dD7PYHoJF Qq7EliZnFElZGItCViRQL6irGlj3aaQ0nweR60uo3BZhVbqdjH3rjVoG4CnEhROsGYdE0P+DvcgXn Jej4XQE+RLEj8Xx6P/2JOVriRziRPJODs2pRLMR/Rs3TWLiW9yhbmqU/FxOPCYqYPKqR4BUKh2wFA 0YHCQOk/QypZsnFLqAZIwbHT7/4g48Z37RS9aCzDrAVvRY2j7VNigXUczmqo8fUZeGZnjEZstga02 lAb0tUR+LSF/56vq54Fw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mv4-00GOKB-3c; Wed, 30 Nov 2022 13:14:34 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MrT-00GMHb-9V for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813851; x=1701349851; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=bP7p69yAd+rlXyYi+2gS2yjuBiupr+bPgs0IR8VpJe8=; b=GlD89GMhpygYe4DP8awKYKk56YSSpYGy1TGJEqRskAe5rLE0tSlXbz0h sz36gmgWc7p93Xiq9bbaDuZ4u6I7cn3GjtVntBo198E5fyzayxr3n+U53 4WmGWD9AamSlTDomfY0rdyA78lEnsIvK/2mXPmMHJyUWpUHuNjrHV7p96 rozArAzet+5vcZJW54k8H8SnfUus2rApbBufpYSgy4+VHc4HVdeqp4OtZ NOiaQ+ffK6RSMTEUpu9X1ctRDvMzBdEvkkoReC6QiivOtUQQvyos4hIb7 6TWH+BuAKDVf1mMsO0H7BW+wca24sce/le2r38xUA1jjfTigIxiHU5NIM A==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238736" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238736" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:49 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098196" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098196" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:46 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Andrei Otcheretianski Subject: [PATCH v2 13/15] wpa_supplicant: Use MLD address in SAE authentication Date: Wed, 30 Nov 2022 15:09:37 +0200 Message-Id: <20221130130939.115928-14-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051051_416877_7646AFD5 X-CRM114-Status: GOOD ( 15.69 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Use MLD address in SAE commit derivation and PMKSA storing. Signed-off-by: Andrei Otcheretianski Signed-off-by: Andrei Otcheretianski --- wpa_supplicant/sme.c | 58 ++++++++++++++++++++++------ [...] Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Use MLD address in SAE commit derivation and PMKSA storing. Signed-off-by: Andrei Otcheretianski Signed-off-by: Andrei Otcheretianski --- wpa_supplicant/sme.c | 58 ++++++++++++++++++++++----------- wpa_supplicant/wpa_supplicant.c | 6 +++- 2 files changed, 44 insertions(+), 20 deletions(-) diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c index 8a75567a21..e7e7cada9d 100644 --- a/wpa_supplicant/sme.c +++ b/wpa_supplicant/sme.c @@ -85,7 +85,9 @@ static int sme_set_sae_group(struct wpa_supplicant *wpa_s) static struct wpabuf * sme_auth_build_sae_commit(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, - const u8 *bssid, int external, + const u8 *bssid, + const u8 *mld_addr, + int external, int reuse, int *ret_use_pt, bool *ret_use_pk) { @@ -97,6 +99,9 @@ static struct wpabuf * sme_auth_build_sae_commit(struct wpa_supplicant *wpa_s, bool use_pk = false; u8 rsnxe_capa = 0; + if (!mld_addr) + mld_addr = bssid; + if (ret_use_pt) *ret_use_pt = 0; if (ret_use_pk) @@ -159,7 +164,7 @@ static struct wpabuf * sme_auth_build_sae_commit(struct wpa_supplicant *wpa_s, } if (reuse && wpa_s->sme.sae.tmp && - os_memcmp(bssid, wpa_s->sme.sae.tmp->bssid, ETH_ALEN) == 0) { + os_memcmp(mld_addr, wpa_s->sme.sae.tmp->bssid, ETH_ALEN) == 0) { wpa_printf(MSG_DEBUG, "SAE: Reuse previously generated PWE on a retry with the same AP"); use_pt = wpa_s->sme.sae.h2e; @@ -227,7 +232,7 @@ static struct wpabuf * sme_auth_build_sae_commit(struct wpa_supplicant *wpa_s, if (use_pt && sae_prepare_commit_pt(&wpa_s->sme.sae, ssid->pt, - wpa_s->own_addr, bssid, + wpa_s->own_addr, mld_addr, wpa_s->sme.sae_rejected_groups, NULL) < 0) goto fail; if (!use_pt && @@ -238,13 +243,13 @@ static struct wpabuf * sme_auth_build_sae_commit(struct wpa_supplicant *wpa_s, goto fail; } if (wpa_s->sme.sae.tmp) { - os_memcpy(wpa_s->sme.sae.tmp->bssid, bssid, ETH_ALEN); + os_memcpy(wpa_s->sme.sae.tmp->bssid, mld_addr, ETH_ALEN); if (use_pt && use_pk) wpa_s->sme.sae.pk = 1; #ifdef CONFIG_SAE_PK os_memcpy(wpa_s->sme.sae.tmp->own_addr, wpa_s->own_addr, ETH_ALEN); - os_memcpy(wpa_s->sme.sae.tmp->peer_addr, bssid, ETH_ALEN); + os_memcpy(wpa_s->sme.sae.tmp->peer_addr, mld_addr, ETH_ALEN); sae_pk_set_password(&wpa_s->sme.sae, password); #endif /* CONFIG_SAE_PK */ } @@ -591,6 +596,13 @@ static void sme_send_authentication(struct wpa_supplicant *wpa_s, params.ssid_len = bss->ssid_len; params.p2p = ssid->p2p_group; + if (wpas_ml_element(wpa_s, bss)) { + wpa_printf(MSG_DEBUG, "MLD: in authentication"); + params.mld = true; + params.mld_link_id = wpa_s->mlo_assoc_link_id; + params.ap_mld_addr = wpa_s->ap_mld_addr; + } + if (wpa_s->sme.ssid_len != params.ssid_len || os_memcmp(wpa_s->sme.ssid, params.ssid, params.ssid_len) != 0) wpa_s->sme.prev_bssid_set = 0; @@ -676,7 +688,9 @@ static void sme_send_authentication(struct wpa_supplicant *wpa_s, if (wpa_key_mgmt_fils(ssid->key_mgmt)) cache_id = wpa_bss_get_fils_cache_id(bss); #endif /* CONFIG_FILS */ - if (pmksa_cache_set_current(wpa_s->wpa, NULL, bss->bssid, + if (pmksa_cache_set_current(wpa_s->wpa, NULL, + params.mld ? + params.ap_mld_addr : params.bssid, wpa_s->current_ssid, try_opportunistic, cache_id, 0) == 0) @@ -976,16 +990,12 @@ static void sme_send_authentication(struct wpa_supplicant *wpa_s, } #endif /* CONFIG_MBO */ - if (wpas_ml_element(wpa_s, bss)) { - wpa_printf(MSG_DEBUG, "MLD: in authentication"); - params.mld = true; - params.mld_link_id = wpa_s->mlo_assoc_link_id; - params.ap_mld_addr = wpa_s->ap_mld_addr; - } - #ifdef CONFIG_SAE if (!skip_auth && params.auth_alg == WPA_AUTH_ALG_SAE && - pmksa_cache_set_current(wpa_s->wpa, NULL, bss->bssid, ssid, 0, + pmksa_cache_set_current(wpa_s->wpa, NULL, + params.mld ? + params.ap_mld_addr : params.bssid, + ssid, 0, NULL, wpa_key_mgmt_sae(wpa_s->key_mgmt) ? wpa_s->key_mgmt : @@ -1000,7 +1010,10 @@ static void sme_send_authentication(struct wpa_supplicant *wpa_s, if (!skip_auth && params.auth_alg == WPA_AUTH_ALG_SAE) { if (start) resp = sme_auth_build_sae_commit(wpa_s, ssid, - bss->bssid, 0, + bss->bssid, + params.mld ? + params.ap_mld_addr : + NULL, 0, start == 2, NULL, NULL); else @@ -1079,7 +1092,9 @@ static void sme_send_authentication(struct wpa_supplicant *wpa_s, goto no_fils; } - if (pmksa_cache_set_current(wpa_s->wpa, NULL, bss->bssid, + if (pmksa_cache_set_current(wpa_s->wpa, NULL, + params.mld ? params.ap_mld_addr : + params.bssid, ssid, 0, wpa_bss_get_fils_cache_id(bss), 0) == 0) @@ -1315,8 +1330,8 @@ static int sme_external_auth_send_sae_commit(struct wpa_supplicant *wpa_s, bool use_pk; u16 status; - resp = sme_auth_build_sae_commit(wpa_s, ssid, bssid, 1, 0, &use_pt, - &use_pk); + resp = sme_auth_build_sae_commit(wpa_s, ssid, bssid, NULL, + 1, 0, &use_pt, &use_pk); if (!resp) { wpa_printf(MSG_DEBUG, "SAE: Failed to build SAE commit"); return -1; @@ -1844,6 +1859,8 @@ void sme_event_auth(struct wpa_supplicant *wpa_s, union wpa_event_data *data) #ifdef CONFIG_SAE if (data->auth.auth_type == WLAN_AUTH_SAE) { + u8 *bss = wpa_s->pending_bssid; + int res; res = sme_sae_auth(wpa_s, data->auth.auth_transaction, data->auth.status_code, data->auth.ies, @@ -1856,7 +1873,10 @@ void sme_event_auth(struct wpa_supplicant *wpa_s, union wpa_event_data *data) if (res != 1) return; - if (sme_sae_set_pmk(wpa_s, wpa_s->pending_bssid) < 0) + if (wpa_s->mld) + bss = wpa_s->ap_mld_addr; + + if (sme_sae_set_pmk(wpa_s, bss) < 0) return; } #endif /* CONFIG_SAE */ diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c index fa91648d04..7d4f8a9892 100644 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c @@ -3137,6 +3137,10 @@ static u8 * wpas_populate_assoc_ies( wpa_key_mgmt_wpa(ssid->key_mgmt)) { int try_opportunistic; const u8 *cache_id = NULL; + u8 *bssid = bss->bssid; + + if (wpa_s->mld) + bssid = wpa_s->ap_mld_addr; try_opportunistic = (ssid->proactive_key_caching < 0 ? wpa_s->conf->okc : @@ -3146,7 +3150,7 @@ static u8 * wpas_populate_assoc_ies( if (wpa_key_mgmt_fils(ssid->key_mgmt)) cache_id = wpa_bss_get_fils_cache_id(bss); #endif /* CONFIG_FILS */ - if (pmksa_cache_set_current(wpa_s->wpa, NULL, bss->bssid, + if (pmksa_cache_set_current(wpa_s->wpa, NULL, bssid, ssid, try_opportunistic, cache_id, 0) == 0) { eapol_sm_notify_pmkid_attempt(wpa_s->eapol); From patchwork Wed Nov 30 13:09:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710499 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=HNLXAibK; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=m1oKbZ2z; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfps5Jrpz23ng for ; Thu, 1 Dec 2022 00:16:05 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=7XHIFcjZ7sR4yqSUv58aQ3KcnITjsZRu07Ow2wU3OHQ=; b=HNLXAibKyT3v0N lUSqaMEZ4WhZ3f5QsiS05Fskg7OaVlgZBVLKG7/spxRngtrLwOIaSXKU7XfrKhWDjRmzniqE58ILX qq0vrZ4wc5/uyJHYrRZOcvTURficO70X5jegzs7qiNArp1Hyml7XPqkPV9nE5BdNBTn3MV6btn/vC vVPvmc5h5+/DDmeY6R0yQ+6Mao4PjINCrkXCt85ompAw349NjekxQs61oJ8NNFXIorKwbA7XDVzck 4gxf7C4K6NHvXIND9jqb9lpLtM0p9p7w0ofErBZcD7obKHj2pPoMYFJyy6TgrZNtzO7VAhJn1sE8R o3nj6BAj8X4bPxTgTdQw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0Mvp-00GOit-O8; Wed, 30 Nov 2022 13:15:21 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MrT-00GMIF-OW for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813851; x=1701349851; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=nPMm5c5f5FXGSnnPw6fy12VKdyTmFfBqBVc89rpfF78=; b=m1oKbZ2zQ7L5YYHgEN/Zy9uMwQzHeYP4Wk8+KnfGbp/NfZJrnJbrkGdz ShP2k2vQIGOPxABuz321DSmb9xq3cVs9xH0guPdSH5TyAHtsIzo7bR35W ZlWLE16HvXScenQBiYuEstPuDovhgqJ6HA3gZ69738DOOk8Phz4uEHpVf GQb35J5N2h7xi1DMgBoXqgK+GBwAcGm/1rlkjXK3sORgQcEZ0rGqYhfGf qZLb83nGphJ6UVkkwXZdu3dxt1ZChHbyN3KlIPtMkBFeQHZGogt/ssD2r poIR2mmlutAhTE/H5NhXVaMdigUDz8Fd3DXbcVbO5u/LZegVZxs1mNpx1 w==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238737" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238737" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:49 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098203" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098203" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:47 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Andrei Otcheretianski Subject: [PATCH v2 14/15] wpa_supplicant: Support parsing ML element in SAE auth frames Date: Wed, 30 Nov 2022 15:09:38 +0200 Message-Id: <20221130130939.115928-15-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051051_879464_8F2853B6 X-CRM114-Status: GOOD ( 17.81 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Skip SAE fixed auth body fields, so the parsing is done at correct offset. Signed-off-by: Andrei Otcheretianski --- src/ap/ieee802_11.c | 3 ++- src/common/common_module_tests.c | 2 +- src/common/sae.c | 5 ++++- src/common/sae.h | 2 +- src/pa [...] Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Skip SAE fixed auth body fields, so the parsing is done at correct offset. Signed-off-by: Andrei Otcheretianski --- src/ap/ieee802_11.c | 3 ++- src/common/common_module_tests.c | 2 +- src/common/sae.c | 5 ++++- src/common/sae.h | 2 +- src/pasn/pasn_initiator.c | 2 +- src/pasn/pasn_responder.c | 2 +- tests/fuzzing/sae/sae.c | 4 ++-- wpa_supplicant/sme.c | 32 +++++++++++++++++++++++--------- 8 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c index ba3c6009e4..6b0dc0690b 100644 --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c @@ -1348,7 +1348,8 @@ static void handle_auth_sae(struct hostapd_data *hapd, struct sta_info *sta, mgmt->u.auth.variable, &token, &token_len, groups, status_code == WLAN_STATUS_SAE_HASH_TO_ELEMENT || - status_code == WLAN_STATUS_SAE_PK); + status_code == WLAN_STATUS_SAE_PK, + NULL); if (resp == SAE_SILENTLY_DISCARD) { wpa_printf(MSG_DEBUG, "SAE: Drop commit message from " MACSTR " due to reflection attack", diff --git a/src/common/common_module_tests.c b/src/common/common_module_tests.c index 8aba713f92..a95ae36dc0 100644 --- a/src/common/common_module_tests.c +++ b/src/common/common_module_tests.c @@ -428,7 +428,7 @@ static int sae_tests(void) } if (sae_parse_commit(&sae, peer_commit, sizeof(peer_commit), NULL, NULL, - NULL, 0) != 0 || + NULL, 0, NULL) != 0 || sae_process_commit(&sae) < 0) goto fail; diff --git a/src/common/sae.c b/src/common/sae.c index e597bfc1ac..0285f4db53 100644 --- a/src/common/sae.c +++ b/src/common/sae.c @@ -2155,7 +2155,7 @@ static int sae_parse_akm_suite_selector(struct sae_data *sae, u16 sae_parse_commit(struct sae_data *sae, const u8 *data, size_t len, const u8 **token, size_t *token_len, int *allowed_groups, - int h2e) + int h2e, int *ie_offset) { const u8 *pos = data, *end = data + len; u16 res; @@ -2181,6 +2181,9 @@ u16 sae_parse_commit(struct sae_data *sae, const u8 *data, size_t len, if (res != WLAN_STATUS_SUCCESS) return res; + if (ie_offset) + *ie_offset = pos - data; + /* Optional Password Identifier element */ res = sae_parse_password_identifier(sae, &pos, end); if (res != WLAN_STATUS_SUCCESS) diff --git a/src/common/sae.h b/src/common/sae.h index 6a6b0c8241..7b6a083f14 100644 --- a/src/common/sae.h +++ b/src/common/sae.h @@ -136,7 +136,7 @@ int sae_write_commit(struct sae_data *sae, struct wpabuf *buf, const struct wpabuf *token, const char *identifier); u16 sae_parse_commit(struct sae_data *sae, const u8 *data, size_t len, const u8 **token, size_t *token_len, int *allowed_groups, - int h2e); + int h2e, int *ie_offset); int sae_write_confirm(struct sae_data *sae, struct wpabuf *buf); int sae_check_confirm(struct sae_data *sae, const u8 *data, size_t len); u16 sae_group_allowed(struct sae_data *sae, int *allowed_groups, u16 group); diff --git a/src/pasn/pasn_initiator.c b/src/pasn/pasn_initiator.c index a98eba20cf..fd63d7d8f4 100644 --- a/src/pasn/pasn_initiator.c +++ b/src/pasn/pasn_initiator.c @@ -108,7 +108,7 @@ static int wpas_pasn_wd_sae_rx(struct pasn_data *pasn, struct wpabuf *wd) } res = sae_parse_commit(&pasn->sae, data + 6, len - 6, NULL, 0, groups, - 1); + 1, NULL); if (res != WLAN_STATUS_SUCCESS) { wpa_printf(MSG_DEBUG, "PASN: SAE failed parsing commit"); return -1; diff --git a/src/pasn/pasn_responder.c b/src/pasn/pasn_responder.c index ea2737c0f3..d066a0c62a 100644 --- a/src/pasn/pasn_responder.c +++ b/src/pasn/pasn_responder.c @@ -85,7 +85,7 @@ static int pasn_wd_handle_sae_commit(struct pasn_data *pasn, } res = sae_parse_commit(&pasn->sae, data + 6, buf_len - 6, NULL, 0, - groups, 0); + groups, 0, NULL); if (res != WLAN_STATUS_SUCCESS) { wpa_printf(MSG_DEBUG, "PASN: Failed parsing SAE commit"); return -1; diff --git a/tests/fuzzing/sae/sae.c b/tests/fuzzing/sae/sae.c index 8819a4abbc..74faeeda6f 100644 --- a/tests/fuzzing/sae/sae.c +++ b/tests/fuzzing/sae/sae.c @@ -27,10 +27,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) return 0; os_memset(&sae, 0, sizeof(sae)); - res = sae_parse_commit(&sae, data, size, &token, &token_len, groups, 0); + res = sae_parse_commit(&sae, data, size, &token, &token_len, groups, 0, NULL); wpa_printf(MSG_DEBUG, "sae_parse_commit(0): %u", res); sae_clear_data(&sae); - res = sae_parse_commit(&sae, data, size, &token, &token_len, groups, 1); + res = sae_parse_commit(&sae, data, size, &token, &token_len, groups, 1, NULL); wpa_printf(MSG_DEBUG, "sae_parse_commit(1): %u", res); sae_clear_data(&sae); os_program_deinit(); diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c index e7e7cada9d..f2bd64afc4 100644 --- a/wpa_supplicant/sme.c +++ b/wpa_supplicant/sme.c @@ -514,7 +514,8 @@ out: static void wpas_sme_ml_auth(struct wpa_supplicant *wpa_s, - union wpa_event_data *data) + union wpa_event_data *data, + int ie_offset) { struct ieee802_11_elems elems; const u8 *mld_addr; @@ -522,7 +523,8 @@ static void wpas_sme_ml_auth(struct wpa_supplicant *wpa_s, if (!wpa_s->mld) return; - if (ieee802_11_parse_elems(data->auth.ies, data->auth.ies_len, + if (ieee802_11_parse_elems(data->auth.ies + ie_offset, + data->auth.ies_len - ie_offset, &elems, 0) != ParseOK) { wpa_printf(MSG_DEBUG, "MLD: failed parsing elements"); goto out; @@ -1530,7 +1532,7 @@ static int sme_check_sae_rejected_groups(struct wpa_supplicant *wpa_s, static int sme_sae_auth(struct wpa_supplicant *wpa_s, u16 auth_transaction, u16 status_code, const u8 *data, size_t len, - int external, const u8 *sa) + int external, const u8 *sa, int *ie_offset) { int *groups; @@ -1594,6 +1596,10 @@ static int sme_sae_auth(struct wpa_supplicant *wpa_s, u16 auth_transaction, } token_len = elen - 1; } + + if (ie_offset) + *ie_offset = token_pos + token_len - data; + wpa_s->sme.sae_token = wpabuf_alloc_copy(token_pos, token_len); wpa_hexdump_buf(MSG_DEBUG, "SME: Requested anti-clogging token", wpa_s->sme.sae_token); @@ -1689,7 +1695,8 @@ static int sme_sae_auth(struct wpa_supplicant *wpa_s, u16 auth_transaction, res = sae_parse_commit(&wpa_s->sme.sae, data, len, NULL, NULL, groups, status_code == WLAN_STATUS_SAE_HASH_TO_ELEMENT || - status_code == WLAN_STATUS_SAE_PK); + status_code == WLAN_STATUS_SAE_PK, + ie_offset); if (res == SAE_SILENTLY_DISCARD) { wpa_printf(MSG_DEBUG, "SAE: Drop commit message due to reflection attack"); @@ -1726,6 +1733,10 @@ static int sme_sae_auth(struct wpa_supplicant *wpa_s, u16 auth_transaction, return -1; if (sae_check_confirm(&wpa_s->sme.sae, data, len) < 0) return -1; + + if (ie_offset && wpa_s->sme.sae.tmp) + *ie_offset = 2 + wpa_s->sme.sae.tmp->kck_len; + wpa_s->sme.sae.state = SAE_ACCEPTED; sae_clear_temp_data(&wpa_s->sme.sae); @@ -1796,7 +1807,7 @@ void sme_external_auth_mgmt_rx(struct wpa_supplicant *wpa_s, wpa_s, le_to_host16(header->u.auth.auth_transaction), le_to_host16(header->u.auth.status_code), header->u.auth.variable, - len - auth_length, 1, header->sa); + len - auth_length, 1, header->sa, NULL); if (res < 0) { /* Notify failure to the driver */ sme_send_external_auth_status( @@ -1820,6 +1831,7 @@ void sme_external_auth_mgmt_rx(struct wpa_supplicant *wpa_s, void sme_event_auth(struct wpa_supplicant *wpa_s, union wpa_event_data *data) { struct wpa_ssid *ssid = wpa_s->current_ssid; + int ie_offset = 0; if (ssid == NULL) { wpa_dbg(wpa_s, MSG_DEBUG, "SME: Ignore authentication event " @@ -1864,7 +1876,8 @@ void sme_event_auth(struct wpa_supplicant *wpa_s, union wpa_event_data *data) int res; res = sme_sae_auth(wpa_s, data->auth.auth_transaction, data->auth.status_code, data->auth.ies, - data->auth.ies_len, 0, data->auth.peer); + data->auth.ies_len, 0, data->auth.peer, + &ie_offset); if (res < 0) { wpas_connection_failed(wpa_s, wpa_s->pending_bssid); wpa_supplicant_set_state(wpa_s, WPA_DISCONNECTED); @@ -2004,9 +2017,10 @@ void sme_event_auth(struct wpa_supplicant *wpa_s, union wpa_event_data *data) } #endif /* CONFIG_FILS */ - /* TODO: Support for other auth_type as well */ - if (data->auth.auth_type == WLAN_AUTH_OPEN) - wpas_sme_ml_auth(wpa_s, data); + /* TODO: Support additional auth_type's as well */ + if (data->auth.auth_type == WLAN_AUTH_OPEN || + data->auth.auth_type == WLAN_AUTH_SAE) + wpas_sme_ml_auth(wpa_s, data, ie_offset); sme_associate(wpa_s, ssid->mode, data->auth.peer, data->auth.auth_type); From patchwork Wed Nov 30 13:09:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrei Otcheretianski X-Patchwork-Id: 1710501 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=sgSBUTvH; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=CU7kjdFr; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4NMfrw5w6gz23ng for ; Thu, 1 Dec 2022 00:17:52 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=P6NMXO3u0ar1uc4BiohMycsp355WT0O/WM722kyFXjQ=; b=sgSBUTvHpO8dSP zpvLaIYG6X/HzZVtpAk0skujo5TyafG8YkqxOJG6GoXQ2mI/whh1M4GJG23tmn0NWpw78pUNB1eHY kcDLkinsI49BQURXW5e9yH1AEUzgwZZ5PYwEKhQDwNDHPWV4kpOvaH/0iTMTa/nF7W0ibnQgE1oZ5 7qXKA8ifqmRb+rrQf+shwO4JUrb31XkThn15kOlQQpwIWL7yUGHGF+6P417R4VzEgLTQ/PANkYcFP cfRW3he8OqctOpbxVcppTOmNyQMARfUgFPeQKrrbZavEqe+/RJpTqFYTnezZRY2IqVpsNc3RBrhzi ue1+1gwCS8A5XzxKapDA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MxV-00GPYM-Vb; Wed, 30 Nov 2022 13:17:06 +0000 Received: from mga03.intel.com ([134.134.136.65]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p0MrV-00GMJB-DO for hostap@lists.infradead.org; Wed, 30 Nov 2022 13:10:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1669813853; x=1701349853; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HU69ADuqCptRKfw+SwX2x+Oxj0a2JtHff/TbM4KhPjA=; b=CU7kjdFrX5kZgRTtcywASIFm04DbUYi46ORvbNhezux7xiXQIQjJaT80 wkOR//SJTftDHNTbpNvYNduTIGYthA8FTRBptjWvV9OIiWdFZ1WybTPFP 6Q6otpkVF8QU2wOjFKeDPZ58VaA3KXBeH2nzzCvrWq0lYJ3gWY9g01RNE cKeOR/bpbLF4O7ZdHeLnQZlBEy6XUu8DzmtLe67fXL49uYnFLq25ir1Bs DhmIIVy3BmyBH+btvSexURsFW7c78/Htl9E2Tvo1HJUSSkuB9L3qYwBae HGVvU7BvNuNfmjz571VymmiZqVpjtg/PYzq58PALrhSL6YdHgBqWUdVTC A==; X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="317238739" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="317238739" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:50 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10546"; a="973098209" X-IronPort-AV: E=Sophos;i="5.96,206,1665471600"; d="scan'208";a="973098209" Received: from ddori-mobl.ger.corp.intel.com (HELO aotchere-desk.intel.com) ([10.254.147.54]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Nov 2022 05:10:48 -0800 From: Andrei Otcheretianski To: hostap@lists.infradead.org Cc: Andrei Otcheretianski Subject: [PATCH v2 15/15] wpa_supplicant: Apply same restrictions for MLD as for 6 GHz BSS Date: Wed, 30 Nov 2022 15:09:39 +0200 Message-Id: <20221130130939.115928-16-andrei.otcheretianski@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221130130939.115928-1-andrei.otcheretianski@intel.com> References: <20221130130939.115928-1-andrei.otcheretianski@intel.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221130_051053_547933_D15E9B9D X-CRM114-Status: GOOD ( 11.41 ) X-Spam-Score: -2.7 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Though not exlicitely forced by spec yet, it makes sense to apply the same logic for MLD as for 6 GHz BSS's. Change wpa_supplicant_ssid_bss_match() accordingly. Signed-off-by: Andrei Otcheretianski --- wpa_supplicant/events.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) Content analysis details: (-2.7 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [134.134.136.65 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.2 DKIMWL_WL_HIGH DKIMwl.org - High trust sender X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Though not exlicitely forced by spec yet, it makes sense to apply the same logic for MLD as for 6 GHz BSS's. Change wpa_supplicant_ssid_bss_match() accordingly. Signed-off-by: Andrei Otcheretianski --- wpa_supplicant/events.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c index dcedfbf41b..d41a2d91b5 100644 --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c @@ -609,7 +609,8 @@ static int wpa_supplicant_ssid_bss_match(struct wpa_supplicant *wpa_s, #ifdef CONFIG_WEP int wep_ok; #endif /* CONFIG_WEP */ - bool is_6ghz_bss = is_6ghz_freq(bss->freq); + bool is_6ghz_bss_or_mld = is_6ghz_freq(bss->freq) || + !is_zero_ether_addr(bss->mld_addr); ret = wpas_wps_ssid_bss_match(wpa_s, ssid, bss); if (ret >= 0) @@ -624,10 +625,10 @@ static int wpa_supplicant_ssid_bss_match(struct wpa_supplicant *wpa_s, #endif /* CONFIG_WEP */ rsn_ie = wpa_bss_get_ie(bss, WLAN_EID_RSN); - if (is_6ghz_bss && !rsn_ie) { + if (is_6ghz_bss_or_mld && !rsn_ie) { if (debug_print) wpa_dbg(wpa_s, MSG_DEBUG, - " skip - 6 GHz BSS without RSNE"); + " skip - 6 GHz/MLD BSS without RSNE"); return 0; } @@ -645,7 +646,7 @@ static int wpa_supplicant_ssid_bss_match(struct wpa_supplicant *wpa_s, if (!ie.has_group) ie.group_cipher = wpa_default_rsn_cipher(bss->freq); - if (is_6ghz_bss) { + if (is_6ghz_bss_or_mld) { /* WEP and TKIP are not allowed on 6 GHz */ ie.pairwise_cipher &= ~(WPA_CIPHER_WEP40 | WPA_CIPHER_WEP104 | @@ -696,12 +697,12 @@ static int wpa_supplicant_ssid_bss_match(struct wpa_supplicant *wpa_s, break; } - if (is_6ghz_bss) { + if (is_6ghz_bss_or_mld) { /* MFPC must be supported on 6 GHz */ if (!(ie.capabilities & WPA_CAPABILITY_MFPC)) { if (debug_print) wpa_dbg(wpa_s, MSG_DEBUG, - " skip RSNE - 6 GHz without MFPC"); + " skip RSNE - 6 GHz/MLD without MFPC"); break; } @@ -741,10 +742,10 @@ static int wpa_supplicant_ssid_bss_match(struct wpa_supplicant *wpa_s, return 1; } - if (is_6ghz_bss) { + if (is_6ghz_bss_or_mld) { if (debug_print) wpa_dbg(wpa_s, MSG_DEBUG, - " skip - 6 GHz BSS without matching RSNE"); + " skip - 6 GHz/MLD BSS without matching RSNE"); return 0; }