From patchwork Thu Mar 1 11:49:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitrii Lebed X-Patchwork-Id: 879785 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=quantenna.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="JoHZYM5Q"; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=quantenna.com header.i=@quantenna.com header.b="KdgKE3RS"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zsW6f0PRjz9s1S for ; Thu, 1 Mar 2018 22:53:46 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=01ezXIakI8IAX9B9h63MFjtqUe75ZAv8496n2czkK1U=; b=JoHZYM5Qty4/GK 3KOY8C0YpuxvWwigqlTSZYCJkNpmzSlo4rdFVkKtH1UhCzZhV3an1mvVhL23oom6dNhRB6Dggys5n 1TcwZlw8gthCkf4/xx83Bpn61TsFWIg0leL9F9x0fZYNhXRsBp/Oo1otFn2BnZRzROnvIQCsbV8rX ZABbqPD/VX2RYRpiKKxUR4KVVgTv1eQQcKHdgXA1c6DGCzCVGlBMPsAM/HZutB05LI9ADQSryQxYz ay2Bjo+YDTkLvsv1KgucM+H2TKLzhKM2G4YZKFy6HmjnxIjdzzuhrfiyNaayIqh/GIt6Vu/a7NgxO qoJ/SH0WdWgGWhGuJZ/A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.89 #1 (Red Hat Linux)) id 1erMmA-0003KR-QT; Thu, 01 Mar 2018 11:53:30 +0000 Received: from mail-sn1nam01on0089.outbound.protection.outlook.com ([104.47.32.89] helo=NAM01-SN1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1erMkZ-0002H9-Lg for hostap@lists.infradead.org; Thu, 01 Mar 2018 11:52:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quantenna.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=mxYCZIBeJcIc3NzEyXRpMkSBIxJq9KGUCeUDxdzui2k=; b=KdgKE3RS8H3+8vI3UfRzdubBAGIQPyTfaA36khLhVK9b3y1q8jkjIPYabMqKDceBkVOdPjCUTPp8qvaRxwzcCiVDKZI21HSL5pySsbT3gPxjL5RdoRANlXTU2Biyn6HeDqoUdBUD7Bv+hc5oODUsOQ0nMWDgKKf0A4mltIRHn9I= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dlebed@quantenna.com; Received: from dlebed-laptop.quantenna.com (195.182.157.78) by BY2PR05MB1925.namprd05.prod.outlook.com (10.163.32.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.567.6; Thu, 1 Mar 2018 11:50:18 +0000 From: Dmitrii Lebed To: hostap@lists.infradead.org Subject: [PATCH 4/4] DFS: add supported channel BW checking Date: Thu, 1 Mar 2018 14:49:29 +0300 Message-Id: <20180301114929.420-5-dlebed@quantenna.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180301114929.420-1-dlebed@quantenna.com> References: <20180301114929.420-1-dlebed@quantenna.com> MIME-Version: 1.0 X-Originating-IP: [195.182.157.78] X-ClientProxiedBy: AM0PR0402CA0036.eurprd04.prod.outlook.com (52.133.42.177) To BY2PR05MB1925.namprd05.prod.outlook.com (10.163.32.139) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fea09b12-bd83-49b6-4f21-08d57f6a9bb5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603307)(7153060)(7193020); SRVR:BY2PR05MB1925; X-Microsoft-Exchange-Diagnostics: 1; BY2PR05MB1925; 3:pbV8jD7piJq8Wc7EnxjSqEDvI0Xs3Z+aKZ+X8zBVE9NdG1TpnFGRqslvAOdHLRfbGZxX+sXRQ1omu05MKSWGFiPyvpZrQtEvXMRvRTnooryjqTsUm1AnqF4bic/RyLRZTxgBuNaq9ntv3kYiT0HsdAwabCZsfjbsBI4lKgS2AiUYplhopNzaXiLIt1QvaSQY6YMV8YXeb21CdlNPTuUsycnTiD43A0uQgPKh/rcE22yTlakbLtD89Ri0BKxkwF/L; 25:5D3q8vW072MIn+onfvUYaOISpfWquGUCHJh8F4S/xSjht5M/ZaSDnUyfyU14SabIjgj4LoZ6kjc2yRAAy2SCS8PFKkKZ1pQ6mXc1PMjJ7c4okkdbOVJmB3TkxWOY7HDpCB5BLh8MtTWOrqWYi6tPKJMTWxNqTKLBcDFWJlRtqebCUfc8PTTc0se8zgyRV5Zzg+p1kOhUfxySiDBM8NvN9XPymrI4HsP+UbkK55YZoqO8f763ENOTrOhDPWvNvTHzbQySpkwOy7MTc6lz2T34ZrhNswz76tlwCPL1GDjM3vqwj1HpqAUHMAKh1RG6Gj1yKLfaBiqJJR50o0SoeE5B/w==; 31:0Gg769yh8yMxGQdCSj4tfFojZ2J0zJyJx71ZxC6OXrOnlXsHT1qK3FqHIIE7zAsl9vTM1VtSaw+q4GG7EiS8lXiUqyGDwlq6L9kV7jYFRJ+gMFerkgRCqd0R70EJOBP1O+OrdeOJ5Skvug3eaGIHBytrnQs70xU46SEODxOLgQA9HtriHhJDp0oJwatAbuvMTyFeQcL0DMH0XIPb82oXaCkeGLrzMV+meTWyig0mJuM= X-MS-TrafficTypeDiagnostic: BY2PR05MB1925: X-Microsoft-Exchange-Diagnostics: 1; BY2PR05MB1925; 20:8IRMnNIpX+e2Ic0k3xhW9AV5e4IBsd4gKLP+o/k4QD917Fdgcz9qDS9xo0yR9GLBkFVtQV6ixzpv5f83K3oGnRhdpUtrUsTjzPvWEVj59sF3+RnyEQZfHo7HYHSA25Z6k/1/UCoHSZBmICCjg0PI0VXE1copCajXrAbVrMpWeGmyAVpX0lEBd0cE3KPFNKzALIMYN0HtDVrpIMitAO+Ieqydvgl3avjPbJTxn2RJacemK1KYBNOnpkJvKoDjSF9OhSqBwAIC0yCgSG3qZPAnJFeGTihfI6jnyTGi1xatuld0+qfhikVCtzXiWmK5EQB0E8aShkxwJVovQ+65/KAcn/mSBODjBj8Vgn9R72BRVZFQmDqRsWUYuxIGISFMqtOQK/fYUhbMiHuNFPrYjSNPP1X6lfn7CHasSP5zkU2nSULq8XF9Z5a4ApCacrEFIqEEjHNdbOP57zST6RnvYkuq5fR4A3UHrVa5Li7Fyb3cv5JvYQF/a6jd6aY2V54KAmfa; 4:ncjoDNKZC9G4PzF6wGmpEsXwcrxHSSUijpoJmkLMulb8x/HrzObMCD4/NDByh5/xt6TyAQIF9CdEzIO3FnxovyuqrwYOcCxIm7RURGQ697mNkDItMJEUOr/74gTlbx8MSpsG7LhEvwaq8XpvGJ40bOU5flQM9jFRE0yA0iiS5toF6fBU/tSp5PMox6VGN6+sppBoDrhWUmitr7cEpns8DWQ+XosQRvBKWgJwEPyTkKfPzMpnIlhH2WEIPDB5g4UxEjJAmtgXmsgCO1j7it0+lw== X-Exchange-Antispam-Report-CFA: BCL:0; PCL:0; RULEID:(3231001); SRVR:BY2PR05MB1925; BCL:0; PCL:0; RULEID:; SRVR:BY2PR05MB1925; X-Forefront-PRVS: 05986C03E0 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(189003)(199004)(2361001)(6486002)(5660300001)(5890100001)(107886003)(50466002)(48376002)(8746002)(7736002)(8936002)(81156014)(51416003)(52116002)(76176011)(7696005)(305945005)(50226002)(8676002)(106356001)(1076002)(6116002)(54906003)(86362001)(2351001)(3846002)(105586002)(68736007)(47776003)(386003)(66066001)(6666003)(6916009)(59450400001)(2950100002)(4326008)(97736004)(16526019)(186003)(53416004)(26005)(69596002)(36756003)(25786009); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR05MB1925; H:dlebed-laptop.quantenna.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: quantenna.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR05MB1925; 23:KpSNkhuwHIOSP4Xu55hADCjCrCtP27Z4Ic4a3qq6r?= tMq7+QWiTAQHHrAI7Jve9Ugojhmlu409fstacyE+Ykk+7pdshSd13IESGBsj5xT50QCENnkct1uMRW8BIsfAQ8BJiJ742r6H6wtRB7UHtYcvEeKXEETDfQ92oLZu0rE2R0HK/C6j4rv6BCJONspP6noENHJoq5wrXtlBHYu8HSCYjz8PyJ0w//DAjZXkn3qtFTonAMIHWKMJgmGwMBFZn3KzeDpqQU+FZA9Nlz9Q9l0BwmZ+KLMO3kTbCqZPl+OMUjp+lMRvf9++Z1bzTDqK3J3FHZvuQYa8Jwsg3BR14E2a5CcBKFjDGWgydGJ5aa0cvuBOcQXni0b54i4ZGhQQT3Jk67wdqi7e7kE6j0C5i7e8zHM999tBwi51BdUTFIH6IcyClHPXxfhEALEI6LL834K74dWG5unhorjkkMPlCXO3ahRO/V9aSrv7jyNphtbbnlrELCXtft6Devs1ShVJYRMUmDs21L5PcGJqKs7opW5xv6g68zh0xQ38aJgK5TvOMI00XJpC5Y9i9EcN1WQLCNb2skC1eWQBIyNx2Q3aCQAupH1XjnsmFcVnAJSUz395a4pcu+b+8HTnAA8sr/r9d06eHG27VOjY9faltKaQ0UnJbCJEs1mitoZAQYUcZBk1IyBst87JAVlf/73/02I05jL+U0x9WgUR7OXpn9yDR3v9FJ9ysydzO6PRQPww7KOqP3mQHc1WVhUKELHcryIUykhcC6/5HhX1OMV0t0lhjTckECrbU+6lWMLCmdcrKvlPE+WwuI/DQOyqdQFHePT/67x9RWkzrZwxX+xeCyj0l6hsufUOFi90Zts3k58fr9o46zuPnYLotN9m9lM+yOXtJIQZTQHE/ELoeHpDPFTTEVOIMHIHzG/vXnKB+/DlL1DVGjVrMsPWukIuUa7tyatGhL4JcHX5QL3f7HPdCweXOhHPTU6ogCJRjumXR9RrDClu6dEA/EhynYypb+SCcv8wqoDNZ6dQqSQOvxAwAlMmnllgFScsvXiGo+MOWOfzZCuuy38lmca/NraFYztgsZ2ITTV X-Microsoft-Exchange-Diagnostics: 1; BY2PR05MB1925; 6:Jar+Ixv/00DG7q+YcJdIjWW2b3XFtA2CWQLqsgAgKPxy0RoRGYRA6iFk4WOYHCuQRaLw1ZhifcYSL4ExqA5qmlnSMsT8c1SF1dqHbXBJb5KB6u1ZQgDojUy8pETnhrectPkXiJ+VJHKldC+HqqARXUKK3yUVBjqogezsgQxXmpRypgsUmcEPRg3PwM8ZMEcIgl4ImJMu6LlhtV6tHtb5q6xojbCCydnQpoeCTS23JAz/bso1otXxsN1iR0XCz63fk8WQgyenis3n4QtcHgzfdp/VNBiKr3VR3PYl0KB2rhw3/+Ljpme/9MFVVqTL8ynsT2pwatygwCxLD5DJj2+aXZWQfBRBN7rCI+fmWtQe1gM=; 5:6vKKH9iwPrmfFPOnkyZZjUVI7dfmD4P6LKr+UPnvTxVcjcn5A0eq601Cb/gDN35SJsTOURu8sHsiDdJxy0pa77tCEs+en9KYo9jCTWxkYkYgEhZI+KgTPWTtiYNwRkR0EmMmbpXCtTtCGhv+szS+wRbcCDLHWZ7qOycHKRUEfEU=; 24:oRChzwXZ3zsaNyI6grMjwEiWJHWRliXABIQ+LknceiNzp+0sgZs9ZEeE4BjodKR6kEwH1UzwaqwFGmLoWj06c47YwTppq5i/cDTZWxIcaXE=; 7:/1i57YqNEbUbeWH/3qeCJ4Rj7KVGD1jr1WIMDIn/24MhWsojyTkN4W3/XkK9dNJMoraXKeCxm1YVfRNmam2vNSODputDymsylZsmqrnsAlyU0Xy/N0YsVRmMPJWTyFFbvNczjY3gkBF7ZBwVradbUfmPdzG6Gn/L96ghXprW4t6jX3JzUkHyq1nm+p/V54KnNYl3DFCrq7jV3s9fwbBEr0/FWwN4RDfLMFBm8MsPMw+T0YESPjTDz789nbgrJxvk X-OriginatorOrg: quantenna.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2018 11:50:18.1050 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fea09b12-bd83-49b6-4f21-08d57f6a9bb5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a355dbce-62b4-4789-9446-c1d5582180ff X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR05MB1925 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180301_035152_654146_50C9FCB5 X-CRM114-Status: GOOD ( 11.47 ) X-Spam-Score: -2.0 (--) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-2.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [104.47.32.89 listed in list.dnswl.org] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -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_AU Message has a valid DKIM or DK signature from author's domain X-BeenThere: hostap@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Andrey Shevchenko , Igor Mitsyanko , Dmitry Lebed , Sergey Matyukevich , Sergey Maksimenko Sender: "Hostap" Errors-To: hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Dmitry Lebed While selecting new channel as a reation to radar event we need to take into account supported BW for each channel provided via nl80211. Without this modification hostapd can select unsupported channel, will fail to use it and eventually will halt. Signed-off-by: Dmitry Lebed --- src/ap/dfs.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) -- 2.16.1 This email, including its contents and any attachment(s), may contain confidential information of Quantenna Communications, Inc. and is solely for the intended recipient(s). If you may have received this in error, please contact the sender and permanently delete this email, its contents and any attachment(s). diff --git a/src/ap/dfs.c b/src/ap/dfs.c index 8c56cbb96..f2c115ca5 100644 --- a/src/ap/dfs.c +++ b/src/ap/dfs.c @@ -143,18 +143,30 @@ static int dfs_chan_range_available(struct hostapd_hw_modes *mode, { struct hostapd_channel_data *first_chan, *chan; int i; + const u32 bw = num_chan_to_bw(num_chans); if (first_chan_idx + num_chans > mode->num_channels) return 0; first_chan = &mode->channels[first_chan_idx]; + /* hostapd DFS implementation assumes first channel as primary, + * if it's not allowed to use fist channel as primary + * then decline the whole channel range */ + if (!chan_pri_allowed(first_chan)) + return 0; + for (i = 0; i < num_chans; i++) { chan = dfs_get_chan_data(mode, first_chan->freq + i * 20, first_chan_idx); if (!chan) return 0; + /* HT 40MHz secondary channel availability checked only for + * primary channel */ + if (!chan_bw_allowed(chan, bw, 1, !i)) + return 0; + if (!dfs_channel_available(chan, skip_radar)) return 0; } @@ -195,9 +207,9 @@ static int dfs_find_channel(struct hostapd_iface *iface, chan = &mode->channels[i]; /* Skip HT40/VHT incompatible channels */ - if (iface->conf->ieee80211n && - iface->conf->secondary_channel && - !dfs_is_chan_allowed(chan, n_chans)) + if (iface->conf->ieee80211n && iface->conf->secondary_channel && + (!dfs_is_chan_allowed(chan, n_chans) || + !(chan->allowed_bw & HOSTAPD_CHAN_WIDTH_40P))) continue; /* Skip incompatible chandefs */