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 <igor.russk...@aquantia.com> --- 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 <rte_ethdev_driver.h> + +#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 <rte_ethdev_driver.h> + +/** + * 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; +}; + -- 2.17.1