From patchwork Tue May 26 17:18:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= X-Patchwork-Id: 215518 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9936AC433E0 for ; Tue, 26 May 2020 17:19:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 727D3207FB for ; Tue, 26 May 2020 17:19:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="IdoQF/Kg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729889AbgEZRSs (ORCPT ); Tue, 26 May 2020 13:18:48 -0400 Received: from mail-bn8nam11on2083.outbound.protection.outlook.com ([40.107.236.83]:48578 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729597AbgEZRSq (ORCPT ); Tue, 26 May 2020 13:18:46 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gHcNDapIfL7pY5cswImPBCqr7KmKing4sj3MvGkFOfQNA1E15kAo13FfGjZgNnD/5BRBn3sHzg4BBNeNQthdQ32Foxd8tXFoSYO94wfvXoZ3l6W0vaQqoFqU316pXfxFWu7ht/D2YKMwb6xDMrrCe3PvNj7hF9vUBuBmhk32mlVaG7M2+OQWcF3fLKTCKw3OCNHkq0k7rqZlVxnrYpkt08kYF+Obzc1rH8IC2VLyaoCaVyHCrxtcm1iIfwXmU3oVoErwSJQ5NSDVUpWDYjyDg9h/6cGvIxgUDHMQivDV47YZvfJ2c4wEwRASsQIrWJ87GLA9JV3hFcO+hl9U+ALxrA== 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-SenderADCheck; bh=1CZJt2AGW/b/5DPxtwNsVYH8u7aWDDxha8wH4ZgAfcE=; b=d0AAadWpf6RbkwZ/XTu9/APIil0Z+EUdoc8WAUMfSnRpnbe78w9bdNtpwTkWtmcEaubvLIT4ae1s1qUsNjUQ0P0QR0P+xtoGTA3jdNv34hj/h3FtLV6CUATxkuO3MwyM8t/ehlRCdhyMVG+gCGIDJQSO1vA2486UcbXzvM2QXidRD3Qwr+oSGAxKD+jxcyK9tuw2PnVG2R2c8dZNbI6goNcLWGw3LY2yQpDQT8S1Y0nvzG3/YBKpWomYSmaqTVFX1gbNHk7myfHOU7mNkzoqiGwrRlRsY04z8cZnsZt4y101Wg/gDMeL02eGtTFZCpb7Yw3Nk/DPfk0H3iE8YWz3yA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1CZJt2AGW/b/5DPxtwNsVYH8u7aWDDxha8wH4ZgAfcE=; b=IdoQF/KgoBE/v/xYr+zYAbP+g5xt20g9O60hJs54G2RLBHWQSFQ1W2cMsBkJNiHouI3QiMxz+J0h+juuQxZVpvPKx6K6XnnzO49EqUYp1NxMkzzE450nSI/rI4AN1lny+Yn59F6zhLnw9LWD+MAMpYXa2PU2nxrydO8qz2vjwnc= Authentication-Results: driverdev.osuosl.org; dkim=none (message not signed) header.d=none; driverdev.osuosl.org; dmarc=none action=none header.from=silabs.com; Received: from SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) by SN6PR11MB2750.namprd11.prod.outlook.com (2603:10b6:805:54::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.25; Tue, 26 May 2020 17:18:42 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336%7]) with mapi id 15.20.3021.029; Tue, 26 May 2020 17:18:42 +0000 From: Jerome Pouiller To: devel@driverdev.osuosl.org, linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= , kbuild test robot Subject: [PATCH 01/10] staging: wfx: drop unused variable Date: Tue, 26 May 2020 19:18:12 +0200 Message-Id: <20200526171821.934581-2-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200526171821.934581-1-Jerome.Pouiller@silabs.com> References: <20200526171821.934581-1-Jerome.Pouiller@silabs.com> X-ClientProxiedBy: PR1PR01CA0007.eurprd01.prod.exchangelabs.com (2603:10a6:102::20) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.home (2a01:e35:2435:66a0:544b:f17b:7ae8:fb7) by PR1PR01CA0007.eurprd01.prod.exchangelabs.com (2603:10a6:102::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.17 via Frontend Transport; Tue, 26 May 2020 17:18:40 +0000 X-Mailer: git-send-email 2.26.2 X-Originating-IP: [2a01:e35:2435:66a0:544b:f17b:7ae8:fb7] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3499145d-abfa-464d-1b75-08d80198d6aa X-MS-TrafficTypeDiagnostic: SN6PR11MB2750: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:480; X-Forefront-PRVS: 041517DFAB X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JCcoyUnV5sbzS5jL00Qv7cXnTMDOVzAGsttksPC2OPigPJvCuSTr860imHCs1dolT5ybDr7ghpohHTeEqdKfTCeVvQUbJprv+hcXEWeJCBsOVu59aFG8JiJcycvz+HgpJH6DpVj0nSQgHP8HszyWGAsO8/XxpGEhmYv7gA+gZ2jhIQhL/W8kvYQg9zExwsEuUVHDk0YpDIRFEh5uSNtMgBqmyXtqeLi1uCW0OzNwIYa326YJta306YYMxK26V17Vj6jh2gpXOcMSoI81MEYjUGnWq3xDAaMwhCSEWFcpVWmXGv8z95NaILl4gNP5419h8/8pX2pYeoxgjJJSSjn4PA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB2718.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(396003)(376002)(366004)(39860400002)(136003)(346002)(4326008)(6512007)(316002)(8676002)(8936002)(2616005)(6486002)(2906002)(1076003)(86362001)(6666004)(186003)(16526019)(5660300002)(66574014)(36756003)(54906003)(66556008)(478600001)(8886007)(6506007)(66946007)(66476007)(52116002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: 1NyQAGHDjAppSytKdK5AmyBQPMMy7NH38A2Tr93ZwoCb7c1PDlcVfpMGae1WqAELkx0PEZYLQsuVU+w7rUh4yIt1DFpvEmGo9TDMZZg3T8F6scWtFkH1ExJwHJyOg9t62ZeG7p5lmDgQKDa1X4TNKd2GPENRbE2HgLG7LT6KG5UB/XZ1J+VZ3wgwB6pZvrC7Y1GQZ4Y8wVtMIumjnKBJ/kYt0pGO1vgMnIHLPZ+EiOSgLjPx0pey4GX+eaMH1jpo3fF60uikJ3Oxhev2K+Z0B9QoO5mH8s7HUAWZw2exXs+tbeOZgJqWvuxlJ+SaRlZ0oaELDpDpp5xOVkDc8k56NB02GQtoe3Vc2NYMe6utZxxY6wREVxFYdX8/8PqURFV9zkGsYZC0A7rzVxCuGodKc39YiTELV1pPNnOI/5GoX5vLabTvrTwlgv1Uls3VSnDO55KKKRL2yqUufKVHoXKCwOhPf795bQLwjhCM7C/9l4rTW07Xj/Z+Ey0LFf3qUYNIVT6GQsVyQYFvUwzvFX5SAmrwisl3CYyBOhNDnC584tA= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3499145d-abfa-464d-1b75-08d80198d6aa X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2020 17:18:42.2593 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xaD2WmsY4gswMVMQNHPtNIplcxRUqWdijS3s+VurMNEID5aEcuvhIU1s5h6uThGVnGrLsFI92I6zA+uje+21Qg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB2750 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Jérôme Pouiller Since the commit 3f84adfe1d7ae ("staging: wfx: remove hack about tx_rate policies"), the variable "count" is no more used in wfx_tx_policy_build(). Notice that there were two instances of the variable "count" in wfx_tx_policy_build(). This patch also solves this cosmetic issue. Reported-by: kbuild test robot Fixes: 3f84adfe1d7ae ("staging: wfx: remove hack about tx_rate policies") Signed-off-by: Jérôme Pouiller --- drivers/staging/wfx/data_tx.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/staging/wfx/data_tx.c b/drivers/staging/wfx/data_tx.c index a82f00f8f17bd..a9eddd6db2b5d 100644 --- a/drivers/staging/wfx/data_tx.c +++ b/drivers/staging/wfx/data_tx.c @@ -43,15 +43,10 @@ static void wfx_tx_policy_build(struct wfx_vif *wvif, struct tx_policy *policy, struct ieee80211_tx_rate *rates) { int i; - size_t count; struct wfx_dev *wdev = wvif->wdev; WARN(rates[0].idx < 0, "invalid rate policy"); memset(policy, 0, sizeof(*policy)); - for (i = 1; i < IEEE80211_TX_MAX_RATES; i++) - if (rates[i].idx < 0) - break; - count = i; for (i = 0; i < IEEE80211_TX_MAX_RATES; ++i) { int rateid; u8 count; From patchwork Tue May 26 17:18:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= X-Patchwork-Id: 215519 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 84112C433E0 for ; Tue, 26 May 2020 17:19:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5759D207FB for ; Tue, 26 May 2020 17:19:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="ckgVC8Xa" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388767AbgEZRS5 (ORCPT ); Tue, 26 May 2020 13:18:57 -0400 Received: from mail-bn8nam11on2083.outbound.protection.outlook.com ([40.107.236.83]:48578 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388339AbgEZRS4 (ORCPT ); Tue, 26 May 2020 13:18:56 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MrYOHgfdVKHyTl9NFjKajBjJvts/yek5ccUDxkDOr9OwJc7uu2fEfA7bAV5G89qQ4GPpIF4EteKT3PQPH1KQCifZBb90s9if0pUHLz5WiNtaGA7MtPhMhojUvyykQq+p9IIIV39fsYyeldiI3jLFQBNalaJBjCaM8+d2TsPwSqxaCa/xsiWc4nD+HgsLP8JHI9OyE5WiW9JbWgrmI2MY8w1/KfIVBVyIpPW8/3poqT8HHzYTjDot/dC6tTiK0KdL7sH94kGqmkv0Um1TLq1zNQ6m528S8tEFbOFrSLeQTVrcYD++SL6qOHMLdpd/ntb2h7rP6/PN3I6hq6u5QlWQPg== 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-SenderADCheck; bh=mmQSSAdCRES6wt7JUzUpJrFphugSWi39g4LXP/uhpZ0=; b=LdFvWZeCaPAzt7KGeIV7fDd4IYZIMxdRleEzMicohf0Jgl5Qg6xKLwQoj67f+t7rSXioaMEQF+YPd5XdSsDdiR/v8A8EjVma5g9mcVndGnxv+anZJasRA114CzbRdKsBAqYY5mg3NeCAg6J3+oA4sPEqQiYFRr3ewB0JGIaRGDOvy+L4Xz4eRhhCDEvl8uNe+r7YxM/Fls+2kEm3xCWrsVSAnobz1DiQsbgl+Xa11+w9fdj+Pd1Ey6soB7Z60oKmJzqddjkqNDoQj7azqaeuV54l8zNKwxz2t8IB1nDnUgPZGt94yEfCQYLLTRRxnmzzGjtcTbKySqE5Go9fSUduUA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mmQSSAdCRES6wt7JUzUpJrFphugSWi39g4LXP/uhpZ0=; b=ckgVC8XaNPMgGWRN6QyO6dzfT4iONCEiUhqzDRvTJyw7w2TxY0LwWzdiR+Gtq341ikNTD3qF5XRXWxYLWTYZ/T4L2r7M2axxL3gGTBGhsPiipnO3dzIheLxWgYu+3iTVOQm6X7t0VA9VmCNy29csCb0fELX1D1lIYkttfuYB4lM= Authentication-Results: driverdev.osuosl.org; dkim=none (message not signed) header.d=none; driverdev.osuosl.org; dmarc=none action=none header.from=silabs.com; Received: from SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) by SN6PR11MB2750.namprd11.prod.outlook.com (2603:10b6:805:54::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.25; Tue, 26 May 2020 17:18:47 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336%7]) with mapi id 15.20.3021.029; Tue, 26 May 2020 17:18:47 +0000 From: Jerome Pouiller To: devel@driverdev.osuosl.org, linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= Subject: [PATCH 04/10] staging: wfx: add support for tx_power_loop Date: Tue, 26 May 2020 19:18:15 +0200 Message-Id: <20200526171821.934581-5-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200526171821.934581-1-Jerome.Pouiller@silabs.com> References: <20200526171821.934581-1-Jerome.Pouiller@silabs.com> X-ClientProxiedBy: PR1PR01CA0007.eurprd01.prod.exchangelabs.com (2603:10a6:102::20) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.home (2a01:e35:2435:66a0:544b:f17b:7ae8:fb7) by PR1PR01CA0007.eurprd01.prod.exchangelabs.com (2603:10a6:102::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.17 via Frontend Transport; Tue, 26 May 2020 17:18:45 +0000 X-Mailer: git-send-email 2.26.2 X-Originating-IP: [2a01:e35:2435:66a0:544b:f17b:7ae8:fb7] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9b4a99fc-b02c-41e7-0366-08d80198d9a2 X-MS-TrafficTypeDiagnostic: SN6PR11MB2750: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5236; X-Forefront-PRVS: 041517DFAB X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: F4HGAkPqDXxHaDWi4gsbalIPOEg5fn9XRqBAAS1kdD2j2Nmb1J0B6pe7D4aAehxigZVxpYy+cfAlt318kWqXKdmo0rFBN8IaoRn4Lvy5vwbMHbjsIH8YDUc07uUriPdpnJxRPq/rNY+VQHgr5BqZrQBvq57xrVAJ7VCtjwWSH6Bogq2ToJ4uPJRTpKTDDUQ/fyYe09HXQqB+6jwVXNONoZy6rvPmAQ60znG3JXwq40xuvNxVM7lDSDDvWEFCoFmZOR+QR+GpIeugmodRIFL3jsEQYjbPVNmW4jwZrirRm44ZAdx3qK8aqCcJewf24W2/dXsg6wmDZD1mEB1zPYV/3A== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB2718.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(396003)(376002)(366004)(39860400002)(136003)(346002)(4326008)(6512007)(316002)(8676002)(8936002)(2616005)(6486002)(2906002)(107886003)(1076003)(86362001)(6666004)(186003)(16526019)(5660300002)(66574014)(36756003)(54906003)(66556008)(478600001)(8886007)(6506007)(66946007)(66476007)(52116002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: 3lRm9V8wlfaYx9dHzPSU0omD7rrlArlkdFaOGLnsSIt36YUaXH1NRlF0zsR7eWmNGbW9HHRUig0a/W1CYDzCiQ/WnvbuHQN13NYIt1C8za2N/YwIQ6DPqKB2zTnb/Rv+/HEgfhXxZKD8wmYn6rRZ8b308/WUp3S3DZZb5hgz6/ImboOSEf41cCxWrBBub+7geGLhYJNrefS9iQO7UO8yyZH465fiuz0zrb1AKTcoww7LM9d2oIFdPPXudTl+7CWsVUgp0hRjYwQ8s2PbNi25q8fogdP/2BVgT8+DUlFR7p2iqKgOhiBZoqJdvxJJ+qNcpAIonO67iocyUcZGR4XqmqV/RrRdTmA5WWP7+Ry9kqXomXwplzQevvWbxU9eFaiC9hq1SwFia+T6lvrpSUjP667R8R7kc8TYis1A0DgQ3UdJTaguhGzw2GM/QSCqEcQ4+pdeDcjAqHfr9MDKEFqFJIO0T05D7cWSB04GSIEnhvErCxu8BGoBrZijjek7FeuKeLtsevDcyfKbihTXionyhBAr6MkEhAr2oJnIMj+sk9o= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b4a99fc-b02c-41e7-0366-08d80198d9a2 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2020 17:18:47.3384 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: v0gXdEPNn9XKzlwTDOpTTTWuF+ItAKckr633qzBYHATMi7gBWzcBlYtA9l2GzfMM4j1qXf1K8MXtPRQYNFyEXQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB2750 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Jérôme Pouiller During the calibration of the RF amplifier, the device is able to provide some data about the status of the amplifier. Record these data and expose them in debugfs. Signed-off-by: Jérôme Pouiller --- drivers/staging/wfx/debug.c | 26 ++++++++++++++++++++++++++ drivers/staging/wfx/hif_api_general.h | 18 +++++++++++++++--- drivers/staging/wfx/hif_rx.c | 7 +++++++ drivers/staging/wfx/main.c | 2 ++ drivers/staging/wfx/wfx.h | 2 ++ 5 files changed, 52 insertions(+), 3 deletions(-) diff --git a/drivers/staging/wfx/debug.c b/drivers/staging/wfx/debug.c index f52e7cf885cba..10d649985696a 100644 --- a/drivers/staging/wfx/debug.c +++ b/drivers/staging/wfx/debug.c @@ -178,6 +178,30 @@ static int wfx_rx_stats_show(struct seq_file *seq, void *v) } DEFINE_SHOW_ATTRIBUTE(wfx_rx_stats); +static int wfx_tx_power_loop_show(struct seq_file *seq, void *v) +{ + struct wfx_dev *wdev = seq->private; + struct hif_tx_power_loop_info *st = &wdev->tx_power_loop_info; + int tmp; + + mutex_lock(&wdev->tx_power_loop_info_lock); + tmp = le16_to_cpu(st->tx_gain_dig); + seq_printf(seq, "Tx gain digital: %d\n", tmp); + tmp = le16_to_cpu(st->tx_gain_pa); + seq_printf(seq, "Tx gain PA: %d\n", tmp); + tmp = (s16)le16_to_cpu(st->target_pout); + seq_printf(seq, "Target Pout: %d.%02d dBm\n", tmp / 4, (tmp % 4) * 25); + tmp = (s16)le16_to_cpu(st->p_estimation); + seq_printf(seq, "FEM Pout: %d.%02d dBm\n", tmp / 4, (tmp % 4) * 25); + tmp = le16_to_cpu(st->vpdet); + seq_printf(seq, "Vpdet: %d mV\n", tmp); + seq_printf(seq, "Measure index: %d\n", st->measurement_index); + mutex_unlock(&wdev->tx_power_loop_info_lock); + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(wfx_tx_power_loop); + static ssize_t wfx_send_pds_write(struct file *file, const char __user *user_buf, size_t count, loff_t *ppos) @@ -317,6 +341,8 @@ int wfx_debug_init(struct wfx_dev *wdev) d = debugfs_create_dir("wfx", wdev->hw->wiphy->debugfsdir); debugfs_create_file("counters", 0444, d, wdev, &wfx_counters_fops); debugfs_create_file("rx_stats", 0444, d, wdev, &wfx_rx_stats_fops); + debugfs_create_file("tx_power_loop", 0444, d, wdev, + &wfx_tx_power_loop_fops); debugfs_create_file("send_pds", 0200, d, wdev, &wfx_send_pds_fops); debugfs_create_file("burn_slk_key", 0200, d, wdev, &wfx_burn_slk_key_fops); diff --git a/drivers/staging/wfx/hif_api_general.h b/drivers/staging/wfx/hif_api_general.h index f5abd81747069..dba18a7ae9194 100644 --- a/drivers/staging/wfx/hif_api_general.h +++ b/drivers/staging/wfx/hif_api_general.h @@ -201,9 +201,10 @@ struct hif_cnf_control_gpio { } __packed; enum hif_generic_indication_type { - HIF_GENERIC_INDICATION_TYPE_RAW = 0x0, - HIF_GENERIC_INDICATION_TYPE_STRING = 0x1, - HIF_GENERIC_INDICATION_TYPE_RX_STATS = 0x2 + HIF_GENERIC_INDICATION_TYPE_RAW = 0x0, + HIF_GENERIC_INDICATION_TYPE_STRING = 0x1, + HIF_GENERIC_INDICATION_TYPE_RX_STATS = 0x2, + HIF_GENERIC_INDICATION_TYPE_TX_POWER_LOOP_INFO = 0x3, }; struct hif_rx_stats { @@ -222,8 +223,19 @@ struct hif_rx_stats { s8 current_temp; } __packed; +struct hif_tx_power_loop_info { + __le16 tx_gain_dig; + __le16 tx_gain_pa; + __le16 target_pout; // signed value + __le16 p_estimation; // signed value + __le16 vpdet; + u8 measurement_index; + u8 reserved; +} __packed; + union hif_indication_data { struct hif_rx_stats rx_stats; + struct hif_tx_power_loop_info tx_power_loop_info; u8 raw_data[1]; }; diff --git a/drivers/staging/wfx/hif_rx.c b/drivers/staging/wfx/hif_rx.c index 88466063cc427..bb156033d1e16 100644 --- a/drivers/staging/wfx/hif_rx.c +++ b/drivers/staging/wfx/hif_rx.c @@ -278,6 +278,13 @@ static int hif_generic_indication(struct wfx_dev *wdev, sizeof(wdev->rx_stats)); mutex_unlock(&wdev->rx_stats_lock); return 0; + case HIF_GENERIC_INDICATION_TYPE_TX_POWER_LOOP_INFO: + mutex_lock(&wdev->tx_power_loop_info_lock); + memcpy(&wdev->tx_power_loop_info, + &body->indication_data.tx_power_loop_info, + sizeof(wdev->tx_power_loop_info)); + mutex_unlock(&wdev->tx_power_loop_info_lock); + return 0; default: dev_err(wdev->dev, "generic_indication: unknown indication type: %#.8x\n", type); diff --git a/drivers/staging/wfx/main.c b/drivers/staging/wfx/main.c index ae23a56f50e05..6bd96f4763884 100644 --- a/drivers/staging/wfx/main.c +++ b/drivers/staging/wfx/main.c @@ -274,6 +274,7 @@ static void wfx_free_common(void *data) { struct wfx_dev *wdev = data; + mutex_destroy(&wdev->tx_power_loop_info_lock); mutex_destroy(&wdev->rx_stats_lock); mutex_destroy(&wdev->conf_mutex); ieee80211_free_hw(wdev->hw); @@ -344,6 +345,7 @@ struct wfx_dev *wfx_init_common(struct device *dev, mutex_init(&wdev->conf_mutex); mutex_init(&wdev->rx_stats_lock); + mutex_init(&wdev->tx_power_loop_info_lock); init_completion(&wdev->firmware_ready); INIT_DELAYED_WORK(&wdev->cooling_timeout_work, wfx_cooling_timeout_work); diff --git a/drivers/staging/wfx/wfx.h b/drivers/staging/wfx/wfx.h index cc9f7d16ee8b7..73e216733ce4f 100644 --- a/drivers/staging/wfx/wfx.h +++ b/drivers/staging/wfx/wfx.h @@ -58,6 +58,8 @@ struct wfx_dev { struct hif_rx_stats rx_stats; struct mutex rx_stats_lock; + struct hif_tx_power_loop_info tx_power_loop_info; + struct mutex tx_power_loop_info_lock; }; struct wfx_vif { From patchwork Tue May 26 17:18:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= X-Patchwork-Id: 215520 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 06647C433E0 for ; Tue, 26 May 2020 17:19:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D00E6207FB for ; Tue, 26 May 2020 17:19:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="pc4h3Xn4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388903AbgEZRS7 (ORCPT ); Tue, 26 May 2020 13:18:59 -0400 Received: from mail-bn8nam11on2083.outbound.protection.outlook.com ([40.107.236.83]:48578 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388736AbgEZRS6 (ORCPT ); Tue, 26 May 2020 13:18:58 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k2pFCKy5LaCnnAVhLrXhyVRMPAKLwVrSOpp3XomqPXf140JmwyEsBOM+mYV4AUJj4jCfGn6MGUI4418uj6UZphx/4UhsmLMGbddWYYT5YcgUZdvmM9Cu3qzknccRUyrxH+rpPjf8k/6eD35piZpbqdoqd4ejjzYlItnDKNOVShxaIc5oqVwuGwKcc3B+poV8TTravInVG44httoFfUm56sKm//NvOVJ/i6QN0cVKLgUMGF7wpLYUH+vkH7xZfv9gd9j32hgOqCKP/XPGHnZUtRtizPfrYWuUOxgEP7K27nQ0lPmvXHJY3XF0YxFSQ2S6FyrgyjXZyS5ZGlcPJimDDQ== 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-SenderADCheck; bh=9oshIULAZ0qp5hLmt2U37gnOrA+tYUU0n5uGYxxUja8=; b=ccOj4VhI/lplBqb2q/bMc9+vG5UTPYeCiZsaQAbV4d8188FsIH80fBRLrAL4ISR6rGrjl1qSGcxt4H0tcY9hgP5Txaclx10SEeHKAW+E8EFDYf7CgDLx9yrRr1SiiFSqk5FDLnP0gJBt0O7USRDzvl4dndBaM8aL0BNeU05VhJsLn8OvalpgJ8PgBqiCwXYp6Vxx3Kr3CtVcraIRQvjGFQXjCDrOd73RuZ/ajksQGap+0nZz2nCbYFGIVAG8105yvGSvndz/hAvFkOQrBJVZz9enk4LFwQ+WMZcRRVEyjRP2sNkpeGb9ojLP3l8THCAsBXxZTyFvzyMkwAclKQ3X2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9oshIULAZ0qp5hLmt2U37gnOrA+tYUU0n5uGYxxUja8=; b=pc4h3Xn4v9e9ftcoJ0cbH46YOw9S/5DjF5GcMbaB/hlG7sc/Cfxoa7AKetPC6WC3AvCmgf9BTsYYorE9fqakF0WxVW0AQ/+BixsCvTvUURcgmXAW8gO7QzQPexfxMKes6BF8zrr/dWDKbvvEzn2ZpzbxuER50ZdO2A+8hKgE9pc= Authentication-Results: driverdev.osuosl.org; dkim=none (message not signed) header.d=none; driverdev.osuosl.org; dmarc=none action=none header.from=silabs.com; Received: from SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) by SN6PR11MB2750.namprd11.prod.outlook.com (2603:10b6:805:54::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.25; Tue, 26 May 2020 17:18:49 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336%7]) with mapi id 15.20.3021.029; Tue, 26 May 2020 17:18:49 +0000 From: Jerome Pouiller To: devel@driverdev.osuosl.org, linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= Subject: [PATCH 05/10] staging: wfx: retrieve the PS status from the vif Date: Tue, 26 May 2020 19:18:16 +0200 Message-Id: <20200526171821.934581-6-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200526171821.934581-1-Jerome.Pouiller@silabs.com> References: <20200526171821.934581-1-Jerome.Pouiller@silabs.com> X-ClientProxiedBy: PR1PR01CA0007.eurprd01.prod.exchangelabs.com (2603:10a6:102::20) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.home (2a01:e35:2435:66a0:544b:f17b:7ae8:fb7) by PR1PR01CA0007.eurprd01.prod.exchangelabs.com (2603:10a6:102::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.17 via Frontend Transport; Tue, 26 May 2020 17:18:47 +0000 X-Mailer: git-send-email 2.26.2 X-Originating-IP: [2a01:e35:2435:66a0:544b:f17b:7ae8:fb7] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d47e3e01-1945-48c1-034d-08d80198da96 X-MS-TrafficTypeDiagnostic: SN6PR11MB2750: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4714; X-Forefront-PRVS: 041517DFAB X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SU933gwRq02PP6xL/XZTvXigzI1wQVDh+UySli18TO93qE2WShEMr4AnYDYpPEb+vQ5iwJ2/sERhLBEKeclAS/Nf9SQQKfkyvrLcp9UKlZ7MCucIXGuH2/eVBbJmpjIaLO+tS4/0FeNdp3UATtIJcrCeDWINL/lCbgBczGoGs3sQFAtL74BEflVQy6DtzrhmcaKsUtrlRXn/2SaeCMN87TTFkzFb5ta3N4444SUUJUpseJy6FR3QFyTdhMVbqMBS9mXPGjicLtYbENyrnEiChkiZOD5bySg6uOpo54vTqg3B6Pd9p1zrD4Ct11Ji3M2W5/Bs36g5IRy2dQXZv2sYeQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB2718.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(396003)(376002)(366004)(39860400002)(136003)(346002)(4326008)(6512007)(316002)(8676002)(8936002)(2616005)(6486002)(2906002)(107886003)(1076003)(86362001)(6666004)(4744005)(186003)(16526019)(5660300002)(66574014)(36756003)(54906003)(66556008)(478600001)(8886007)(6506007)(66946007)(66476007)(52116002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: N1ja9PKm3ROBkDUl7fqOoh/ZMLAvgAjYbD2lQmu/W+i7Q30zWYfuOXefUHmxeII2oQRFL3KRmix8eaHRtEudiIUs5Tsb9puLq7zG+muGKt5X9CuSLZ9GI3wZ01HJ+ZyUZ1le/cDaQDVDsWTN/YiJkPQ/DJGTnS9A3mvIHdrJZ8WL1S4X/zOAIMb5wCkAyX7fAsl8DzeDIBthGse/656Qw6ua3dcrm7CLIIjCXBLXT8LaOTupM86/vV27s7vmhWtehKt1wfA1b7ZR478ZyhBBvhOGB410L1QPY+huTV6p6Z+TTsI7/KioGWENx5jBltItsKO45G1dSKFhV+reaPTiuc65n+oqS+hGOFMAHxU57px9vUPtCKlZf6SwL8zHlEdRP05KBn3VC7Xs59EKkGMYN/IzVN6SrVli1CTjzI0SQ37hRMiit+0lR127nCj/KloyrwLuPrp0u6rK7nPFGu/ydoS0QxLaxkK8opEIdk1MyYeENfsW4kukvAj8Pn+Fn8Fs+1EB7tYz4ojgjLHvh+3jbGlL5sYAGxjrjB3DjS7BPrM= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: d47e3e01-1945-48c1-034d-08d80198da96 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2020 17:18:49.0114 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4bsm6TRAa4BAtQFk2XMuxpEHn8VwTCQkBqJtMTZ2LU/NrFWK+VpfM0fitb8O1iDMfaRPCooYHoxK+AT80Gb28w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB2750 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Jérôme Pouiller The Power Save status is stored for each virtual interface and for the whole device. The WF200 is able to handle power saving per interface, so use the value stored in vif. Signed-off-by: Jérôme Pouiller --- drivers/staging/wfx/sta.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/wfx/sta.c b/drivers/staging/wfx/sta.c index 6015cd2c4d8ae..d0ab0b8dc404e 100644 --- a/drivers/staging/wfx/sta.c +++ b/drivers/staging/wfx/sta.c @@ -203,7 +203,7 @@ void wfx_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags, static int wfx_update_pm(struct wfx_vif *wvif) { struct ieee80211_conf *conf = &wvif->wdev->hw->conf; - bool ps = conf->flags & IEEE80211_CONF_PS; + bool ps = wvif->vif->bss_conf.ps; int ps_timeout = conf->dynamic_ps_timeout; struct ieee80211_channel *chan0 = NULL, *chan1 = NULL; From patchwork Tue May 26 17:18:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= X-Patchwork-Id: 215522 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E4CDEC433DF for ; Tue, 26 May 2020 17:19:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BCDFE2073B for ; Tue, 26 May 2020 17:19:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="JAiXmu8L" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389053AbgEZRTM (ORCPT ); Tue, 26 May 2020 13:19:12 -0400 Received: from mail-bn8nam11on2083.outbound.protection.outlook.com ([40.107.236.83]:48578 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388995AbgEZRTL (ORCPT ); Tue, 26 May 2020 13:19:11 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FEMpcC7b3WKd4jakYOuIrX8EsgVSHxVd3s2A6W2/E1pLo5rpBPJTEgF8QQXHAX6XBbBdN7/dRqM4dkz09wygWYXuq5X9ikm5fAR5IWZC4tujrkHfOMrRM3kCiIOnpAN0YtYmDfmY4VrG6lxm8VjYlEBfGQafYCbK4kOED7msNiX6LDgyMbAuhd4E+LT50m302vloxX8aihtE6rhqxWX3c5/FBLVkPyXEocDiI1SklbwSaga7K0XH/Ugmv+D9GhYgjHwBHhxZ17ydD1ZRmgjTBCOyLJ4blAQGsrA1n5KdZWvbo/ICdkmwtg9SMxc21z8/231PKAxzVllw12SYEt+/ww== 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-SenderADCheck; bh=vyrbr3YFnwOdvTfBarbes+ILcX0rykOlaggmKjWAZSQ=; b=bNHbH4oiqCQpPWVuLTFlYw56fpmnrqMTp6amE5QUL3RwyWVGHT5jYpjwJcxSxr1N5XYHBp1XLtzEWuQso1SCByCpsS7swp/T+jfLdlpGUCRrUYQ1NeY3H6VfKNmWFMWCOhPWlXy3lwlPgfeUjYRxbqgQKNkAnJm+8LAV49d1DV9P6q3ajf1tJ/9WmcJN7ctZ/7qQ3sjhjrbdQecuPyclagRSq7Ba9c2d3NAOn8Q7PU4vi2aGxbUvzVSjTESc52ptywn7eoEvPs/fX8ECudD6P4FUWBQc/0SDBUtovJD7c1hiyzSMfR6CbFAlSTeyQHhJvKAnCmBDDw14sA+VyzMu+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vyrbr3YFnwOdvTfBarbes+ILcX0rykOlaggmKjWAZSQ=; b=JAiXmu8LqpyLWYFX6dl0AcLCVSl9bdSZdwwH+kOuNF4T9dUofuXfbBCJ81rqdg5bP30efQ7/JKPKyXyQne1PwlBBajc+MYaP09MPApm77zoSQFNEDvja0y+FOdJnxd6VfNbkBkPZxGD/j1Pivp+5+UnwiR62hEBNC7GmnIhuaCs= Authentication-Results: driverdev.osuosl.org; dkim=none (message not signed) header.d=none; driverdev.osuosl.org; dmarc=none action=none header.from=silabs.com; Received: from SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) by SN6PR11MB2750.namprd11.prod.outlook.com (2603:10b6:805:54::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.25; Tue, 26 May 2020 17:18:53 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336%7]) with mapi id 15.20.3021.029; Tue, 26 May 2020 17:18:53 +0000 From: Jerome Pouiller To: devel@driverdev.osuosl.org, linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= Subject: [PATCH 08/10] staging: wfx: allow to burn prevent rollback bit Date: Tue, 26 May 2020 19:18:19 +0200 Message-Id: <20200526171821.934581-9-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200526171821.934581-1-Jerome.Pouiller@silabs.com> References: <20200526171821.934581-1-Jerome.Pouiller@silabs.com> X-ClientProxiedBy: PR1PR01CA0007.eurprd01.prod.exchangelabs.com (2603:10a6:102::20) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.home (2a01:e35:2435:66a0:544b:f17b:7ae8:fb7) by PR1PR01CA0007.eurprd01.prod.exchangelabs.com (2603:10a6:102::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.17 via Frontend Transport; Tue, 26 May 2020 17:18:52 +0000 X-Mailer: git-send-email 2.26.2 X-Originating-IP: [2a01:e35:2435:66a0:544b:f17b:7ae8:fb7] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 65bfd7e7-6822-4ccd-d6cd-08d80198dd7c X-MS-TrafficTypeDiagnostic: SN6PR11MB2750: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6108; X-Forefront-PRVS: 041517DFAB X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jUO/CafqVZFkVxIILs2FdskS45/HWMQfkM/n8C+Tb5w/ov2wSIAqt6h7+ItEjh2kAuEcK1hjZJ3FyV49zbWqxNM57MPbZRNrg3o/31/mPKmvLb+jvU9ciu8+WXCKVJoRrXci9chUuHpY2ZKXu1dDTOzj/YMoIeGogMlX6ybTi+s6A9Rz3XGnpt3p47LsvxvIL+AdnB+u+cvHoSZQO16i2tXh2hqHyaMVlWT/Y1YHhOb1TqDS20xX+r5UzP8fmkbZITVpKpMUgii2CdH6VtzahF2DfUCNU/PGkA2ugNY0e+qwPC3YbXsVdybq3a5UOf18G5v1B4OXoHoomMjfxytqbg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB2718.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(396003)(376002)(366004)(39860400002)(136003)(346002)(4326008)(6512007)(316002)(8676002)(8936002)(2616005)(6486002)(2906002)(107886003)(1076003)(86362001)(6666004)(186003)(16526019)(5660300002)(66574014)(36756003)(54906003)(66556008)(478600001)(8886007)(6506007)(66946007)(66476007)(52116002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: EQzkXU43bTAg7TukimXaKp7LLqEAjO/IDv85M1uItUIfaxaKNzrDZtJW2ARjo+7q44jSQkBgQ2nghPY8TFLV2+iPBVNzGRfxcALyUgnntmQK0oORAz3EQga/JrDNU/sBQbqV/cjeeDyPATSd98Qg/ehxGyJ0PwjXAIREbRLryTEnCtXhbqelQSUxaQKKoUZSeV27iM8Zw07UZG1Q5HbfQmsxFUSXvIlNLPRF27yNjrbp8+mSfoul26asGQiRs+ITDiQiQCniGRaNTDsqnovGzEUQ/wkbY8yKdF4QSDK4+s3FfPqHExSO8thKM/bC0EFFsZzJnMSyT5HZ6p9bsU3u4EG+KEihZINl94Z8Wxp9uST8Upx1IzOTpe33VWnIo08iPrWRWq+Dzg2m1DPOvwMtvSQzwKpIGndpbIXiZm8DMp5KvbVx5wETgPYyk5tt/0aPICTq0eZqxlaa+wAeqObVUzthumfx0lM93b1Ijs9dcJyoVWXx9iBw97tyuaLt1XSc1PDEyNzKX2V1vcdMW7WgUrtbBYJ0b0xwf0Lu8A0Uvts= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 65bfd7e7-6822-4ccd-d6cd-08d80198dd7c X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2020 17:18:53.6967 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5kEqbL68/L4DIRzDGGxORw0ENP9j8CXHamZJ0mZfBb51zcnMSmVmXQMW4rfrwlspKj/RQRgALZEe4QDAQLNF4A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB2750 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Jérôme Pouiller In case a security flaw is found in a version of firmware, the device offers a way to disallow the loading an older firmware. This patch provides a vendor extension to nl80211 to enable this feature. Signed-off-by: Jérôme Pouiller --- drivers/staging/wfx/hif_api_general.h | 8 ++++++++ drivers/staging/wfx/hif_tx.c | 18 ++++++++++++++++++ drivers/staging/wfx/hif_tx.h | 1 + drivers/staging/wfx/nl80211_vendor.c | 23 +++++++++++++++++++++++ drivers/staging/wfx/nl80211_vendor.h | 11 +++++++++++ 5 files changed, 61 insertions(+) diff --git a/drivers/staging/wfx/hif_api_general.h b/drivers/staging/wfx/hif_api_general.h index dba18a7ae9194..c8af3534700ca 100644 --- a/drivers/staging/wfx/hif_api_general.h +++ b/drivers/staging/wfx/hif_api_general.h @@ -361,4 +361,12 @@ struct hif_cnf_sl_configure { __le32 status; } __packed; +struct hif_req_prevent_rollback { + __le32 magic_word; // Return an error if not equal to 0x5C8912F3 +} __packed; + +struct hif_cnf_prevent_rollback { + __le32 status; +} __packed; + #endif diff --git a/drivers/staging/wfx/hif_tx.c b/drivers/staging/wfx/hif_tx.c index 6db41587cc7a5..899e1eb71a44b 100644 --- a/drivers/staging/wfx/hif_tx.c +++ b/drivers/staging/wfx/hif_tx.c @@ -535,6 +535,24 @@ int hif_update_ie_beacon(struct wfx_vif *wvif, const u8 *ies, size_t ies_len) return ret; } +int hif_burn_prevent_rollback(struct wfx_dev *wdev, u32 magic_word) +{ + int ret; + struct hif_msg *hif; + struct hif_req_prevent_rollback *body = wfx_alloc_hif(sizeof(*body), + &hif); + + if (!hif) + return -ENOMEM; + body->magic_word = cpu_to_le32(magic_word); + wfx_fill_header(hif, -1, HIF_REQ_ID_PREVENT_ROLLBACK, sizeof(*body)); + ret = wfx_cmd_send(wdev, hif, NULL, 0, false); + if (ret == le32_to_cpu(HIF_STATUS_ROLLBACK_SUCCESS)) + ret = 0; + kfree(hif); + return ret; +} + int hif_sl_send_pub_keys(struct wfx_dev *wdev, const u8 *pubkey, const u8 *pubkey_hmac) { diff --git a/drivers/staging/wfx/hif_tx.h b/drivers/staging/wfx/hif_tx.h index e1da28aef706e..d29c72d94789a 100644 --- a/drivers/staging/wfx/hif_tx.h +++ b/drivers/staging/wfx/hif_tx.h @@ -57,6 +57,7 @@ int hif_start(struct wfx_vif *wvif, const struct ieee80211_bss_conf *conf, int hif_beacon_transmit(struct wfx_vif *wvif, bool enable); int hif_map_link(struct wfx_vif *wvif, u8 *mac_addr, int flags, int sta_id); int hif_update_ie_beacon(struct wfx_vif *wvif, const u8 *ies, size_t ies_len); +int hif_burn_prevent_rollback(struct wfx_dev *wdev, u32 magic_word); int hif_sl_set_mac_key(struct wfx_dev *wdev, const u8 *slk_key, int destination); int hif_sl_config(struct wfx_dev *wdev, const unsigned long *bitmap); diff --git a/drivers/staging/wfx/nl80211_vendor.c b/drivers/staging/wfx/nl80211_vendor.c index ec2fd2d73885f..1a9d411718a73 100644 --- a/drivers/staging/wfx/nl80211_vendor.c +++ b/drivers/staging/wfx/nl80211_vendor.c @@ -7,6 +7,7 @@ #include "nl80211_vendor.h" #include "wfx.h" #include "sta.h" +#include "hif_tx.h" int wfx_nl_ps_timeout(struct wiphy *wiphy, struct wireless_dev *widev, const void *data, int data_len) @@ -47,3 +48,25 @@ int wfx_nl_ps_timeout(struct wiphy *wiphy, struct wireless_dev *widev, return rc; } +int wfx_nl_burn_antirollback(struct wiphy *wiphy, struct wireless_dev *widev, + const void *data, int data_len) +{ + struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); + struct wfx_dev *wdev = (struct wfx_dev *)hw->priv; + struct nlattr *tb[WFX_NL80211_ATTR_MAX]; + u32 magic; + int rc; + + rc = nla_parse(tb, WFX_NL80211_ATTR_MAX - 1, data, data_len, + wfx_nl_policy, NULL); + if (rc) + return rc; + if (!tb[WFX_NL80211_ATTR_ROLLBACK_MAGIC]) + return -EINVAL; + magic = nla_get_u32(tb[WFX_NL80211_ATTR_ROLLBACK_MAGIC]); + rc = hif_burn_prevent_rollback(wdev, magic); + if (rc) + return -EINVAL; + return 0; +} + diff --git a/drivers/staging/wfx/nl80211_vendor.h b/drivers/staging/wfx/nl80211_vendor.h index c069330e240a9..49efe8716a654 100644 --- a/drivers/staging/wfx/nl80211_vendor.h +++ b/drivers/staging/wfx/nl80211_vendor.h @@ -16,18 +16,23 @@ int wfx_nl_ps_timeout(struct wiphy *wiphy, struct wireless_dev *widev, const void *data, int data_len); +int wfx_nl_burn_antirollback(struct wiphy *wiphy, struct wireless_dev *widev, + const void *data, int data_len); enum { WFX_NL80211_SUBCMD_PS_TIMEOUT = 0x10, + WFX_NL80211_SUBCMD_BURN_PREVENT_ROLLBACK = 0x20, }; enum { WFX_NL80211_ATTR_PS_TIMEOUT = 1, + WFX_NL80211_ATTR_ROLLBACK_MAGIC = 2, WFX_NL80211_ATTR_MAX }; static const struct nla_policy wfx_nl_policy[WFX_NL80211_ATTR_MAX] = { [WFX_NL80211_ATTR_PS_TIMEOUT] = NLA_POLICY_RANGE(NLA_S32, -1, 127), + [WFX_NL80211_ATTR_ROLLBACK_MAGIC] = { .type = NLA_U32 }, }; static const struct wiphy_vendor_command wfx_nl80211_vendor_commands[] = { @@ -38,6 +43,12 @@ static const struct wiphy_vendor_command wfx_nl80211_vendor_commands[] = { .policy = wfx_nl_policy, .doit = wfx_nl_ps_timeout, .maxattr = WFX_NL80211_ATTR_MAX - 1, + }, { + .info.vendor_id = WFX_NL80211_ID, + .info.subcmd = WFX_NL80211_SUBCMD_BURN_PREVENT_ROLLBACK, + .policy = wfx_nl_policy, + .doit = wfx_nl_burn_antirollback, + .maxattr = WFX_NL80211_ATTR_MAX - 1, }, }; From patchwork Tue May 26 17:18:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= X-Patchwork-Id: 215521 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2427CC433E1 for ; Tue, 26 May 2020 17:19:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EEAE7207FB for ; Tue, 26 May 2020 17:19:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="dwGkzJKb" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389096AbgEZRTR (ORCPT ); Tue, 26 May 2020 13:19:17 -0400 Received: from mail-bn8nam11on2083.outbound.protection.outlook.com ([40.107.236.83]:48578 "EHLO NAM11-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388955AbgEZRTP (ORCPT ); Tue, 26 May 2020 13:19:15 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TiHYn304vWKuMxbltqPfbdqFMxGyrnIXC7fHnfbMbjXmkaKWFst5QphEXVoSGmYw4n9XHlyaT5T72BDOjRboWxXMYF8/bS5BCbQ4rDoZKX2+BvrqDzxhOprizRBvljQXYQ2xdvnnmJjgZnBBrn2Ra8kgd6rzfgEFAhL0iXtWP9MMe6kOPuZANGYfouvIIkUUzg1/kXlCc84gJ8rsWrLVn4rWKNlNj4J8TeF1QXvcclfP/YT2Dy5IFuMAuMnXNxbCasSn6HWfPD4mFvmaBLyWisrU9ErxJSrk8VWf3PIBgL/8srUZ7moBpEZDhUTdO8kTPN6P8OQdSCeaQIT7AhXMrQ== 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-SenderADCheck; bh=eSH+4+k3JusHMRstcmgX3C9b+JhpbSv4FizBu66MENE=; b=G0hw/65bvuy6uDJtab33NJWhQlDYbhZhWODEBDWfeZ9RnqDzygNvBj1SR/Q6cFKlHc39rzfzU8kOfidX1rPx3MPvu1zWmStm7EzCQGESnmCsZAknhQlqa+vbU4ZI8wXsD/n+M0uF1950d4nnkWJsfVp4kx3l4liPUdg79IikqfeuyII5OLoeQhJWux/9AuEK71cX5XfxWw9cw4z/PZYqwYaA8xcrQqh+z0acDIY1SUyoUQSysel/RroRCUFeDuT1A5N/0xWEv0TmkhkUZBRHaZBjK/5aoc6/rB9HyCCzVU8CixxJRxqApKhFepY1VUC8tVJYz362B3HFQrqio3mfFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eSH+4+k3JusHMRstcmgX3C9b+JhpbSv4FizBu66MENE=; b=dwGkzJKbJiJfcQ3b5DxCPj62Y333j17vqP6fDZKqaUARzeBXa2JDqd+HZl0Z4+gM3XXHZN3P+ajQqdplhxnSVjnj6uNKn0IIFjCtM5mSRJhiF8YP4GbYINCyKQwxM1Kzz/BANwQy5VJdYAfl1Wn2Al+cvMp666gvfsEMgWhdUdY= Authentication-Results: driverdev.osuosl.org; dkim=none (message not signed) header.d=none; driverdev.osuosl.org; dmarc=none action=none header.from=silabs.com; Received: from SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) by SN6PR11MB2750.namprd11.prod.outlook.com (2603:10b6:805:54::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.25; Tue, 26 May 2020 17:18:55 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336%7]) with mapi id 15.20.3021.029; Tue, 26 May 2020 17:18:55 +0000 From: Jerome Pouiller To: devel@driverdev.osuosl.org, linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= Subject: [PATCH 09/10] staging: wfx: allow to set PTA settings Date: Tue, 26 May 2020 19:18:20 +0200 Message-Id: <20200526171821.934581-10-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200526171821.934581-1-Jerome.Pouiller@silabs.com> References: <20200526171821.934581-1-Jerome.Pouiller@silabs.com> X-ClientProxiedBy: PR1PR01CA0007.eurprd01.prod.exchangelabs.com (2603:10a6:102::20) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.home (2a01:e35:2435:66a0:544b:f17b:7ae8:fb7) by PR1PR01CA0007.eurprd01.prod.exchangelabs.com (2603:10a6:102::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3045.17 via Frontend Transport; Tue, 26 May 2020 17:18:53 +0000 X-Mailer: git-send-email 2.26.2 X-Originating-IP: [2a01:e35:2435:66a0:544b:f17b:7ae8:fb7] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 15e8e816-98a3-4326-ec72-08d80198de6f X-MS-TrafficTypeDiagnostic: SN6PR11MB2750: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3173; X-Forefront-PRVS: 041517DFAB X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: StMQGCRjNe6N8EzyQb8MeaMhJHIn2Smah4N9hdoUCv4XESyXkQsUSZXthzuiIZ7AtrIXrNtAqdNBiGcLBpBksGnBNSGo+hiTSe76onYNhb4A+mBXM03nO31QEyHiMcB4LuqCo0HEUEjL3EFsMg3GRnFRc0pOwQLPtj1U+4C3HGkA5TaJysG5Ieb2f0J3nsNPjfayf5UWc04aR2N2bruxIE9fUIA9VHG0tjUerfxvlKbos5kV8avGAkwGnLrryGcyNYX5fx7XJsPFmvBPnDDGwEnU657vQr7JrhZ4B/QP/udPYQdo42piIznCVySaSptA X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB2718.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(396003)(376002)(366004)(39860400002)(136003)(346002)(4326008)(6512007)(316002)(8676002)(8936002)(2616005)(6486002)(2906002)(107886003)(1076003)(86362001)(6666004)(186003)(16526019)(5660300002)(66574014)(36756003)(54906003)(66556008)(478600001)(8886007)(6506007)(66946007)(66476007)(52116002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: d6DcMiRydztx7KEZxPujyEV85zBBmiO3mjw5dugUX428q4XK2Q2NRabyBIAk4nXDKS8jn97cL2t59/8eR62bSVTlWf0f+/qSwSqNI/QPElnxZ6fL3kFYmg3cg/UHOANDlWAhlaA7z4qrOfeY3YjPtfLMzG+w+MAtWJ541Fw2la129SUI1I3/F+VSRLVt8x81VLkprbezNNd4kEW9A+xf623xVUR8fTqRv/R20P5WfMvRO2XtNFzosVweiVyjkTbjykiZGACaRXpFWxKeLOLD9aIS1pGaj8vkJjIwHHMPXbhsGvgVdQ9WBDRTdOnsrnMGNxu4/d7hPffonwlI6bqXTcpojj+Iu1/Oi63jK/hv2G8d/4qsnxdGwb2sA1ITxr1H9IU4+hW319OUeVZUvRtqew9igL+Hr0av3W1FZLt6eXIY5WHfR9tAm+gs9LGBV3yADHn85TK+olmAwIMG7sBXqWPTwtrbmbtA9SmqHr9ZS6YrxLmh5xC+DZTkuy1qRxDq81W8kZD+pxcZZXsooywlL13NpYR5o7874GXqTvzECtA= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15e8e816-98a3-4326-ec72-08d80198de6f X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 May 2020 17:18:55.3018 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3ZDHmM9rFan3Iio/5Qai+nn3cKXeaa7StWKWoAOq4EKTHqHllfOfdcV+vJ3vFB/9k4u7OIPYiaibIhtzQxuHdA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR11MB2750 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Jérôme Pouiller The device allows to do Packet Traffic Arbitration (PTA or also Coex) with other RF chips. Currently, there is no API to manage the PTA parameters. This patch provides a vendor extension to nl80211 to change the PTA parameters. Signed-off-by: Jérôme Pouiller --- drivers/staging/wfx/hif_api_general.h | 41 ++++++++++++++++ drivers/staging/wfx/hif_tx.c | 46 +++++++++++++++++ drivers/staging/wfx/hif_tx.h | 5 ++ drivers/staging/wfx/nl80211_vendor.c | 71 +++++++++++++++++++++++++++ drivers/staging/wfx/nl80211_vendor.h | 16 ++++++ drivers/staging/wfx/wfx.h | 4 ++ 6 files changed, 183 insertions(+) diff --git a/drivers/staging/wfx/hif_api_general.h b/drivers/staging/wfx/hif_api_general.h index c8af3534700ca..eb90164ab87c7 100644 --- a/drivers/staging/wfx/hif_api_general.h +++ b/drivers/staging/wfx/hif_api_general.h @@ -369,4 +369,45 @@ struct hif_cnf_prevent_rollback { __le32 status; } __packed; +struct hif_req_pta_settings { + u8 PtaMode; + u8 RequestSignalActiveLevel; + u8 PrioritySignalActiveLevel; + u8 FreqSignalActiveLevel; + u8 GrantSignalActiveLevel; + u8 CoexType; + u8 DefaultGrantState; + u8 SimultaneousRxAccesses; + u8 PrioritySamplingTime; + u8 TxRxSamplingTime; + u8 FreqSamplingTime; + u8 GrantValidTime; + u8 FemControlTime; + u8 FirstSlotTime; + __le16 PeriodicTxRxSamplingTime; + __le16 CoexQuota; + __le16 WlanQuota; +} __packed; + +struct hif_cnf_pta_settings { + __le32 status; +} __packed; + +struct hif_req_pta_priority { + __le32 priority; +} __packed; + +struct hif_cnf_pta_priority { + __le32 status; +} __packed; + +struct hif_req_pta_enable { + u8 enable; + u8 reserved[3]; +} __packed; + +struct hif_cnf_pta_enable { + __le32 status; +} __packed; + #endif diff --git a/drivers/staging/wfx/hif_tx.c b/drivers/staging/wfx/hif_tx.c index 899e1eb71a44b..4cb8fe865e58f 100644 --- a/drivers/staging/wfx/hif_tx.c +++ b/drivers/staging/wfx/hif_tx.c @@ -535,6 +535,52 @@ int hif_update_ie_beacon(struct wfx_vif *wvif, const u8 *ies, size_t ies_len) return ret; } +int hif_pta_settings(struct wfx_dev *wdev, + const struct hif_req_pta_settings *parms) +{ + int ret; + struct hif_msg *hif; + struct hif_req_pta_settings *body = wfx_alloc_hif(sizeof(*body), &hif); + + if (!hif) + return -ENOMEM; + memcpy(body, parms, sizeof(*body)); + wfx_fill_header(hif, -1, HIF_REQ_ID_PTA_SETTINGS, sizeof(*body)); + ret = wfx_cmd_send(wdev, hif, NULL, 0, false); + kfree(hif); + return ret; +} + +int hif_pta_priority(struct wfx_dev *wdev, u32 priority) +{ + int ret; + struct hif_msg *hif; + struct hif_req_pta_priority *body = wfx_alloc_hif(sizeof(*body), &hif); + + if (!hif) + return -ENOMEM; + body->priority = cpu_to_le32(priority); + wfx_fill_header(hif, -1, HIF_REQ_ID_PTA_PRIORITY, sizeof(*body)); + ret = wfx_cmd_send(wdev, hif, NULL, 0, false); + kfree(hif); + return ret; +} + +int hif_pta_enable(struct wfx_dev *wdev, bool enable) +{ + int ret; + struct hif_msg *hif; + struct hif_req_pta_enable *body = wfx_alloc_hif(sizeof(*body), &hif); + + if (!hif) + return -ENOMEM; + body->enable = enable; + wfx_fill_header(hif, -1, HIF_REQ_ID_PTA_STATE, sizeof(*body)); + ret = wfx_cmd_send(wdev, hif, NULL, 0, false); + kfree(hif); + return ret; +} + int hif_burn_prevent_rollback(struct wfx_dev *wdev, u32 magic_word) { int ret; diff --git a/drivers/staging/wfx/hif_tx.h b/drivers/staging/wfx/hif_tx.h index d29c72d94789a..f7202be4e7fc6 100644 --- a/drivers/staging/wfx/hif_tx.h +++ b/drivers/staging/wfx/hif_tx.h @@ -15,6 +15,7 @@ struct ieee80211_bss_conf; struct ieee80211_tx_queue_params; struct cfg80211_scan_request; struct hif_req_add_key; +struct hif_req_pta_settings; struct wfx_dev; struct wfx_vif; @@ -57,6 +58,10 @@ int hif_start(struct wfx_vif *wvif, const struct ieee80211_bss_conf *conf, int hif_beacon_transmit(struct wfx_vif *wvif, bool enable); int hif_map_link(struct wfx_vif *wvif, u8 *mac_addr, int flags, int sta_id); int hif_update_ie_beacon(struct wfx_vif *wvif, const u8 *ies, size_t ies_len); +int hif_pta_settings(struct wfx_dev *wdev, + const struct hif_req_pta_settings *parms); +int hif_pta_priority(struct wfx_dev *wdev, u32 priority); +int hif_pta_enable(struct wfx_dev *wdev, bool enable); int hif_burn_prevent_rollback(struct wfx_dev *wdev, u32 magic_word); int hif_sl_set_mac_key(struct wfx_dev *wdev, const u8 *slk_key, int destination); diff --git a/drivers/staging/wfx/nl80211_vendor.c b/drivers/staging/wfx/nl80211_vendor.c index 1a9d411718a73..d08072adaf9d6 100644 --- a/drivers/staging/wfx/nl80211_vendor.c +++ b/drivers/staging/wfx/nl80211_vendor.c @@ -70,3 +70,74 @@ int wfx_nl_burn_antirollback(struct wiphy *wiphy, struct wireless_dev *widev, return 0; } +int wfx_nl_pta_params(struct wiphy *wiphy, struct wireless_dev *widev, + const void *data, int data_len) +{ + struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); + struct wfx_dev *wdev = (struct wfx_dev *)hw->priv; + int reply_size = nla_total_size(sizeof(wdev->pta_settings)) + + nla_total_size(sizeof(u8)) + + nla_total_size(sizeof(u32)); + struct nlattr *tb[WFX_NL80211_ATTR_MAX]; + bool do_enable = false; + struct sk_buff *msg; + struct nlattr *nla; + int rc; + + rc = nla_parse(tb, WFX_NL80211_ATTR_MAX - 1, data, data_len, + wfx_nl_policy, NULL); + if (rc) + return rc; + nla = tb[WFX_NL80211_ATTR_PTA_ENABLE]; + if (nla) { + do_enable = true; + wdev->pta_enable = nla_get_u8(tb[WFX_NL80211_ATTR_PTA_ENABLE]); + } + if (do_enable && !wdev->pta_enable) + rc = hif_pta_enable(wdev, wdev->pta_enable); + if (rc) + return rc; + nla = tb[WFX_NL80211_ATTR_PTA_SETTINGS]; + if (nla) { + // User has to care about endianness of data it send. + memcpy(&wdev->pta_settings, nla_data(nla), + sizeof(wdev->pta_settings)); + rc = hif_pta_settings(wdev, &wdev->pta_settings); + } + if (rc) + return rc; + nla = tb[WFX_NL80211_ATTR_PTA_PRIORITY]; + if (nla) { + wdev->pta_priority = + nla_get_u32(tb[WFX_NL80211_ATTR_PTA_PRIORITY]); + rc = hif_pta_priority(wdev, wdev->pta_priority); + } + if (rc) + return rc; + if (do_enable && wdev->pta_enable) + rc = hif_pta_enable(wdev, wdev->pta_enable); + if (rc) + return rc; + + msg = cfg80211_vendor_cmd_alloc_reply_skb(wiphy, reply_size); + if (!msg) + return -ENOMEM; + rc = nla_put(msg, WFX_NL80211_ATTR_PTA_SETTINGS, + sizeof(wdev->pta_settings), &wdev->pta_settings); + if (rc) + goto error; + rc = nla_put_u32(msg, WFX_NL80211_ATTR_PTA_PRIORITY, + wdev->pta_priority); + if (rc) + goto error; + rc = nla_put_u8(msg, WFX_NL80211_ATTR_PTA_ENABLE, + wdev->pta_enable ? 1 : 0); + if (rc) + goto error; + return cfg80211_vendor_cmd_reply(msg); + +error: + kfree_skb(msg); + return rc; +} + diff --git a/drivers/staging/wfx/nl80211_vendor.h b/drivers/staging/wfx/nl80211_vendor.h index 49efe8716a654..0ff3bf73f0ad3 100644 --- a/drivers/staging/wfx/nl80211_vendor.h +++ b/drivers/staging/wfx/nl80211_vendor.h @@ -18,21 +18,31 @@ int wfx_nl_ps_timeout(struct wiphy *wiphy, struct wireless_dev *widev, const void *data, int data_len); int wfx_nl_burn_antirollback(struct wiphy *wiphy, struct wireless_dev *widev, const void *data, int data_len); +int wfx_nl_pta_params(struct wiphy *wiphy, struct wireless_dev *widev, + const void *data, int data_len); enum { WFX_NL80211_SUBCMD_PS_TIMEOUT = 0x10, WFX_NL80211_SUBCMD_BURN_PREVENT_ROLLBACK = 0x20, + WFX_NL80211_SUBCMD_PTA_PARMS = 0x30, }; enum { WFX_NL80211_ATTR_PS_TIMEOUT = 1, WFX_NL80211_ATTR_ROLLBACK_MAGIC = 2, + WFX_NL80211_ATTR_PTA_ENABLE = 3, + WFX_NL80211_ATTR_PTA_PRIORITY = 4, + WFX_NL80211_ATTR_PTA_SETTINGS = 5, WFX_NL80211_ATTR_MAX }; static const struct nla_policy wfx_nl_policy[WFX_NL80211_ATTR_MAX] = { [WFX_NL80211_ATTR_PS_TIMEOUT] = NLA_POLICY_RANGE(NLA_S32, -1, 127), [WFX_NL80211_ATTR_ROLLBACK_MAGIC] = { .type = NLA_U32 }, + [WFX_NL80211_ATTR_PTA_ENABLE] = NLA_POLICY_MAX(NLA_U8, 1), + [WFX_NL80211_ATTR_PTA_PRIORITY] = { .type = NLA_U32 }, + [WFX_NL80211_ATTR_PTA_SETTINGS] = + NLA_POLICY_EXACT_LEN(sizeof(struct hif_req_pta_settings)), }; static const struct wiphy_vendor_command wfx_nl80211_vendor_commands[] = { @@ -49,6 +59,12 @@ static const struct wiphy_vendor_command wfx_nl80211_vendor_commands[] = { .policy = wfx_nl_policy, .doit = wfx_nl_burn_antirollback, .maxattr = WFX_NL80211_ATTR_MAX - 1, + }, { + .info.vendor_id = WFX_NL80211_ID, + .info.subcmd = WFX_NL80211_SUBCMD_PTA_PARMS, + .policy = wfx_nl_policy, + .doit = wfx_nl_pta_params, + .maxattr = WFX_NL80211_ATTR_MAX - 1, }, }; diff --git a/drivers/staging/wfx/wfx.h b/drivers/staging/wfx/wfx.h index ef68aa4086e01..078f7885bf2fa 100644 --- a/drivers/staging/wfx/wfx.h +++ b/drivers/staging/wfx/wfx.h @@ -60,6 +60,10 @@ struct wfx_dev { struct mutex rx_stats_lock; struct hif_tx_power_loop_info tx_power_loop_info; struct mutex tx_power_loop_info_lock; + + bool pta_enable; + u32 pta_priority; + struct hif_req_pta_settings pta_settings; }; struct wfx_vif {