From patchwork Wed Apr 17 15:45:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Russkikh X-Patchwork-Id: 52885 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D0CEF1B811; Wed, 17 Apr 2019 17:45:50 +0200 (CEST) Received: from NAM05-DM3-obe.outbound.protection.outlook.com (mail-eopbgr730041.outbound.protection.outlook.com [40.107.73.41]) by dpdk.org (Postfix) with ESMTP id 684351B7E3 for ; Wed, 17 Apr 2019 17:45:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=AQUANTIA1COM.onmicrosoft.com; s=selector1-aquantia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PuEaxuaGuE7AY9He68kKqmK3MEoQsjdQFDfgoGV20xE=; b=i04YLWNt/UEaFqEmQVPLnDncCUC/JAcMjcCOJQ8bIlMXV6xlnYzlrduEc7tLmQVViViOXUeEpu//5YRnBqevYYvOKHMg6sEMOUu2kFf1DWoq5pqPuOGzbJbvA57mVSxrnxg44lvPbqN3NfQzhxgfaE5AZ6NLeVWr0xmvcoj029U= Received: from DM6PR11MB3625.namprd11.prod.outlook.com (20.178.230.149) by DM6PR11MB3738.namprd11.prod.outlook.com (20.179.16.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1813.12; Wed, 17 Apr 2019 15:45:45 +0000 Received: from DM6PR11MB3625.namprd11.prod.outlook.com ([fe80::f035:2c20:5a61:7653]) by DM6PR11MB3625.namprd11.prod.outlook.com ([fe80::f035:2c20:5a61:7653%3]) with mapi id 15.20.1813.011; Wed, 17 Apr 2019 15:45:45 +0000 From: Igor Russkikh To: "dev@dpdk.org" CC: "ferruh.yigit@intel.com" , "thomas@monjalon.net" , "arybchenko@solarflare.com" , "konstantin.ananyev@intel.com" , Igor Russkikh Thread-Topic: [PATCH v2 7/7] net/atlantic: public experimental macsec API Thread-Index: AQHU9TSe/ooEPAKDEEKlJimSj3hrIA== Date: Wed, 17 Apr 2019 15:45:45 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BYAPR07CA0027.namprd07.prod.outlook.com (2603:10b6:a02:bc::40) To DM6PR11MB3625.namprd11.prod.outlook.com (2603:10b6:5:13a::21) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Igor.Russkikh@aquantia.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-originating-ip: [95.79.108.179] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 06b1aee7-35ce-4f96-cbd5-08d6c34bc106 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600140)(711020)(4605104)(2017052603328)(7193020); SRVR:DM6PR11MB3738; x-ms-traffictypediagnostic: DM6PR11MB3738: x-microsoft-antispam-prvs: x-forefront-prvs: 0010D93EFE x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39850400004)(346002)(396003)(136003)(376002)(366004)(199004)(189003)(2906002)(25786009)(54906003)(256004)(7736002)(97736004)(316002)(4326008)(71200400001)(53936002)(5640700003)(107886003)(71190400001)(99286004)(68736007)(8676002)(1730700003)(5660300002)(86362001)(2351001)(6512007)(305945005)(52116002)(6436002)(106356001)(81166006)(2501003)(36756003)(81156014)(105586002)(8936002)(6916009)(386003)(102836004)(26005)(6116002)(186003)(50226002)(72206003)(6506007)(76176011)(6486002)(14454004)(66066001)(478600001)(3846002)(476003)(118296001)(486006)(2616005)(44832011)(446003)(11346002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR11MB3738; H:DM6PR11MB3625.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: aquantia.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: Rv65VARjAfxizuqi7jl+FZwRFjtNEo2MyPIQCWOF05wDzjNo6VSpCSiha9d5Ogy0RYkkFGl55OSsssGinONqG3F0Uzttd/c3gImhPWJJ1YYLdUCXFp+2CCtCJKECIRWbQV4EvO+0eXEoWl9fjqX1FdeMpMrHqjzXFjkU852f6W5CQyG9+jyEd2P82Uk7Onj9UL77W9rxcxGphSac0Dp/cVnTdMWLqkz6sgleo5NGB/nfSEcvh2ebtJibigH7n3qp7NrbBptxwTiEuIua8nlcvTsS8lPtyzQMH3pJSTmEHAA8mscyCrmCXe7EYowuvlwJ3SQ/ErbD/xOEj4ZO3BshA36UD3dzxqYPFv/ux1se45SQOS42MyzTwyYkcKQ6nu5gZzApPiH4LONFSNZ9O/j5lD80aNRmZmbQF2ZuIkiBz7Q= MIME-Version: 1.0 X-OriginatorOrg: aquantia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 06b1aee7-35ce-4f96-cbd5-08d6c34bc106 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Apr 2019 15:45:45.0627 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 83e2e134-991c-4ede-8ced-34d47e38e6b1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3738 Subject: [dpdk-dev] [PATCH v2 7/7] net/atlantic: public experimental macsec API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add public visible macsec API functions. These are wrappers over internal configuration routines, validating and converting port no into dev pointer Signed-off-by: Igor Russkikh --- drivers/net/atlantic/Makefile | 1 + drivers/net/atlantic/meson.build | 1 + drivers/net/atlantic/rte_pmd_atlantic.c | 102 ++++++++++++++++++ drivers/net/atlantic/rte_pmd_atlantic.h | 41 +++++++ .../net/atlantic/rte_pmd_atlantic_version.map | 12 +++ 5 files changed, 157 insertions(+) create mode 100644 drivers/net/atlantic/rte_pmd_atlantic.c create mode 100644 drivers/net/atlantic/rte_pmd_atlantic.h diff --git a/drivers/net/atlantic/Makefile b/drivers/net/atlantic/Makefile index 62dcdbffa69c..263f12b5575f 100644 --- a/drivers/net/atlantic/Makefile +++ b/drivers/net/atlantic/Makefile @@ -31,5 +31,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_ATLANTIC_PMD) += hw_atl_utils.c SRCS-$(CONFIG_RTE_LIBRTE_ATLANTIC_PMD) += hw_atl_llh.c SRCS-$(CONFIG_RTE_LIBRTE_ATLANTIC_PMD) += hw_atl_utils_fw2x.c SRCS-$(CONFIG_RTE_LIBRTE_ATLANTIC_PMD) += hw_atl_b0.c +SRCS-$(CONFIG_RTE_LIBRTE_ATLANTIC_PMD) += rte_pmd_atlantic.c include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/net/atlantic/meson.build b/drivers/net/atlantic/meson.build index 28fb97cace6e..60b84684ec0a 100644 --- a/drivers/net/atlantic/meson.build +++ b/drivers/net/atlantic/meson.build @@ -9,4 +9,5 @@ sources = files( 'hw_atl/hw_atl_llh.c', 'hw_atl/hw_atl_utils_fw2x.c', 'hw_atl/hw_atl_utils.c', + 'rte_pmd_atlantic.c', ) diff --git a/drivers/net/atlantic/rte_pmd_atlantic.c b/drivers/net/atlantic/rte_pmd_atlantic.c new file mode 100644 index 000000000000..5bf4da27fdd0 --- /dev/null +++ b/drivers/net/atlantic/rte_pmd_atlantic.c @@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Aquantia Corporation + */ + +#include + +#include "rte_pmd_atlantic.h" +#include "atl_ethdev.h" + + +__rte_experimental int +rte_pmd_atl_macsec_enable(uint16_t port, + uint8_t encr, uint8_t repl_prot) +{ + struct rte_eth_dev *dev; + + RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); + + dev = &rte_eth_devices[port]; + + if (!is_atlantic_supported(dev)) + return -ENOTSUP; + + return atl_macsec_enable(dev, encr, repl_prot); +} + +__rte_experimental int +rte_pmd_atl_macsec_disable(uint16_t port) +{ + struct rte_eth_dev *dev; + + RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); + + dev = &rte_eth_devices[port]; + + if (!is_atlantic_supported(dev)) + return -ENOTSUP; + + return atl_macsec_disable(dev); +} + +__rte_experimental int +rte_pmd_atl_macsec_config_txsc(uint16_t port, uint8_t *mac) +{ + struct rte_eth_dev *dev; + + RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); + + dev = &rte_eth_devices[port]; + + if (!is_atlantic_supported(dev)) + return -ENOTSUP; + + return atl_macsec_config_txsc(dev, mac); +} + +__rte_experimental int +rte_pmd_atl_macsec_config_rxsc(uint16_t port, uint8_t *mac, uint16_t pi) +{ + struct rte_eth_dev *dev; + + RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); + + dev = &rte_eth_devices[port]; + + if (!is_atlantic_supported(dev)) + return -ENOTSUP; + + return atl_macsec_config_rxsc(dev, mac, pi); +} + +__rte_experimental int +rte_pmd_atl_macsec_select_txsa(uint16_t port, uint8_t idx, uint8_t an, + uint32_t pn, uint8_t *key) +{ + struct rte_eth_dev *dev; + + RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); + + dev = &rte_eth_devices[port]; + + if (!is_atlantic_supported(dev)) + return -ENOTSUP; + + return atl_macsec_select_txsa(dev, idx, an, pn, key); +} + +__rte_experimental int +rte_pmd_atl_macsec_select_rxsa(uint16_t port, uint8_t idx, uint8_t an, + uint32_t pn, uint8_t *key) +{ + struct rte_eth_dev *dev; + + RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); + + dev = &rte_eth_devices[port]; + + if (!is_atlantic_supported(dev)) + return -ENOTSUP; + + return atl_macsec_select_rxsa(dev, idx, an, pn, key); +} diff --git a/drivers/net/atlantic/rte_pmd_atlantic.h b/drivers/net/atlantic/rte_pmd_atlantic.h new file mode 100644 index 000000000000..6a1925266156 --- /dev/null +++ b/drivers/net/atlantic/rte_pmd_atlantic.h @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Aquantia Corporation + */ + +/** + * @file rte_pmd_atlantic.h + * atlantic PMD specific functions. + * + **/ + +#ifndef _PMD_ATLANTIC_H_ +#define _PMD_ATLANTIC_H_ + +#include + +/** + * Enable MACsec offload. + * + * @param port + * The port identifier of the Ethernet device. + * @param en + * 1 - Enable encryption (encrypt and add integrity signature). + * 0 - Disable encryption (only add integrity signature). + * @param rp + * 1 - Enable replay protection. + * 0 - Disable replay protection. + * @return + * - (0) if successful. + * - (-ENODEV) if *port* invalid. + * - (-ENOTSUP) if hardware doesn't support this feature. + */ +int rte_pmd_atl_macsec_enable(uint16_t port, uint8_t en, uint8_t rp); +int rte_pmd_atl_macsec_disable(uint16_t port); +int rte_pmd_atl_macsec_config_txsc(uint16_t port, uint8_t *mac); +int rte_pmd_atl_macsec_config_rxsc(uint16_t port, uint8_t *mac, uint16_t pi); +int rte_pmd_atl_macsec_select_txsa(uint16_t port, uint8_t idx, uint8_t an, + uint32_t pn, uint8_t *key); +int rte_pmd_atl_macsec_select_rxsa(uint16_t port, uint8_t idx, uint8_t an, + uint32_t pn, uint8_t *key); + +#endif /* _PMD_ATLANTIC_H_ */ diff --git a/drivers/net/atlantic/rte_pmd_atlantic_version.map b/drivers/net/atlantic/rte_pmd_atlantic_version.map index 521e51f411fb..b16faa999f43 100644 --- a/drivers/net/atlantic/rte_pmd_atlantic_version.map +++ b/drivers/net/atlantic/rte_pmd_atlantic_version.map @@ -2,3 +2,15 @@ DPDK_18.11 { local: *; }; + +EXPERIMENTAL { + global: + + rte_pmd_atl_macsec_enable; + rte_pmd_atl_macsec_disable; + rte_pmd_atl_macsec_config_txsc; + rte_pmd_atl_macsec_config_rxsc; + rte_pmd_atl_macsec_select_txsa; + rte_pmd_atl_macsec_select_rxsa; +}; +