From patchwork Thu Sep 19 13:52:28 2019 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: 1164644 Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=silabs.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="b/0vnucX"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 46Yyw65BH3z9sP3 for ; Thu, 19 Sep 2019 23:52:38 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390550AbfISNwf (ORCPT ); Thu, 19 Sep 2019 09:52:35 -0400 Received: from mail-eopbgr700060.outbound.protection.outlook.com ([40.107.70.60]:34912 "EHLO NAM04-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2387924AbfISNwe (ORCPT ); Thu, 19 Sep 2019 09:52:34 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y8Co5da7ARoXHfm55TTf+w6S3UzCCL47kxApm3h/L4A8rv+izIXCrGAqwg6sycCRXqniVhOR/AQdT6tX0PuoHy8dnhI1KQJg5YX/Ejgk4I39Jc2HF2B8a+9AQ0rKeIGaI0osemFcj3ZryTFL1Cv936GcOoJ8XKilA+dZ5VwksRdHxGW5BYU03KmYqcjHeykHY6csUojbyIf/ktlFECE3yPXxBKvXxkLurm7AuWGxBKpMDaJKlNl6s4o4meSsqVdMJSQro2FH7mVefwOjQU9XD+FuEJ59LmjYVUKhp50FR76KPP5I4Ej2i392bJfviLOoM8ikFRPgl5v7ZJDC9L6UtQ== 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=aqNWfJxy/CWzD6OeIYMk2l7RnErTKIsL4U5WwzVKuYM=; b=knN8K1nQCN3+9Dys6TG1lbeXQma/c7xWURRnscwJnGknjiEzM7vaLhL9RcGhNlLvorf7gPYy9wwX1+AXEypug7nyYYzO7BmdpHhxA2jdjbP4limkoUpFeHyUH34rh2DrnWOnmZS48VWjRb8MXJmeJxP7tuccy6lp6uSZ2b7O+bpF1dui5lr+V0zqQg8lHIIM1P8pOPD5KTqMp4n9kf/xXA0P9y1kKh7vMltwoI6meniNEtsVftxBqSIKfzhSiZ6HJjUtCKazh7h7zjsGsrlizlyWtFUaJTB6iMZ5stb+4jcuCzHkZg5ExRCoqnSXsQyXUlJ7VM51c//kWmEp4pU2jQ== 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=aqNWfJxy/CWzD6OeIYMk2l7RnErTKIsL4U5WwzVKuYM=; b=b/0vnucXhX5jl8qv2uAlkPXkOtjXwBcmIcPFh7GRfFLhJyft4cKukPuhneSWAe4WJtBIUukW/h/fZvMUstkgC26tQHqMWh28kVd9IUFD/ifrY5oWUwH6jdNpRMxz5I3azZF5Mwa6zX3qDvqxq4UM2RbrAF8+tJAbIYBxHVbGuzs= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (20.179.149.217) by MN2PR11MB4400.namprd11.prod.outlook.com (52.135.37.204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.20; Thu, 19 Sep 2019 13:52:29 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::45dc:e073:4446:4bf8]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::45dc:e073:4446:4bf8%3]) with mapi id 15.20.2263.023; Thu, 19 Sep 2019 13:52:29 +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" , David Le Goff , Jerome Pouiller Subject: [PATCH v2 00/20] Add support for Silicon Labs WiFi chip WF200 and further Thread-Topic: [PATCH v2 00/20] Add support for Silicon Labs WiFi chip WF200 and further Thread-Index: AQHVbvF5D+UjeNCK102+Pvb9efuQpQ== Date: Thu, 19 Sep 2019 13:52:28 +0000 Message-ID: <20190919135220.30663-1-Jerome.Pouiller@silabs.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Jerome.Pouiller@silabs.com; x-originating-ip: [37.71.187.125] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 492ef907-d106-4e46-8181-08d73d089c9d x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020); SRVR:MN2PR11MB4400; x-ms-traffictypediagnostic: MN2PR11MB4400: x-ms-exchange-purlcount: 2 x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2089; x-forefront-prvs: 016572D96D x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6029001)(376002)(39850400004)(136003)(366004)(396003)(346002)(189003)(199004)(53754006)(3846002)(8676002)(76116006)(476003)(25786009)(2616005)(6116002)(54906003)(71190400001)(6436002)(102836004)(6486002)(6306002)(36756003)(186003)(71200400001)(26005)(305945005)(6512007)(966005)(99286004)(6506007)(91956017)(7736002)(8936002)(256004)(81156014)(14444005)(2906002)(66066001)(107886003)(4326008)(86362001)(14454004)(478600001)(64756008)(81166006)(2501003)(486006)(66574012)(316002)(66946007)(66446008)(66556008)(5660300002)(66476007)(1076003)(110136005); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR11MB4400; H:MN2PR11MB4063.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: silabs.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 8WAxsL0Xq2MwSs3hTHsaA3ZLssGFS1FpIMtVMm+p6L1U9fndMwdWYxIXqFBjv3/JbsVQrm9foG2yFv3TeveEIk8w1SFMVcx1K0RljMuYdtzOYPmIJg9oH7lh/fCGt+xM4hGRCxVMwRka0PFkqNtqEm3cPzb4CKnPy2cBiJvq29n6yeDdFNpwru1F5gKcrLxCkaKMwM88u5WQYwe9/gU4ZgQhZ6f2spfOX0dGopZ4tGfTgx3OkLKSczBYm2Vtuh3cKhsqIAfMVowr4yUUFGgy+5IUhG96phJY3mAy3z2TDV4UyuG648ZPhKoFHdiUDldllxTUQG+FGH6C2+Cd9tKNAIdJEz8II2A3qG8QAfaFS8M2/EabPoc1trnydWfTiY+JiuV+Gh9F2xwtx2xGTlyvqErlaDMX9Lgf5H2RK9Cr7EY= Content-ID: <67223C42AAE63A4F918638EA6A888675@namprd11.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 492ef907-d106-4e46-8181-08d73d089c9d X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Sep 2019 13:52:28.9147 (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: Oedqu9qq2g2bbcmxr1zc0QhMqWoo+l2/6m1SmxhDINNbXjp9nXXUtWeVpCqXDVSp7HJg+/Y0NggFPzWF1JrMZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4400 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jérôme Pouiller Hello all, This series add support for Silicon Labs WiFi chip WF200 and further: https://www.silabs.com/documents/public/data-sheets/wf200-datasheet.pdf This driver is an export from: https://github.com/SiliconLabs/wfx-linux-driver/ I squashed all commits from github (it definitely does not make sense to import history). Then I split it in comprehensible (at least try to be) commits. I hope it will help readers to understand driver architecture. IMHO, firsts commits are clean enough to be reviewed. Things get more difficult when I introduce mac8011 API. I tried to extract important parts like Rx/Tx process but, big and complex patches seem unavoidable in this part. Architecture itself is described in commit messages. The series below is aligned on version 2.3.1 on github. If compare this series with github, you will find traditional differences between external and a in-tree driver: Documentation, build infrastructure, compatibility with older kernel revisions, etc... In add, I dropped all code in CONFIG_WFX_SECURE_LINK. Indeed, "Secure Link" feature depends on mbedtls and I don't think to pull mbedtls in kernel is an option (see "TODO" file in first commit). Changes in v2: - Add TODO file (and dropped todo list from cover letter) - Drop code relative to compatibility with older kernels Jérôme Pouiller (20): staging: wfx: add infrastructure for new driver staging: wfx: add support for I/O access staging: wfx: add I/O API staging: wfx: add tracepoints for I/O access staging: wfx: load firmware staging: wfx: import HIF API headers staging: wfx: add IRQ handling staging: wfx: add tracepoints for HIF staging: wfx: add support for start-up indication staging: wfx: instantiate mac80211 data staging: wfx: allow to send commands to chip staging: wfx: add HIF commands helpers staging: wfx: introduce "secure link" staging: wfx: setup initial chip configuration staging: wfx: add debug files and trace debug events staging: wfx: allow to send 802.11 frames staging: wfx: allow to receive 802.11 frames staging: wfx: allow to scan networks staging: wfx: implement 802.11 key handling staging: wfx: implement the rest of mac80211 API MAINTAINERS | 5 + drivers/staging/Kconfig | 2 + drivers/staging/Makefile | 1 + .../bindings/net/wireless/siliabs,wfx.txt | 97 + drivers/staging/wfx/Kconfig | 7 + drivers/staging/wfx/Makefile | 24 + drivers/staging/wfx/TODO | 20 + drivers/staging/wfx/bh.c | 316 ++++ drivers/staging/wfx/bh.h | 32 + drivers/staging/wfx/bus.h | 34 + drivers/staging/wfx/bus_sdio.c | 268 +++ drivers/staging/wfx/bus_spi.c | 264 +++ drivers/staging/wfx/data_rx.c | 208 +++ drivers/staging/wfx/data_rx.h | 18 + drivers/staging/wfx/data_tx.c | 799 ++++++++ drivers/staging/wfx/data_tx.h | 93 + drivers/staging/wfx/debug.c | 305 +++ drivers/staging/wfx/debug.h | 19 + drivers/staging/wfx/fwio.c | 387 ++++ drivers/staging/wfx/fwio.h | 15 + drivers/staging/wfx/hif_api_cmd.h | 681 +++++++ drivers/staging/wfx/hif_api_general.h | 437 +++++ drivers/staging/wfx/hif_api_mib.h | 558 ++++++ drivers/staging/wfx/hif_rx.c | 336 ++++ drivers/staging/wfx/hif_rx.h | 18 + drivers/staging/wfx/hif_tx.c | 470 +++++ drivers/staging/wfx/hif_tx.h | 67 + drivers/staging/wfx/hif_tx_mib.h | 281 +++ drivers/staging/wfx/hwio.c | 338 ++++ drivers/staging/wfx/hwio.h | 75 + drivers/staging/wfx/key.c | 258 +++ drivers/staging/wfx/key.h | 22 + drivers/staging/wfx/main.c | 500 +++++ drivers/staging/wfx/main.h | 48 + drivers/staging/wfx/queue.c | 606 ++++++ drivers/staging/wfx/queue.h | 59 + drivers/staging/wfx/scan.c | 289 +++ drivers/staging/wfx/scan.h | 42 + drivers/staging/wfx/secure_link.h | 46 + drivers/staging/wfx/sta.c | 1643 +++++++++++++++++ drivers/staging/wfx/sta.h | 101 + drivers/staging/wfx/traces.h | 434 +++++ drivers/staging/wfx/wfx.h | 204 ++ drivers/staging/wfx/wfx_version.h | 3 + 44 files changed, 10430 insertions(+) create mode 100644 drivers/staging/wfx/Documentation/devicetree/bindings/net/wireless/siliabs,wfx.txt create mode 100644 drivers/staging/wfx/Kconfig create mode 100644 drivers/staging/wfx/Makefile create mode 100644 drivers/staging/wfx/TODO create mode 100644 drivers/staging/wfx/bh.c create mode 100644 drivers/staging/wfx/bh.h create mode 100644 drivers/staging/wfx/bus.h create mode 100644 drivers/staging/wfx/bus_sdio.c create mode 100644 drivers/staging/wfx/bus_spi.c create mode 100644 drivers/staging/wfx/data_rx.c create mode 100644 drivers/staging/wfx/data_rx.h create mode 100644 drivers/staging/wfx/data_tx.c create mode 100644 drivers/staging/wfx/data_tx.h create mode 100644 drivers/staging/wfx/debug.c create mode 100644 drivers/staging/wfx/debug.h create mode 100644 drivers/staging/wfx/fwio.c create mode 100644 drivers/staging/wfx/fwio.h create mode 100644 drivers/staging/wfx/hif_api_cmd.h create mode 100644 drivers/staging/wfx/hif_api_general.h create mode 100644 drivers/staging/wfx/hif_api_mib.h create mode 100644 drivers/staging/wfx/hif_rx.c create mode 100644 drivers/staging/wfx/hif_rx.h create mode 100644 drivers/staging/wfx/hif_tx.c create mode 100644 drivers/staging/wfx/hif_tx.h create mode 100644 drivers/staging/wfx/hif_tx_mib.h create mode 100644 drivers/staging/wfx/hwio.c create mode 100644 drivers/staging/wfx/hwio.h create mode 100644 drivers/staging/wfx/key.c create mode 100644 drivers/staging/wfx/key.h create mode 100644 drivers/staging/wfx/main.c create mode 100644 drivers/staging/wfx/main.h create mode 100644 drivers/staging/wfx/queue.c create mode 100644 drivers/staging/wfx/queue.h create mode 100644 drivers/staging/wfx/scan.c create mode 100644 drivers/staging/wfx/scan.h create mode 100644 drivers/staging/wfx/secure_link.h create mode 100644 drivers/staging/wfx/sta.c create mode 100644 drivers/staging/wfx/sta.h create mode 100644 drivers/staging/wfx/traces.h create mode 100644 drivers/staging/wfx/wfx.h create mode 100644 drivers/staging/wfx/wfx_version.h