From patchwork Thu Mar 1 11:49:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitrii Lebed X-Patchwork-Id: 879779 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="SS4J5YZB"; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=quantenna.com header.i=@quantenna.com header.b="yiyfYosh"; 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 3zsW482ws9z9rxx for ; Thu, 1 Mar 2018 22:51:36 +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=Lk920xr4bESrfIkHNkwxUWJNbJYWveUBLNFxmMqpzSA=; b=SS4J5YZBn17jvl uhpESKoxrm5oGj2P22Xhb4L2GtTQA2J7+VM79MMy+goytkVnlDuYNRVkSpvFIrnv3+cAbndpSc1sP kAvr/LqlYXJiohuQ/R9TZHJRGpC2JdlI/D6EBFl4FbNs64WcpoP4lqi3zbiQMzYw1S1JbClAjszyh G7nxikQf3KjwdCRreajVrJ8EsP2mwCeTKQJhpxTh9ere2bS6nHtIEs2e77Tn4dwNNJpBeHoSj63vm 8EsgXh1c5UOIPqThzJS1jeT7fQ+WubOQFa3EmUM04GXTIk/3FqiFYT4cVbsHo83/GVObRgwrta4fA /hb1goHKog8/Iy0sIy/g==; 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 1erMk0-000208-5s; Thu, 01 Mar 2018 11:51:16 +0000 Received: from mail-dm3nam03on0045.outbound.protection.outlook.com ([104.47.41.45] helo=NAM03-DM3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1erMjE-0000at-Lv for hostap@lists.infradead.org; Thu, 01 Mar 2018 11:50:36 +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=Wq+WvWTwyDGTOP7GA10kWyxjy2n2YJbSu9/f/HZcd3c=; b=yiyfYoshvZ1IbwsS2oEQUIJbah23m8nqvVTF9REuE72Z2N60sJrI3d/tjEQHlyHZbO5qSTAViUPwwXfe2EKj/GkE/1iwi9cPSqVHKKzCC731yB64cNppdQ22MmyawLrB7HbNMWCvoOG6txZl9B3I4MVYVN3MeMt97jc7nO17F58= 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:11 +0000 From: Dmitrii Lebed To: hostap@lists.infradead.org Subject: [PATCH 1/4] nl80211: add supported BW parsing Date: Thu, 1 Mar 2018 14:49:26 +0300 Message-Id: <20180301114929.420-2-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: 2c0a8261-ecdd-4a02-3975-08d57f6a97d2 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:zmTa2tLDbvJ+18G5UCYbuV7jG2V8CccI2zNBdc0ktIBpWMhbXy62rIUPbNhtG16QIVVAO9MjA+9jHl5cah06VbdIX//sKPAnTN3FFnoezankk53OEHHWJe82lCDe5ASYy6N9zZEyuEwJMw0Pf53iWURnJT4W5OZnpMQMu1DZVpkeyvj9UFRIQRe3RhYCxHAsYy2FN4z/UsnJrmrWiKATXJVRXtYqe2GMctP4cK9zwUHfRe/7zt1kxfJE3jgEgo94; 25:2ZYtAbMNVBqcaUvkMYMoov8iWVPdQGf81O7V3lSQGPLm19kjFkeeILAx2EJBu6ZSMs4LTU9GnOEepf0hRp5HvzP/JRnhZs8UiLFgmjAv4KOOB9xf+f6xn9tslThBJZ0fX5Tkb2H5Z1bAZ/aLpN9PQw30wVoUzXkC+FXvqkxJZAN1MzjMhLS5/bz+U/leHsn4wgkIWvMZtTcWk2HorZwxUuP4/PknwsRWIDsiWxN9xELSb7qZUu606FTbVCBNccaimKbpvQGrEk/AY6gpUyE4YZAqPc4jTNeURnA3VB7wC758STq4nwHKtydUCB7ncw8HOxZENX4A67VKNfgXTC6HcA==; 31:X0GHSuGpNZm6LGe4hGtHNfldr3t0O8FhZOKmlsPSs+8Ab/NjkK+0lgCgJ2gRmU/6rctKpUsyv/RMQblqKOo1WXvuRr4eC0aLzomCz+7IlMi8Mvp/B4Wk5/eI4t89pIqz86Zaznm8M05pq83ir2EamCimgisJEN/ygFbPaBSP4IKl08XKEA3cRB7CtnvX3fAqt6lins18ig8sBiQazwvKZ9ipQ/yO8sXs5uaztrId/uU= X-MS-TrafficTypeDiagnostic: BY2PR05MB1925: X-Microsoft-Exchange-Diagnostics: 1; BY2PR05MB1925; 20:aMiAg5Z2Op7/fNXojnr5xiQwK3R5sD9S+2ZSy2DelCRMnF2DE/d6PTTkH/DwQHgQdOT++JWgYS/1rLdkMqzavIkXfdmN2rP+QBLDOM/u6ZMitM5FQn8wS9eM4RQW6oCG7rCkIKGsVqrSpKY351M3RFmMmYCL/lvuPscCJD5+3xQtS14unc6bvyCsBbrMfuD/g8JvzIzL2hFpg2kMi7s6ibrdhJKi6aaSHIEnNAs8VbXpQILIy22hGlpOwtMUTXVf+NfqhtC2xY4jrg/2RuATlc0QWwgdATQA+Cv+QJ41K9FGzNr8JhotNziz+VPA7TjkdrswzzDIZsDifFw1W9fbHoOm4QizxQWm1yYpVBzSGROlpMSICRDTgbdPK95BYiKBwuQUobZ9TE+UPpWDh634V1opKBBntVSliPl/dYEMRlSXLPzSUSO9M9lE4nj/yQXY17SMLUw7L3+3aB2liNnN9l2Fd6avCUYqS+dmf7RG4JHrsXZSSXJwSmvwGBt/o/H0; 4:jy9Z+XPLEv3JWc26IdsyjfjbVBXJwscAlatJy8+Aj6CM63VTf+36QwffOKU/piDMYLW0mv+2nXj3NRRYclM7136cotkJmSOJYga7ZjQFFSgZB8PozIf/DA2BH/Cw9eeJQBdiI4jzxQ3j+hta71OabrcuG8D+we+xRPe6m7Nn66pzwp8MA1fT61bZxfN89JbiFDs8Vls90Cfa7OqQCSGgayDRTYprixl7NF+5+aQjiAYQ96VzgK1Mf3A+PYaH/hwA8ntIrDhi4OqywQJTMz8e8g== 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:o0HvFtui1v0z9rMuAdQvfY7PFuiOj7bGDzzuQPi2k?= MpY/8WYvQ1TGN57yR16s8zwl3BdtLJuWi0Ew0fk52JZtpFH3eRDa3yzOxZPZF5nBR/XCrdk7HujVyP1vHCFTUWCuzrgOKpftAeIJXBBTuFoXstah3M8utQuvfiKB02+TnB2mR83d3ogZKwFa8+TJAlM7r/rXnHoju9QJAzM1q9wce6aK1S19X3FctIJGCrkXjNS6nJkU5gOM8ersHNWcmX63wfgvCqPsYMokQ8KDZWWHKPXBJLsfnxdtHXU9PHyeJQ5n+I7Km/MdU8BLj2cq9fhgqc0QcwfrYTefMqs7EEBAHwy92fgNYvq9MJ7S6R5v52PljF8efxbIsVyuUgzG3etKJvLn/K+6Ok3e5nJIc5C6znGT1ODHDFO8lXX929NIx+Kcj3bl0USfIqK2UjTs5zj+365+6u2DMarr3YxBi3P/ygZiKa0ViCbPVk/VdJif/QvB92M+DXLRZK2wAWrGg/CU+fAwDh6gKZvSKrnSWudMXZhabhCUF/AaezSeNjE9OiG6mUJgUAQDRItSWe711olTldgnU4S7U2BbLixeXpnoMzsEKvqyNhIFWshnHMfS9kB9e+GFPS2+mUSPe37I/bYVU9lQLZGHm9sSTqOmkLPZMQjAHjRK88eIAaTcre4RzcpnUM0SC94A5hZzeHZjJcb0/Ovfnk9gR+ssSlCJsD/zBwvYsXS8Wi8h1yZ/+Bv+HGdIFSlDyuxr9s2KTXh09PyZXkFn1y92+unpjNH0mLuhYcjs52SttphHvKVy/BK/dihu0MeuLLetwTbgiKycBCyWcS8Am6XT0My65nRcJ7Lj3L0l9JoAwU/LJvPHH+vVktuWo9BPd+zkJdXGeMiVlueugobDoT1ra8lPqCC/Ena34SYctt6+2d5DRWE/rMN9zuRyIldfOltIW1ABfzG5XUpCl0vU42tC1g/KcfzcMFpB/rNbMeDxjRDxYiBhkNU8JjlWyAaU7++HNI/V5G81FA7a8WXGShvcd5M+Ts0cD7ABXeh3uDw3QqeHpMDDZEzsEQj9BERczwtC7U47RAcoBp8 X-Microsoft-Exchange-Diagnostics: 1; BY2PR05MB1925; 6:3jr/QYov3UnjKBNT5oojvlu+BkafGHXFg3R1wEQHiMLHgtOwlbezWzh7kQ7BEgwujlKs3ZFz+c3cq/2otMqfiq23NnVeF8MNWtuu+j8ippZZ1P6HfWFUrGN5if3g35h6QyMvN4hMZO0HTbTD0OQuglgx+zwBte0z+muLjE3DWrxwLT+sL9iKA620g3eUnkkcOf8mIN0sDc4zqCUQ+Xcf8H60M0802t6YAn7jgUYs9o2zD4ELgIQUmK95nyBH+p2J/AU4otE/I7g5JWjMJS+Et0dRScUpRDWka6SxXvokkO9cGZhFRLBA57BZ79IT+f7VfM1I90ywIiwGZHCHqbUDgbGWT5ymoagElnE977T7cnk=; 5:rDA6QUPR5ch59Fk1xpKLuBe1JP8xnLb6dstmurjkn137UhD9GwAMbFQK0jTTVMZwZ1ws1YcERiKLtFzqrJbwuoYQslRg5etn2W54OCDV2ytst2EXLF11ZC/yKtUnncFPA7fVNDLk+5SBVY/ADuZeyN/NbrLVkEa0J6wEh/unG1c=; 24:cPSW1uXg2TK0ZrY6daHaO1L2ZTIJ3nsgPgXI701zzIZBLpJCkw+Y8pp79x+9NDIdPwAwQ4SU4DBRyDr7qrGjXjFoZ5Vv2tr0INb9iKhucm4=; 7:6z0aG0GD5kWU2D2Vj6T0Q+yMWzI5mhbtx9MDSGFO9ng5Zv0Ie96LipSzlg4jqg5e+oo0a61apF/OoTYcppCELP0GS8GGkvcGBn812JMoFp6raMDcVMNnV5MqKAjAaEP8ETjt0hGoe73BattTpuKrUq3GzJ3MgVUQWOzjlnvP5+ygH1rTyjXxIwNJ8WIyPTltQA8K/nnOmIg9G48Dcb0ekr9kYOM4JY9xHVq7liyX+DG0mGOT7DkDWmWou63A4kVk X-OriginatorOrg: quantenna.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2018 11:50:11.6267 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2c0a8261-ecdd-4a02-3975-08d57f6a97d2 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_035029_406625_558463CF X-CRM114-Status: GOOD ( 13.69 ) 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.41.45 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [104.47.41.45 listed in wl.mailspike.net] -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 -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders 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 Add NL80211_FREQUENCY_ATTR_NO_* channel attributes parsing. Needed for correct checking if channel is available in particular BW. Signed-off-by: Dmitry Lebed --- src/ap/dfs.c | 1 - src/drivers/driver.h | 20 ++++++++++++++++++++ src/drivers/driver_nl80211_capa.c | 20 ++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) -- 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 f1476eee0..8c56cbb96 100644 --- a/src/ap/dfs.c +++ b/src/ap/dfs.c @@ -172,7 +172,6 @@ static int is_in_chanlist(struct hostapd_iface *iface, return freq_range_list_includes(&iface->conf->acs_ch_list, chan->chan); } - /* * The function assumes HT40+ operation. * Make sure to adjust the following variables after calling this: diff --git a/src/drivers/driver.h b/src/drivers/driver.h index 92a58b2f2..37a31d3bc 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -58,6 +58,20 @@ #define HOSTAPD_CHAN_VHT_130_30 0x04000000 #define HOSTAPD_CHAN_VHT_150_10 0x08000000 +/* Allowed BW mask */ +enum hostapd_chan_width_attr { + HOSTAPD_CHAN_WIDTH_10 = BIT(0), + HOSTAPD_CHAN_WIDTH_20 = BIT(1), + HOSTAPD_CHAN_WIDTH_40P = BIT(2), + HOSTAPD_CHAN_WIDTH_40M = BIT(3), + HOSTAPD_CHAN_WIDTH_80 = BIT(4), + HOSTAPD_CHAN_WIDTH_160 = BIT(5), + + /* all new elements goes before this line */ + __HOSTAPD_CHAN_WIDTH_AFTER_LAST, + HOSTAPD_CHAN_WIDTH_ALL = __HOSTAPD_CHAN_WIDTH_AFTER_LAST - 2 +}; + /* Filter gratuitous ARP */ #define WPA_DATA_FRAME_FILTER_FLAG_ARP BIT(0) /* Filter unsolicited Neighbor Advertisement */ @@ -110,6 +124,12 @@ struct hostapd_channel_data { */ int flag; + /** + * allowed_bw - allowed channel width bitmask + * see enum hostapd_chan_width_attr + */ + u32 allowed_bw; + /** * max_tx_power - Regulatory transmit power limit in dBm */ diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c index e5bc7693b..ea6139c87 100644 --- a/src/drivers/driver_nl80211_capa.c +++ b/src/drivers/driver_nl80211_capa.c @@ -1286,6 +1286,7 @@ static void phy_info_freq(struct hostapd_hw_modes *mode, u8 channel; chan->freq = nla_get_u32(tb_freq[NL80211_FREQUENCY_ATTR_FREQ]); chan->flag = 0; + chan->allowed_bw = HOSTAPD_CHAN_WIDTH_ALL; chan->dfs_cac_ms = 0; if (ieee80211_freq_to_chan(chan->freq, &channel) != NUM_HOSTAPD_MODES) chan->chan = channel; @@ -1301,6 +1302,19 @@ static void phy_info_freq(struct hostapd_hw_modes *mode, if (tb_freq[NL80211_FREQUENCY_ATTR_GO_CONCURRENT]) chan->flag |= HOSTAPD_CHAN_GO_CONCURRENT; + if (tb_freq[NL80211_FREQUENCY_ATTR_NO_10MHZ]) + chan->allowed_bw &= ~HOSTAPD_CHAN_WIDTH_10; + if (tb_freq[NL80211_FREQUENCY_ATTR_NO_20MHZ]) + chan->allowed_bw &= ~HOSTAPD_CHAN_WIDTH_20; + if (tb_freq[NL80211_FREQUENCY_ATTR_NO_HT40_PLUS]) + chan->allowed_bw &= ~HOSTAPD_CHAN_WIDTH_40P; + if (tb_freq[NL80211_FREQUENCY_ATTR_NO_HT40_MINUS]) + chan->allowed_bw &= ~HOSTAPD_CHAN_WIDTH_40M; + if (tb_freq[NL80211_FREQUENCY_ATTR_NO_80MHZ]) + chan->allowed_bw &= ~HOSTAPD_CHAN_WIDTH_80; + if (tb_freq[NL80211_FREQUENCY_ATTR_NO_160MHZ]) + chan->allowed_bw &= ~HOSTAPD_CHAN_WIDTH_160; + if (tb_freq[NL80211_FREQUENCY_ATTR_DFS_STATE]) { enum nl80211_dfs_state state = nla_get_u32(tb_freq[NL80211_FREQUENCY_ATTR_DFS_STATE]); @@ -1335,6 +1349,12 @@ static int phy_info_freqs(struct phy_info_arg *phy_info, [NL80211_FREQUENCY_ATTR_RADAR] = { .type = NLA_FLAG }, [NL80211_FREQUENCY_ATTR_MAX_TX_POWER] = { .type = NLA_U32 }, [NL80211_FREQUENCY_ATTR_DFS_STATE] = { .type = NLA_U32 }, + [NL80211_FREQUENCY_ATTR_NO_10MHZ] = { .type = NLA_FLAG }, + [NL80211_FREQUENCY_ATTR_NO_20MHZ] = { .type = NLA_FLAG }, + [NL80211_FREQUENCY_ATTR_NO_HT40_PLUS] = { .type = NLA_FLAG }, + [NL80211_FREQUENCY_ATTR_NO_HT40_MINUS] = { .type = NLA_FLAG }, + [NL80211_FREQUENCY_ATTR_NO_80MHZ] = { .type = NLA_FLAG }, + [NL80211_FREQUENCY_ATTR_NO_160MHZ] = { .type = NLA_FLAG }, }; int new_channels = 0; struct hostapd_channel_data *channel;