From patchwork Mon Jan 22 12:46:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Matyukevich X-Patchwork-Id: 10178459 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 4546F60390 for ; Mon, 22 Jan 2018 12:47:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 41562281DB for ; Mon, 22 Jan 2018 12:47:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3627E28236; Mon, 22 Jan 2018 12:47:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B4D1428210 for ; Mon, 22 Jan 2018 12:47:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751154AbeAVMrM (ORCPT ); Mon, 22 Jan 2018 07:47:12 -0500 Received: from mail-bl2nam02on0084.outbound.protection.outlook.com ([104.47.38.84]:56768 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751112AbeAVMrK (ORCPT ); Mon, 22 Jan 2018 07:47:10 -0500 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=oLTqi72gACiLDKPlzmDpJaKZ1MvosnUu3U6/Dpp4l+k=; b=rGc7bSm0Y0iL+9lIlTmLYXTFiIUrgj9vIYgIYIqNvn7WYxCpjxXJXu+YyikcklULp7VW5CNwS0d/Co/0LeaUsmJPb8wjcaMwHTYqtaib7Hb7Inac7UF7w319d3macsxTkUVaJURDEL+uXFekFwP9d2d0PI40MBNLd40v7wUcqi0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=sergey.matyukevich.os@quantenna.com; Received: from bars.quantenna.com (195.182.157.78) by CY1PR05MB1931.namprd05.prod.outlook.com (10.162.216.13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.5; Mon, 22 Jan 2018 12:47:06 +0000 From: Sergey Matyukevich To: linux-wireless@vger.kernel.org Cc: Igor Mitsyanko , Avinash Patil , Sergey Matyukevich Subject: [PATCH 07/11] qtnfmac: validate interface combinations on changes Date: Mon, 22 Jan 2018 15:46:30 +0300 Message-Id: <20180122124634.8430-8-sergey.matyukevich.os@quantenna.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180122124634.8430-1-sergey.matyukevich.os@quantenna.com> References: <20180122124634.8430-1-sergey.matyukevich.os@quantenna.com> MIME-Version: 1.0 X-Originating-IP: [195.182.157.78] X-ClientProxiedBy: VI1PR08CA0220.eurprd08.prod.outlook.com (10.170.234.157) To CY1PR05MB1931.namprd05.prod.outlook.com (10.162.216.13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2f508b0b-3e90-4746-ba16-08d561963f8f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534125)(4602075)(4627221)(201703031133081)(201702281549075)(2017052603307)(7153060)(7193020); SRVR:CY1PR05MB1931; X-Microsoft-Exchange-Diagnostics: 1; CY1PR05MB1931; 3:RTcLpYszdQ5Rqr0+D4s7i5oAXSUCIXC5tzjdjbilNVRpSmiYgb2r0qOwNzendeTg8LzgTUdXWtT5UH5TZuMfaKMAKsSKseUE2mzmu2Xlc/84EEB2ngnL+UGJcfXQMdO5jvuqOii//Tl0h0dmqg61MjV1ETypNf3U9zJCUHnfi16t5WQOrJ63gGnhMtJPa0qWEVg3/EsryqESdtGWe80D/Dk+l+xBEnsV+NCAaAgVuxNkgrpGd4L8Yna9RtetA3o1; 25:wXMQG9oJM9D6x1IHrvZKA14NZRcwqpBNBb2zuivnUlmwV04pZjZQQ9/tlKdysdDxSQXahq5ifrZMqqhRUBj5yRfAJZgwKv7UVjr7ffxzwKxA5SCr5EB+PUadOWXUGRubfj8l+P+gJHc2lgA+9e17LSSwM8PCVmy0dio04BliRLdxdyYTSEgnLw6GSxu1oRoL1DXecebjJRmwYyyyQnLZVaqaBlllTAq44kTU5pLopwRRdzNMyLUcH2xPh+5fPCLviAwduD3c5KWBSw+bSTzCs3dADoPzR6CA8AHduur7DOmHF7NM8K+g5n7Af2yNJ+QXPLjgQrlBSusCmswDaON6IpNefeSoDQIc7BSz8Ski4/U=; 31:2hOZFslJI2G0OHXzCkTOZRSOxSTe8SE1OU4IJ2t9gPKvDZBM5ME4BdXQxEk7msIlLslPAfJhj6P//Vzfld4abHOEzBSTTwEIMbPpME5OmKIPCx9VEgGi9g3APeYALM2fWagkHn4BEUwizaTeQNjCeDlUoBC15FW1wO51xXzQYlwKBSwT3KSAC0oyWxvlBVpgkSB1ftONbkHsqnJVZvgo0yBLWkJC0d8PH5nTKKCKwI0= X-MS-TrafficTypeDiagnostic: CY1PR05MB1931: X-Microsoft-Exchange-Diagnostics: 1; CY1PR05MB1931; 20:HqYtPYhDLG6DZKK5wfh8pzLU4wKeTc7o+dui0CTDZkNf8zVcv7yh4lNjBI8fymZuz0QCItRyCQuGPAq791miNVYyXGZFqxqJxD8EbkIC01q3AB1sqCgM5IKJa0aMWrvZQW0RtvY4QJlSJQfXZnxXvWrmwHDD+C5KcQQQLw52My/7ZdERdQE4J80u8lPfZUpfzrKlVYucRSjN6eFoOwaf4B3el8oSBIQ5xxrX80O0TrUriX9VPv+Yycb0jxt77S9TW2oO0QU/JI8dKP1v+ESU6hCD4TkeiRRY1HNQI/PzoSJfkZnCSJTl5rg5TEfsz+r2mCw8qzsK1T+LSbncKd3PUEuYk/eE2z0/qMbulrdFSoC9EW7hYZDxwbN87kv8sHM1Vdc5RvhSLlN5UnR/AFRtMbxBPVy81o4gJz7pKzTiK1qU1km+maus28H8FloZV+lgAv7kF8Lmx6yf/bruJm4Kv+aL6UM0T53G2H6DBorC4q+0uZPBVSUINm4iUHxiFDaO; 4:9GlW90nMcJRtS9HfiUFh49v5szudvj1TqbN/EPqDb1+QDeUIN4kDfosQkVa6Uuw840elMZywehUeXoYkKYBpQ31tXRCTeHLWHtcr+k1f5Xh18/xSX4e4jAgDuHn9cHozShL3vGUXXYChPSUCjqp0t+nVVzYx2Tgc4DwNfKKR3tM0iQ9mz/SFE1kEwpnZhVYXY9EbgyqhizlTXQcNBjccBXdpqkAXuiDBzKsVLU9byLhQIy9/zL62+whZaMebX5AB+1yBXATuzP6r4Fy2iCdyxg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(3231023)(2400081)(944501161)(10201501046)(3002001)(93006095)(93001095)(6041288)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:CY1PR05MB1931; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CY1PR05MB1931; X-Forefront-PRVS: 0560A2214D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(376002)(39840400004)(396003)(366004)(346002)(39380400002)(199004)(189003)(2351001)(25786009)(52116002)(1076002)(6116002)(26005)(59450400001)(2361001)(36756003)(15650500001)(4326008)(76176011)(107886003)(478600001)(8676002)(8936002)(50226002)(7736002)(81166006)(6916009)(6666003)(2950100002)(305945005)(2906002)(106356001)(105586002)(68736007)(6486002)(81156014)(53936002)(48376002)(66066001)(16526018)(47776003)(103116003)(97736004)(50466002)(5660300001)(3846002)(386003)(16586007)(316002)(51416003)(7696005)(53416004)(54906003)(69596002)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR05MB1931; H:bars.quantenna.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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; CY1PR05MB1931; 23:7FTDoAP+QEGOAvuBC++xvIiuNbU+V30Vi0Kb1u6gz?= =?us-ascii?Q?nvXlfd6RaVHOdVvs9NxqKOJtIq9qVkKTaGjj8yX1CXyRfD317QV5QBL719aq?= =?us-ascii?Q?jyn0/2hPZS9l+xj2N/Key78Bv9zASEiTsnGRhxrZCdKQaT404bUIWBrjiUZn?= =?us-ascii?Q?GGjk/UKhK+1JnjOhNBKBqDowzX+ywISOHvWNmjvxo3chRWhuvnZXJGqx8aAm?= =?us-ascii?Q?C6BTp/yqjxnve4HQHg0jDvu+O/JbrA5q7tJogV4+IqIjNyUGb/0Gla5r3ZIm?= =?us-ascii?Q?3a9QnT4CYjUlNTIuxg/NV7REhDVNZLXazHRKXKzMEvAy6IZjbVm7D/4WPLvo?= =?us-ascii?Q?n7StMMN3s4k0aZA/8/Z0dBK8sfo83YTE/jxBJteBiCsPtMGcK1LcK95iDFNZ?= =?us-ascii?Q?9YjIwl82+qy38joDgbAtbYxoUJaI8dTRdzO8WDlLe3mPfcDCr4jkpbxE6vb4?= =?us-ascii?Q?hrswDyVbtvjoKDQ4bw6bq91Loz6vJROzgLSMHv1ocVLpXZZLf5wXRfokX8UR?= =?us-ascii?Q?GpdQPB0nXyzbiDwCCXEVKQPmlBNPvh8CNgqjk7aIfVNVBbyjWBvByOnUMW5J?= =?us-ascii?Q?kLr/JD5v11j3J5H8x7WYTGAzakDSVo9NHFLU2hzNK51cy1Yrj8n0o4+Me5Xz?= =?us-ascii?Q?Px+NUBZHeGn11S+nbbK9/yHc+KzmFlIFJTuYUsGfDef5+EfA0byeZvDafws0?= =?us-ascii?Q?ComQNC5Oe2W7qv2TGWPfXjNX9qeNnxvG7SncOOvS62w4I3Z43D+SbMqUnifz?= =?us-ascii?Q?+HxjNpYI5yDFN4ebtxiJFuid6Rn/uP1zBEoOTcStaE14M5Ipi8KNHqTFxHcw?= =?us-ascii?Q?xETSPx9MaiP3LXg4MJdUdY+z0q+K69aKPLlWjU5752KopHz2dUqb3vq71tOu?= =?us-ascii?Q?4L3gz8QqY7GNQgx/zpFeL1miHEOB/3zn0F18SzaCIgdqoc+bT9OcLUpatUG7?= =?us-ascii?Q?8hWIa2/He0JjgWWLSb4XzWhWnJQCzucA1I0O3600a8EVN6Cda77Gb0uBP9s8?= =?us-ascii?Q?XoKjyUoAHAMAQB3BwZwHS2nvIGxW/sbGyN2GJmGSyIwJVDHVLMlv4+mCnECU?= =?us-ascii?Q?v26EtCmfalhGqULlvymcq/Wuf6OmD+cJAZtCekADILJyKW4yXxcm5mPGeLPb?= =?us-ascii?Q?vdjNii+aSDNnI1WDu8nU3e63/owEHYly9IqWXkRRjvVzu9OX38CrPEa47c6A?= =?us-ascii?Q?tEbrOBeS700wZJeg5Wf0/KZ4ADgdbP9lkl5aJiPMlmNBJDjz8WPMN7ld1ZSY?= =?us-ascii?Q?u+HIKCEPJ9kGLIgyqIXBr8N40Z+MzuzTJwNBYyUjarvT7+igykTK+MbaZ5jP?= =?us-ascii?B?QT09?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR05MB1931; 6:SeEzzpr08ZuJa/spXFmMIr6FO5DxdIQypCF0UN/TYBteSTF7ktepc8YTpziWkaAiSMAvPB51CKoFnCqP3gJ9mtWPLsGmPu8mSnYq0KnpeVxNwSLYOnnD4v5a/YIeY87hsxv+nzUj56FUEPPjtwXpzK4H8jveMNPFHkJSnoC+slaGrOCd3k11ZT5uGtM6kAkDYNXDKTreqZ59jyFkHwEy3AhwEQvEInKankANmPdzTskD4qEr/mwI02UVXyaK7W77PdJJML9C6GRT5gd6/wmWt0TelLBDh7KzoWFM8whF/SVgy2dsBDGUFscsvxL9vvLmJLT4net8G6l+ns07u8+U0PWmWyMAsw7VDlorveczqxU=; 5:T035hiW25aXB9mGIh5X380t+nnHs/fpVvrvJBpZe0309kO6GY++d5UXQdjRU2hxYWLTT5fYJ0hnKFalTTmp8guBYUxTHFUVjH9lHOrY1Nq9g2ZNnWAnm7LhtWElO6cjrqgx8aY9+fQq7RUE0n5VVeQ/JcMXqeQ26NerM9asVDHs=; 24:ZXJAlaxfnv1VR3A9Urz7PGGo07jlwmFTa32SvuURFJM++G/1Dq5KmbDDhCr4kioPxHC/NI8eFxzC0F8Ul+wFNf2rCfN38CDfkQegFld2jv0=; 7:bZk5tZd+WfQxcQW2j7wxKIgUldn+zVF+wkW4ljGSWh6oEbrwleT3tas8Fdo+dwxJ15zRLSRdoIDBqmxuvbI4srMs1jg+7OHwS2CFyMaQSZD/Tk/scRRtofjNfRWSgs4tCS6zCJ3L5+b3c8Vh94uZKMAfkhkhhXy2by+5J+0nW2zzJvvr96uW6U/yjGYEQZwFcIri+562Gu95nsguEP2NMF3VEjeEI24Jgm1gPDlTcWHOhij8wrbAOJgveyWzukMG SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: quantenna.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2018 12:47:06.9196 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2f508b0b-3e90-4746-ba16-08d561963f8f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a355dbce-62b4-4789-9446-c1d5582180ff X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR05MB1931 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Validate new interface combinations using wireless core checks when new interface is added or when the type of existing interface is modified. This is performed to make sure that new interface combination is supported by hardware. As a result, invalid interface combinations are rejected early, rather than passed to hardware with sometimes unpredictable results. Signed-off-by: Sergey Matyukevich --- drivers/net/wireless/quantenna/qtnfmac/cfg80211.c | 50 +++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c index 78e8968ab3c7..91830fd41508 100644 --- a/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c +++ b/drivers/net/wireless/quantenna/qtnfmac/cfg80211.c @@ -81,6 +81,41 @@ qtnf_mgmt_stypes[NUM_NL80211_IFTYPES] = { }; static int +qtnf_validate_iface_combinations(struct wiphy *wiphy, + struct qtnf_vif *change_vif, + enum nl80211_iftype new_type) +{ + struct qtnf_wmac *mac; + struct qtnf_vif *vif; + int i; + int ret = 0; + struct iface_combination_params params = { + .num_different_channels = 1, + }; + + mac = wiphy_priv(wiphy); + if (!mac) + return -EFAULT; + + for (i = 0; i < QTNF_MAX_INTF; i++) { + vif = &mac->iflist[i]; + if (vif->wdev.iftype != NL80211_IFTYPE_UNSPECIFIED) + params.iftype_num[vif->wdev.iftype]++; + } + + if (change_vif) { + params.iftype_num[new_type]++; + params.iftype_num[change_vif->wdev.iftype]--; + } else { + params.iftype_num[new_type]++; + } + + ret = cfg80211_check_combinations(wiphy, ¶ms); + + return ret; +} + +static int qtnf_change_virtual_intf(struct wiphy *wiphy, struct net_device *dev, enum nl80211_iftype type, @@ -90,6 +125,13 @@ qtnf_change_virtual_intf(struct wiphy *wiphy, u8 *mac_addr; int ret; + ret = qtnf_validate_iface_combinations(wiphy, vif, type); + if (ret) { + pr_err("VIF%u.%u combination check: failed to set type %d\n", + vif->mac->macid, vif->vifid, type); + return ret; + } + if (params) mac_addr = params->macaddr; else @@ -150,12 +192,20 @@ static struct wireless_dev *qtnf_add_virtual_intf(struct wiphy *wiphy, struct qtnf_wmac *mac; struct qtnf_vif *vif; u8 *mac_addr = NULL; + int ret; mac = wiphy_priv(wiphy); if (!mac) return ERR_PTR(-EFAULT); + ret = qtnf_validate_iface_combinations(wiphy, NULL, type); + if (ret) { + pr_err("MAC%u invalid combination: failed to add type %d\n", + mac->macid, type); + return ERR_PTR(ret); + } + switch (type) { case NL80211_IFTYPE_STATION: case NL80211_IFTYPE_AP: