From patchwork Tue Apr 9 06:50:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael-CY Lee X-Patchwork-Id: 1923865 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org 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=GpDz1kEr; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=mediatek.com header.i=@mediatek.com header.a=rsa-sha256 header.s=dk header.b=RFh8TMrP; dkim-atps=neutral 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=patchwork.ozlabs.org) 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 (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VJHCq6jdPz1yY4 for ; Tue, 16 Apr 2024 05:24:07 +1000 (AEST) 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: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:In-Reply-To:References: List-Owner; bh=HqYu5r+0Y+8PR7gOLzUWuMpYWldQt5FwA2gTVmVMgFc=; b=GpDz1kEr5gwOqY RxYplFjnddrT5GcZ99/PxNdR2v8OnWQhO6xa04e3o8Z7Scj9/7i/zLfs60Y9geuff+78CbTeaFG1p 4sU6kTb0pfvkI4Xq7vxuM1yUMbkhBMaqpD/DL8dwj3PdFi02o2x+XMUDIqulOObYKvPQWfiHFUk4h T0VVS/Hf7P11MemGATFaCbKjPwZKfArTd+6h0JqRGGPJqPi29MeJ3AbJEWVhopL2bPv9ShHcglW6n 7TbjgV6H/ZiLcAvktmEhFBw5zGyCaX1xg1/bcPxi/eeAYMgzN4Pj8QvPGQimow9410tn+T1aqNV1F p2y6485kUDE4o+u0ie3Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rwRvh-00000009a82-2DAp; Mon, 15 Apr 2024 19:23:49 +0000 Received: from mailgw01.mediatek.com ([216.200.240.184]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1ru5K0-00000000eue-08iz for hostap@lists.infradead.org; Tue, 09 Apr 2024 06:51:09 +0000 X-UUID: 8770e166f63d11eeac1957ae9f99f617-20240408 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Type:MIME-Version:Message-ID:Date:Subject:CC:To:From; bh=Dro6Q/F8/gvkpUWKxyic/0d/HYmALEOSZmgqTc5mWN4=; b=RFh8TMrPjthhQ91YNcXSyTKAwpB9XWOV3PDhF8r2nOH7TEy61MzmMKjA2hMuph/F0nwcS4KL/Pb/Atw68/+CAlh+ekx2NYUgEd8v8JjSKn6GcQcdAhk3iiTWGdiXgJZxko8sip5XWLo6tEPXlTp8du7mVXYvX/Qdk3C2BsRFMHg=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.37,REQID:ecc6f48b-124a-493e-b9b8-173f5d7552a1,IP:0,U RL:0,TC:0,Content:28,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:28 X-CID-META: VersionHash:6f543d0,CLOUDID:e0af5b91-e2c0-40b0-a8fe-7c7e47299109,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:4,EDM:-3,IP:nil,U RL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1, SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0 X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-UUID: 8770e166f63d11eeac1957ae9f99f617-20240408 Received: from mtkmbs13n2.mediatek.inc [(172.21.101.108)] by mailgw01.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 84090405; Mon, 08 Apr 2024 23:51:02 -0700 Received: from mtkmbs13n1.mediatek.inc (172.21.101.193) by MTKMBS14N1.mediatek.inc (172.21.101.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Tue, 9 Apr 2024 14:50:26 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkmbs13n1.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Tue, 9 Apr 2024 14:50:26 +0800 From: Michael-CY Lee To: Jouni Malinen CC: Felix Fietkau , , Evelyn Tsai , Money Wang , "Michael-CY Lee" Subject: [PATCH] wpa_supplicant: MLD STA: find partner links by BSSID and SSID Date: Tue, 9 Apr 2024 14:50:23 +0800 Message-ID: <20240409065023.30664-1-michael-cy.lee@mediatek.com> X-Mailer: git-send-email 2.18.0 MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-14.0.0.3152-9.1.1006-23728.005 X-TM-AS-Result: No-10--4.475600-8.000000 X-TMASE-MatchedRID: pJ+CdhK041TjTE3Llr8ednypjffgdgMPfiuvKi9huaaHwGEm+CpYGXB4 4IkzjfYylTJXKqh1ne0sPD6q2FX6qBGcJeW7yV1JutvHF25zoU9n+sA9+u1YLdM2my+Pv+HL4iR F7zWR+iQsRlGqeiBb/uZ2C8tX75xfoG/SuxLl2m2eAiCmPx4NwBnUJ0Ek6yhjxEHRux+uk8jQ9T RN0mhS187V+6gZmJsKBTKhlqRgoRnkn0QRrb0wrcwSen07SlboheeICjUw+3eAF1p5qifoMwPws JGf5KOk6ZaQmiYD4QfJ+dZGYlJF5o6H7DI0GsVcMmI24qiENwrMpIbcl3IoA+q1XYAYw09q9Z1y WryVTWo= X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--4.475600-8.000000 X-TMASE-Version: SMEX-14.0.0.3152-9.1.1006-23728.005 X-TM-SNTS-SMTP: 87C8FF12DEB5B40B046F89A0481F7865050671E9324CEE87D1586483F3F208C32000:8 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240408_235108_110055_320836B4 X-CRM114-Status: GOOD ( 12.29 ) X-Spam-Score: -0.2 (/) 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: MLD STA finds MLD AP's partner links by BSSID from the scan results. However, if the scan results contain BSSs with same BSSID but different BSS information, the MLD STA might assign a wrong BSS to on [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay lines X-Mailman-Approved-At: Mon, 15 Apr 2024 12:23:48 -0700 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 MLD STA finds MLD AP's partner links by BSSID from the scan results. However, if the scan results contain BSSs with same BSSID but different BSS information, the MLD STA might assign a wrong BSS to one of the MLD AP's partner links. This patch avoids the problem by using both BSSID and SSID to find the MLD AP's partner links. Signed-off-by: Michael-CY Lee --- wpa_supplicant/bss.c | 9 +++++++-- wpa_supplicant/sme.c | 14 ++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/wpa_supplicant/bss.c b/wpa_supplicant/bss.c index 289035310..4b8a98adf 100644 --- a/wpa_supplicant/bss.c +++ b/wpa_supplicant/bss.c @@ -1529,8 +1529,13 @@ wpa_bss_parse_ml_rnr_ap_info(struct wpa_supplicant *wpa_s, wpa_printf(MSG_DEBUG, "MLD: Reported link not part of MLD"); } else if (!(BIT(link_id) & *seen)) { - struct wpa_bss *neigh_bss = - wpa_bss_get_bssid(wpa_s, pos + 1); + struct wpa_bss *neigh_bss; + + if (ssid) + neigh_bss = wpa_bss_get(wpa_s, pos + 1, ssid->ssid, + ssid->ssid_len); + else + neigh_bss = wpa_bss_get_bssid(wpa_s, pos + 1); *seen |= BIT(link_id); wpa_printf(MSG_DEBUG, "MLD: mld ID=%u, link ID=%u", diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c index f08184f98..0643774a5 100644 --- a/wpa_supplicant/sme.c +++ b/wpa_supplicant/sme.c @@ -390,7 +390,8 @@ static void wpas_ml_handle_removed_links(struct wpa_supplicant *wpa_s, #ifdef CONFIG_TESTING_OPTIONS static struct wpa_bss * wpas_ml_connect_pref(struct wpa_supplicant *wpa_s, - struct wpa_bss *bss) + struct wpa_bss *bss, + struct wpa_ssid *ssid) { unsigned int low, high, i; @@ -456,7 +457,7 @@ found: MAC2STR(wpa_s->links[i].bssid)); /* Get the BSS entry and do the switch */ - bss = wpa_bss_get_bssid(wpa_s, wpa_s->links[i].bssid); + bss = wpa_bss_get(wpa_s, wpa_s->links[i].bssid, ssid->ssid, ssid->ssid_len); wpa_s->mlo_assoc_link_id = i; return bss; @@ -515,7 +516,7 @@ out: static void wpas_sme_set_mlo_links(struct wpa_supplicant *wpa_s, - struct wpa_bss *bss) + struct wpa_bss *bss, struct wpa_ssid *ssid) { u8 i; @@ -533,7 +534,8 @@ static void wpas_sme_set_mlo_links(struct wpa_supplicant *wpa_s, if (bss->mld_link_id == i) wpa_s->links[i].bss = bss; else - wpa_s->links[i].bss = wpa_bss_get_bssid(wpa_s, bssid); + wpa_s->links[i].bss = wpa_bss_get(wpa_s, bssid, ssid->ssid, + ssid->ssid_len); } } @@ -576,10 +578,10 @@ static void sme_send_authentication(struct wpa_supplicant *wpa_s, NULL, ssid, NULL) && bss->valid_links) { wpa_printf(MSG_DEBUG, "MLD: In authentication"); - wpas_sme_set_mlo_links(wpa_s, bss); + wpas_sme_set_mlo_links(wpa_s, bss, ssid); #ifdef CONFIG_TESTING_OPTIONS - bss = wpas_ml_connect_pref(wpa_s, bss); + bss = wpas_ml_connect_pref(wpa_s, bss, ssid); if (wpa_s->conf->mld_force_single_link) { wpa_printf(MSG_DEBUG, "MLD: Force single link");