From patchwork Wed Apr 26 13:22:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Priebe X-Patchwork-Id: 1774199 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=DLO7n0+s; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=konplan.com header.i=@konplan.com header.a=rsa-sha256 header.s=selector2 header.b=c34nLkaZ; 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 4Q65WF4x24z23vH for ; Thu, 27 Apr 2023 03:31:05 +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:To :From:Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=m0bFz8qtaaAXsWHDE88Vbj2ke8COozAlSNhsSMyrXrU=; b=DLO7n0+sJcQhPq wVSu7pRPlfLQ3j/chKbh6S/AK+VCyelofBIbtpPTIVIrZT/7EknFxvWH5Zxp5IC7q5kOi53Nw5L9s aWRl5sWVyGQogUUvEsmftiOAcNygMlN69qm4NKeHD4PeOkctgbLqBu11eMYpjsJvFhJ1+oogoBXoM nzzQvdO2JWrNmSfE3ShIn50adrqh2xwPWpfOdVD5C4Gvr/dQS9GO+NIV+rzcu8kae/7I4GGCs/+JA 0hmGthnMT6PHaEJAwP926ks/vh9R2Fk9+0gD+l/5LmojolkSJ65wMVk+yvmKD/LkuDlYx2X32wtSm vqDej6D3ClfmtiHRCQew==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1priy0-004XAX-1q; Wed, 26 Apr 2023 17:30:08 +0000 Received: from mail-gv0che01on20722.outbound.protection.outlook.com ([2a01:111:f403:4012::722] helo=CHE01-GV0-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1prf64-0043yt-28 for hostap@lists.infradead.org; Wed, 26 Apr 2023 13:22:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g+4jojGndO+YbWlkl9o05NJeXqgk7JwMLU+49I29Mi8RMMcPnvZzn1hVuQVK7W2z/Tbk6zUpVHNVazbcWJ8ehY1Qi1XNyTJyCT9WvUX/+NYAF0YQP2jBxP9zFtu9HDFjeymACL8jojRRfhzTqkEzKBx9/MJSQRZ2T/TRz/EpBui0R1/I6ROb2TaVdehZgrCDgOfV5ZmPa2bwrI1LPiZNHWBXCo2bhQhBiLah0NHx2XXL9vlvLkueq0s+Qy+qVcqUUE5iVXhvYPzCU1oi7A7AcrMRW9LGresG/EFbTM1wurOy86KRkMXe4wzA51IaPc7FxxPadf0e0HC+FKgCf2veDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=sLy0aU7GJSgvLA22p+3+1GqrHHaM6mY3H+rpCv4hXUo=; b=Q9cPIuBNaWuwvUd+G61EWMnWIV1A99yyNggvy0I1p0affvCtwB83w3D5KGq+d5KB3xLVO21zaNdCZokunSPaAy0Q0s5SQsbuoBCtvmUfktGlEqUgpujmxOoBR+wtzLzrNSNxl3aAsVViM85QDbtz1ATsIsvJ+nMMONf3BUeCUw9kuW0hHcCwqDUkG0gIidLk8O7cKUfVWfXnSY8gF6djKhGVw6QnJUGPHHewFQ/vEhcF0kjdLDdySEJrzUwxQwvxPVsRNjDyEwg8WK4MsqH/2hvQ0UIB/y4zKdjimtOtBZniabDdSlH438yDMbLjtJtr5nKQ3jp8eHOcrTaJfb7MOQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=konplan.com; dmarc=pass action=none header.from=konplan.com; dkim=pass header.d=konplan.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=konplan.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sLy0aU7GJSgvLA22p+3+1GqrHHaM6mY3H+rpCv4hXUo=; b=c34nLkaZRW5wcHipDjP/POczXim9aXKL4n7ChyAdRthAdEdktA2DGXtCDwdhytewhdIYH0o9cqdXqC49TWA6BtjjAy9+m3SSBtgu9NT6Xn/d3B+gg5HutKRdHnDOl1g+bRNG5QHtOuYN2XFyGBF7tR49PNp723W5NN3ERpcfmLg= Received: from GV0P278MB0830.CHEP278.PROD.OUTLOOK.COM (2603:10a6:710:51::14) by ZR0P278MB1063.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:54::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.21; Wed, 26 Apr 2023 13:22:02 +0000 Received: from GV0P278MB0830.CHEP278.PROD.OUTLOOK.COM ([fe80::dc9a:fc92:8eb0:ab9f]) by GV0P278MB0830.CHEP278.PROD.OUTLOOK.COM ([fe80::dc9a:fc92:8eb0:ab9f%7]) with mapi id 15.20.6340.021; Wed, 26 Apr 2023 13:22:02 +0000 From: Sebastian Priebe To: "hostap@lists.infradead.org" Subject: [PATCH RESEND] wpasupplicant: Only advertise MSCS and SCS in association request if supported by bss Thread-Topic: [PATCH RESEND] wpasupplicant: Only advertise MSCS and SCS in association request if supported by bss Thread-Index: Adl4Po7kngvX5PuBTd+s2YaIoNI+pw== Date: Wed, 26 Apr 2023 13:22:02 +0000 Message-ID: Accept-Language: de-DE, en-US Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: x-bromium-msgid: 53d6d376-6d7f-49fc-99c6-fff4f462e2a4 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=konplan.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: GV0P278MB0830:EE_|ZR0P278MB1063:EE_ x-ms-office365-filtering-correlation-id: d1014226-45fa-48e8-a717-08db4659392a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: afyVEWNIt6dWPLKxHXLFTg9qpSEwjJ432iY66N1tTz+rQsUjb+yh52Edwc2D2s2860W9zeAUYUN8Wtd4ZFdIks2h0KDwC6E7tDslDJX9palz7tqNccbPGI2Q+UrJgDzwACfphrrrn4n0jLsl/LG9wD8XY58hDeX+udasGm1iY/oyQxuqZiNRxEIHUTnxr0ah64LrOcNFbJq+mzrlos7L7vL0EqQEE7V/eXBqaqrQUMHHlSlqKRg2jhHNlARLpd4AuhWZml/npfg54yZZwo/vvDaow95ss+KwfefVPXQrEjwApvZwNDz1O7a8D4LCR35+MzzOMA0Jg2430+7yew0525tOGbmnJSX6mCthrb+xtl8sb7cVQ7q2WMER75tt11JYKALmeZOX7b0+nFdbuhwSnkZHz5B/QcBTlefYRse/AV+Us3dwWgWFTZthavEdkQO6xTwv2sqNyUGB21vCmHzzd+MSQ1WFlDAfyEGRlNeFE0VjWGI95ZkvTEDrd2rgQV9XglDNXVt37fzIm5NpQX6j9k9Qox7cFxetmiJJHf0izJNgKULlmLWnKx+8R9esZu4amyIOGszca8e2oef0doefRk1l7UyEmtfZxPETnO5hhGb6DdvV3bXE+IJ3VzaNvMp8 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV0P278MB0830.CHEP278.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230028)(4636009)(396003)(136003)(39840400004)(346002)(366004)(376002)(451199021)(186003)(55016003)(316002)(6506007)(26005)(9686003)(41300700001)(83380400001)(66556008)(66476007)(66946007)(66446008)(478600001)(76116006)(38100700002)(7696005)(71200400001)(6916009)(64756008)(122000001)(2906002)(33656002)(5660300002)(86362001)(38070700005)(8676002)(8936002)(44832011)(52536014);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: 6eqXkJVqwsqgyzMx05ht4x+xq6uxGrZKKsxrnAdXKp2iv+FOhq+ncdw9xpV9NgqbXXZKAHYSN73DZ4/CSmjDDdxcQgCWc4Lrc0O98HSnwk2vg6CB1mlEfLOTesea24h4F+oDum4kipD2r8c+hWFThFVMVbVw64mu2eYi7EDvnVVhcwAM/yKHpoFuLlMKF5wpbCN0vxgVtsrZOZHqPmEltN0QvYf86UomJ/pCG2TmXVMGp5oCv/zTahq1+yoS6ZlGCbH1FmBzNsWmZQwUrakkLD00H/6pEct2WamX0ICKuxbEdC1/5Yt22aTQWAdn1mbWzxlkB44vLkRfFTuTHwiwG/VDY5yyAGxR7kC9hvsLUJdYk4d+4bYKt/H+0aJP7vjZwDDtVteTzPzbukwFSrEIIgtUkf2Bdx2eZ9TBDrYB2CbeTZ6zWxFEMi+EKNmp40BASic9uCZH64zPQUs7rYhIdssJo0P4/qeIytzU4fJzCSkrtyUHQxbk6MYNOoYAjCsSG0UjcSfbA/CMmKtRqqpx3+Z9sQJfSMS7VRJ9bAB0lQVqC7451ty7iM+oto7VzJVjrj68lU+ResYZTBWxPvW6fR1S4EyU4+78g/WqdzdJuRx178nO2iIlj14SXRliPW855HT6Z7T/WaEEYzonX3vvsX0JTG5qXPqUTWzKpeebgClJQiCnRYcEHxea+Rtq9q7FKiFg8IqDvuYgrbDQZc9pBgV5mOGDUcx2hyWoE4TVy5SeQScNESB/qgjMQPapZrnBzhzWGScA9ZwcPFBPOedBcq+xEMS7ovfKr7jxyUx4aYIradYUzZyK9g8alc+GCxe+oHxkPp8I8Y5yxaFdkFxItrMcST/9Qmey3jbPmCFwVu8kobcHhgsaFOgZsRgrBfcWzxyVyCHJ3KAbhbAu/MypXIzn3TQfQkeSilp6if3a3nfh2pyPPDMmOxqH76+3YsRGiCkllGkoylXXTtx9b7/YdSk3CVncSYAh4QMeaxwmh22Czq7AJH1G4OsYkB7yd6+9uSYrZfHPwW52uu6qfSaDlvppRJTQ7udMzORh79jN3cyN371OTHckSNNo7gpyCejUyrKjpOWyox+9JXYVY3itU2CjMm2DLmkJD9zD+9vtYiWgvxT48Qcp/hkTGXTlk+Uu4HUhmw0CgAhiUwykbX+33nfPQ0G6iDDv3TDjR2OLiofyJoUzqMK5qqswXBErNn4pJ9SI57QDA7+fcd5oERmoA4waZVF+n85NnEVf3VwWLafDoxVm5hvZPF8Z8WVhZ5HRXq6jE9v9bItg9FCF98Ka87k3gzZxWLL2fvthzdDgJlQm5cEqzGdCCO1Q/Z5Zod5eBUe5WCiiDJoPsPfVwuTHO2BzGuy457vI02ZQZZfBUAvq0Oe0fxrqk09ntR16jmGVND+cyWrZ7kOoqpHcn6QvHmBpx1ZgFJXyvyNgD+syOsvbC5mEnJcArHBi0V+Of6XYHsOMUD7A/k8XaQLlbxFgy9+kL2qmR3PtU32X7MBuwQp3kPtcRNt9ymjOTfLfWbfCIDFZtG+R2JMoAXCeOruRBEWDIGQg7apIcKHzWiLXJ5fbw5qx4F2S9Bzn5lY10oJVsCEUEnm3+vWaGcdNsRtwcA== MIME-Version: 1.0 X-OriginatorOrg: konplan.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: GV0P278MB0830.CHEP278.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: d1014226-45fa-48e8-a717-08db4659392a X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Apr 2023 13:22:02.8072 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b76f2463-3edd-4a7d-86dd-7d82ee91fe05 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: cvLooX8jZUJoIPm/p6XkTuy/z9cBNSyIdCRte7aWuOiI8zc5co+ivNvoK8tb4zq7xjCvjff1186IYOmD8l+LsebLPXfeUekJqnOMiBFJih8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZR0P278MB1063 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230426_062213_053188_E4EAD276 X-CRM114-Status: GOOD ( 13.27 ) 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: Since version 2.10 the extended capabilities MSCS and SCS are advertised in the association request. This causes the association request to be rejected by several access points. Issue was observed wit [...] 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_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 X-Mailman-Approved-At: Wed, 26 Apr 2023 10:30:06 -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 Since version 2.10 the extended capabilities MSCS and SCS are advertised in the association request. This causes the association request to be rejected by several access points. Issue was observed with: - D-Link DIR600 - Tp-Link AC1900 - Synology MR2200ac To avoid this issue the extended capabilities MSCS and SCS shall only be added if the bss also supports them. Note: The extended capabilities are only included in the association request if the bss also sent it's extended capabilities (see wpas_populate_assoc_ies). This workaround exists since version 2.1. Signed-off-by: Sebastian Priebe --- --- Sebastian Priebe diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c index c3984a40c..aad049640 100644 --- a/wpa_supplicant/scan.c +++ b/wpa_supplicant/scan.c @@ -615,7 +615,7 @@ void wpa_supplicant_set_default_scan_ies(struct wpa_supplicant *wpa_s) wpa_drv_get_ext_capa(wpa_s, type); ext_capab_len = wpas_build_ext_capab(wpa_s, ext_capab, - sizeof(ext_capab)); + sizeof(ext_capab), NULL); if (ext_capab_len > 0 && wpabuf_resize(&default_ies, ext_capab_len) == 0) wpabuf_put_data(default_ies, ext_capab, ext_capab_len); @@ -667,7 +667,7 @@ static struct wpabuf * wpa_supplicant_extra_ies(struct wpa_supplicant *wpa_s) wpa_drv_get_ext_capa(wpa_s, WPA_IF_STATION); ext_capab_len = wpas_build_ext_capab(wpa_s, ext_capab, - sizeof(ext_capab)); + sizeof(ext_capab), NULL); if (ext_capab_len > 0 && wpabuf_resize(&extra_ie, ext_capab_len) == 0) wpabuf_put_data(extra_ie, ext_capab, ext_capab_len); diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c index 51bc44246..ef62ab9df 100644 --- a/wpa_supplicant/sme.c +++ b/wpa_supplicant/sme.c @@ -912,7 +912,7 @@ static void sme_send_authentication(struct wpa_supplicant *wpa_s, wpa_drv_get_ext_capa(wpa_s, WPA_IF_STATION); ext_capab_len = wpas_build_ext_capab(wpa_s, ext_capab, - sizeof(ext_capab)); + sizeof(ext_capab), bss); if (ext_capab_len > 0) { u8 *pos = wpa_s->sme.assoc_req_ie; if (wpa_s->sme.assoc_req_ie_len > 0 && pos[0] == WLAN_EID_RSN) diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c index 651c0ce9e..ce9d6f742 100644 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c @@ -2077,7 +2077,8 @@ int wpa_supplicant_set_suites(struct wpa_supplicant *wpa_s, } -static void wpas_ext_capab_byte(struct wpa_supplicant *wpa_s, u8 *pos, int idx) +static void wpas_ext_capab_byte(struct wpa_supplicant *wpa_s, u8 *pos, + int idx, struct wpa_bss *bss) { bool scs = true, mscs = true; @@ -2128,6 +2129,8 @@ static void wpas_ext_capab_byte(struct wpa_supplicant *wpa_s, u8 *pos, int idx) if (wpa_s->disable_scs_support) scs = false; #endif /* CONFIG_TESTING_OPTIONS */ + if (bss && !wpa_bss_ext_capab(bss, WLAN_EXT_CAPAB_SCS)) + scs = false; if (scs) *pos |= 0x40; /* Bit 54 - SCS */ break; @@ -2150,6 +2153,8 @@ static void wpas_ext_capab_byte(struct wpa_supplicant *wpa_s, u8 *pos, int idx) if (wpa_s->disable_mscs_support) mscs = false; #endif /* CONFIG_TESTING_OPTIONS */ + if (bss && !wpa_bss_ext_capab(bss, WLAN_EXT_CAPAB_MSCS)) + mscs = false; if (mscs) *pos |= 0x20; /* Bit 85 - Mirrored SCS */ break; @@ -2157,7 +2162,8 @@ static void wpas_ext_capab_byte(struct wpa_supplicant *wpa_s, u8 *pos, int idx) } -int wpas_build_ext_capab(struct wpa_supplicant *wpa_s, u8 *buf, size_t buflen) +int wpas_build_ext_capab(struct wpa_supplicant *wpa_s, u8 *buf, + size_t buflen, struct wpa_bss *bss) { u8 *pos = buf; u8 len = 11, i; @@ -2173,7 +2179,7 @@ int wpas_build_ext_capab(struct wpa_supplicant *wpa_s, u8 *buf, size_t buflen) *pos++ = WLAN_EID_EXT_CAPAB; *pos++ = len; for (i = 0; i < len; i++, pos++) { - wpas_ext_capab_byte(wpa_s, pos, i); + wpas_ext_capab_byte(wpa_s, pos, i, bss); if (i < wpa_s->extended_capa_len) { *pos &= ~wpa_s->extended_capa_mask[i]; @@ -3469,7 +3475,7 @@ static u8 * wpas_populate_assoc_ies( u8 ext_capab[18]; int ext_capab_len; ext_capab_len = wpas_build_ext_capab(wpa_s, ext_capab, - sizeof(ext_capab)); + sizeof(ext_capab), bss); if (ext_capab_len > 0 && wpa_ie_len + ext_capab_len <= max_wpa_ie_len) { u8 *pos = wpa_ie; diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h index d5b3dab67..60b17ee3d 100644 --- a/wpa_supplicant/wpa_supplicant_i.h +++ b/wpa_supplicant/wpa_supplicant_i.h @@ -1649,7 +1649,8 @@ int disallowed_ssid(struct wpa_supplicant *wpa_s, const u8 *ssid, size_t ssid_len); void wpas_request_connection(struct wpa_supplicant *wpa_s); void wpas_request_disconnection(struct wpa_supplicant *wpa_s); -int wpas_build_ext_capab(struct wpa_supplicant *wpa_s, u8 *buf, size_t buflen); +int wpas_build_ext_capab(struct wpa_supplicant *wpa_s, u8 *buf, + size_t buflen, struct wpa_bss *bss); int wpas_update_random_addr(struct wpa_supplicant *wpa_s, int style, struct wpa_ssid *ssid); int wpas_update_random_addr_disassoc(struct wpa_supplicant *wpa_s);