From patchwork Fri Dec 16 19:10:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wang X-Patchwork-Id: 1716639 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=Yori74kt; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=QH12H8Er; 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 4NYdxX6T0rz2403 for ; Sat, 17 Dec 2022 06: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=t1G+XJvrA1kxqZSy9HxnRVq1QNuD/RXnlwl43XEZ1yE=; b=Yori74ktx1Mn/X mtyyy68jQoLV8/LVvYRzGaFsUSsfnxApX2gqcAUYOepSN0oepLyzDbODeIkKE08q+aMH345GxpYwx LZWIsd21U0X4myPXpnKrVlyHBwHhkoAh/Hcbi2JR9LlI0AEEtr5CMBUGiBXlai9aeSyk6xIgbMeKP rAS0jKT71g72aU340xQ+u8ZucHTJ9UYkpPPI3evYOaqhzsp+Y4wVP8IunJh4wQaMWGZ998NznyZkJ tlpTUL/PiqRNK/bBrBoNYoCLTXrXwGZ3V84Yntf4xUqIQ1a0D1Z0FTs04nqiepaNra1VnD4nCaKhy qTNAv3vTY1Htnn/VeWjw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p6G6N-0005Ml-Uj; Fri, 16 Dec 2022 19:10:36 +0000 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p6G65-0005I7-TS for hostap@lists.infradead.org; Fri, 16 Dec 2022 19:10:19 +0000 Received: by mail-pf1-x42f.google.com with SMTP id x66so2425193pfx.3 for ; Fri, 16 Dec 2022 11:10:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+bGP6DoYAcEHDiro/a9GrfZsBOxY9BWN3GgtgE2JxX0=; b=QH12H8Er2yF+O5yIA35dWB1apf8bA1eHNqgLqO3fAHPeiAlY+3lXFlFlYVyvoHUzO1 oL7usX8UljIkurHx1qb1/3mgec4fEOBNNAJZl7viodP4tk9/W9NsKA/AMx87+kmnpDVY XrmsTVQRDmbfIDhfnIDSigScn/79T/rR91FrQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+bGP6DoYAcEHDiro/a9GrfZsBOxY9BWN3GgtgE2JxX0=; b=rcqopJaBnhrqk2ejWu5OdApQzLD8QvXcohh1LamAF4nn3N4+ybXrlkNSCnVu22yqEE 0iD3yOK36X8sM/luFd3/9bBcEBUSve3HToZ7PKdmFdPI3NDOGy6ttYB+kTVGDs+HDPT1 mmg79pm+B33ICCwEEy0NcOgpAjmCPnoweHl6tWu7ysFKiOOCmfJ5Jd2kA1zbLTsvpGb5 NN0EumGLZ+gctu+Hz5N3Wev6uNF0nYwTHCENn0/+lbicXp0NT2cL0CgscVUAO2x9ntdi rg8JFflr0JIJylOZdOCPuH18HQEsCiNUj3dbgbGQaVGAlit4rEbA7Sg+q/w1gVRRrjAD sHAw== X-Gm-Message-State: ANoB5pkABeYBGVHzUO7FrY4todWgboscFJbTjaCl1ik0aMCjSUE48ubf h78mvrHj8r/Aog/Std4Onxy3N2cGpVxw64FK X-Google-Smtp-Source: AA0mqf4uyD1aMMJdNI33jKAZtuRoYaiZUqWqrjU1ne3/5h6Wh/PMwB09Ip2L24gWfltSZHqlP9MpVA== X-Received: by 2002:aa7:96ab:0:b0:576:b8d0:6034 with SMTP id g11-20020aa796ab000000b00576b8d06034mr34792515pfk.31.1671217816817; Fri, 16 Dec 2022 11:10:16 -0800 (PST) Received: from matthewmwang2.mtv.corp.google.com ([2620:15c:9d:4:bdec:6b92:cbd5:13be]) by smtp.gmail.com with ESMTPSA id y4-20020aa79e04000000b0057555d35f79sm1830588pfq.101.2022.12.16.11.10.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Dec 2022 11:10:16 -0800 (PST) From: Matthew Wang To: j@w1.fi Cc: hostap@lists.infradead.org, matthewmwang@chromium.org, Matthew Wang Subject: [PATCH v2 3/3] P2P: support preferred GO band Date: Fri, 16 Dec 2022 11:10:02 -0800 Message-Id: <20221216191002.663923-3-matthewmwang@chromium.org> X-Mailer: git-send-email 2.39.0.314.g84b9a713c41-goog In-Reply-To: <20221216191002.663923-1-matthewmwang@chromium.org> References: <20221216191002.663923-1-matthewmwang@chromium.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221216_111017_975509_422F3D20 X-CRM114-Status: GOOD ( 16.41 ) X-Spam-Score: -0.4 (/) 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: Matthew Wang Allow specifying preferred GO band in addition to frequency. If a band is specified, the first two scans will be limited to only non-DFS channels to shorten scan times, and the next two will scan the [...] Content analysis details: (-0.4 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:42f listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO 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: Matthew Wang Allow specifying preferred GO band in addition to frequency. If a band is specified, the first two scans will be limited to only non-DFS channels to shorten scan times, and the next two will scan the entire band. Signed-off-by: Matthew Wang --- wpa_supplicant/p2p_supplicant.c | 8 +++--- wpa_supplicant/scan.c | 43 ++++++++++++++++++++++++++------- wpa_supplicant/scan.h | 3 ++- 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index dc240140d..c9b32210e 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -342,15 +342,15 @@ void wpas_p2p_scan_freqs(struct wpa_supplicant *wpa_s, bool include_6ghz) { wpa_add_scan_freqs_list(wpa_s, HOSTAPD_MODE_IEEE80211A, - params, false, false); + params, false, false, false); wpa_add_scan_freqs_list(wpa_s, HOSTAPD_MODE_IEEE80211G, - params, false, false); + params, false, false, false); wpa_add_scan_freqs_list(wpa_s, HOSTAPD_MODE_IEEE80211AD, - params, false, false); + params, false, false, false); if (!wpa_s->conf->p2p_6ghz_disable && is_p2p_allow_6ghz(wpa_s->global->p2p) && include_6ghz) wpa_add_scan_freqs_list(wpa_s, HOSTAPD_MODE_IEEE80211A, - params, true, true); + params, true, true, false); } diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c index cdf12f938..9128fafd0 100644 --- a/wpa_supplicant/scan.c +++ b/wpa_supplicant/scan.c @@ -476,11 +476,33 @@ static void wpa_supplicant_optimize_freqs( */ if (params->freqs == NULL && wpa_s->p2p_in_invitation < 5 && wpa_s->p2p_invite_go_freq > 0) { - wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Scan only GO preferred frequency %d MHz during invitation", - wpa_s->p2p_invite_go_freq); - params->freqs = os_calloc(2, sizeof(int)); - if (params->freqs) - params->freqs[0] = wpa_s->p2p_invite_go_freq; + if (wpa_s->p2p_invite_go_freq == 2 || + wpa_s->p2p_invite_go_freq == 5) { + wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Scan only GO preferred band %d GHz during invitation", + wpa_s->p2p_invite_go_freq); + enum hostapd_hw_mode mode; + if (wpa_s->hw.modes == NULL) + return; + mode = wpa_s->p2p_invite_go_freq == 5 ? + HOSTAPD_MODE_IEEE80211A : + HOSTAPD_MODE_IEEE80211G; + if (wpa_s->p2p_in_invitation <= 2) + wpa_add_scan_freqs_list(wpa_s, mode, + params, false, + true); + if (params->freqs == NULL || + (params->freqs && params->freqs[0] == 0)) + wpa_add_scan_freqs_list(wpa_s, mode, + params, false, + false); + } else { + wpa_dbg(wpa_s, MSG_DEBUG, "P2P: Scan only GO preferred frequency %d MHz during invitation", + wpa_s->p2p_invite_go_freq); + params->freqs = os_calloc(2, sizeof(int)); + if (params->freqs) + params->freqs[0] = + wpa_s->p2p_invite_go_freq; + } } wpa_s->p2p_in_invitation++; if (wpa_s->p2p_in_invitation > 20) { @@ -738,7 +760,8 @@ static int non_p2p_network_enabled(struct wpa_supplicant *wpa_s) int wpa_add_scan_freqs_list(struct wpa_supplicant *wpa_s, enum hostapd_hw_mode band, struct wpa_driver_scan_params *params, - bool is_6ghz, bool only_6ghz_psc) + bool is_6ghz, bool only_6ghz_psc, + bool exclude_radar) { /* Include only supported channels for the specified band */ struct hostapd_hw_modes *mode; @@ -763,6 +786,8 @@ int wpa_add_scan_freqs_list(struct wpa_supplicant *wpa_s, for (i = 0; i < mode->num_channels; i++) { if (mode->channels[i].flag & HOSTAPD_CHAN_DISABLED) continue; + if (exclude_radar && (mode->channels[i].flag & HOSTAPD_CHAN_RADAR)) + continue; if (is_6ghz && only_6ghz_psc && !is_6ghz_psc_frequency(mode->channels[i].freq)) @@ -786,13 +811,13 @@ static void wpa_setband_scan_freqs(struct wpa_supplicant *wpa_s, if (wpa_s->setband_mask & WPA_SETBAND_5G) wpa_add_scan_freqs_list(wpa_s, HOSTAPD_MODE_IEEE80211A, params, - false, false); + false, false, false); if (wpa_s->setband_mask & WPA_SETBAND_2G) wpa_add_scan_freqs_list(wpa_s, HOSTAPD_MODE_IEEE80211G, params, - false, false); + false, false, false); if (wpa_s->setband_mask & WPA_SETBAND_6G) wpa_add_scan_freqs_list(wpa_s, HOSTAPD_MODE_IEEE80211A, params, - true, false); + true, false, false); } diff --git a/wpa_supplicant/scan.h b/wpa_supplicant/scan.h index 6e074f48a..30f43951c 100644 --- a/wpa_supplicant/scan.h +++ b/wpa_supplicant/scan.h @@ -92,6 +92,7 @@ void wpa_supplicant_set_default_scan_ies(struct wpa_supplicant *wpa_s); int wpa_add_scan_freqs_list(struct wpa_supplicant *wpa_s, enum hostapd_hw_mode band, struct wpa_driver_scan_params *params, - bool is_6ghz, bool only_6ghz_psc); + bool is_6ghz, bool only_6ghz_psc, + bool exclude_radar); #endif /* SCAN_H */