1ec0dec44SPavel Belous /* SPDX-License-Identifier: BSD-3-Clause 2ec0dec44SPavel Belous * Copyright(c) 2018 Aquantia Corporation 3ec0dec44SPavel Belous */ 4ec0dec44SPavel Belous 5ec0dec44SPavel Belous #include <rte_ethdev_driver.h> 6ec0dec44SPavel Belous 7ec0dec44SPavel Belous #include "rte_pmd_atlantic.h" 8ec0dec44SPavel Belous #include "atl_ethdev.h" 9ec0dec44SPavel Belous 10ec0dec44SPavel Belous 11*136ab94aSDavid Marchand int 12ec0dec44SPavel Belous rte_pmd_atl_macsec_enable(uint16_t port, 13ec0dec44SPavel Belous uint8_t encr, uint8_t repl_prot) 14ec0dec44SPavel Belous { 15ec0dec44SPavel Belous struct rte_eth_dev *dev; 16ec0dec44SPavel Belous 17ec0dec44SPavel Belous RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); 18ec0dec44SPavel Belous 19ec0dec44SPavel Belous dev = &rte_eth_devices[port]; 20ec0dec44SPavel Belous 21ec0dec44SPavel Belous if (!is_atlantic_supported(dev)) 22ec0dec44SPavel Belous return -ENOTSUP; 23ec0dec44SPavel Belous 24ec0dec44SPavel Belous return atl_macsec_enable(dev, encr, repl_prot); 25ec0dec44SPavel Belous } 26ec0dec44SPavel Belous 27*136ab94aSDavid Marchand int 28ec0dec44SPavel Belous rte_pmd_atl_macsec_disable(uint16_t port) 29ec0dec44SPavel Belous { 30ec0dec44SPavel Belous struct rte_eth_dev *dev; 31ec0dec44SPavel Belous 32ec0dec44SPavel Belous RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); 33ec0dec44SPavel Belous 34ec0dec44SPavel Belous dev = &rte_eth_devices[port]; 35ec0dec44SPavel Belous 36ec0dec44SPavel Belous if (!is_atlantic_supported(dev)) 37ec0dec44SPavel Belous return -ENOTSUP; 38ec0dec44SPavel Belous 39ec0dec44SPavel Belous return atl_macsec_disable(dev); 40ec0dec44SPavel Belous } 41ec0dec44SPavel Belous 42*136ab94aSDavid Marchand int 43ec0dec44SPavel Belous rte_pmd_atl_macsec_config_txsc(uint16_t port, uint8_t *mac) 44ec0dec44SPavel Belous { 45ec0dec44SPavel Belous struct rte_eth_dev *dev; 46ec0dec44SPavel Belous 47ec0dec44SPavel Belous RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); 48ec0dec44SPavel Belous 49ec0dec44SPavel Belous dev = &rte_eth_devices[port]; 50ec0dec44SPavel Belous 51ec0dec44SPavel Belous if (!is_atlantic_supported(dev)) 52ec0dec44SPavel Belous return -ENOTSUP; 53ec0dec44SPavel Belous 54ec0dec44SPavel Belous return atl_macsec_config_txsc(dev, mac); 55ec0dec44SPavel Belous } 56ec0dec44SPavel Belous 57*136ab94aSDavid Marchand int 58ec0dec44SPavel Belous rte_pmd_atl_macsec_config_rxsc(uint16_t port, uint8_t *mac, uint16_t pi) 59ec0dec44SPavel Belous { 60ec0dec44SPavel Belous struct rte_eth_dev *dev; 61ec0dec44SPavel Belous 62ec0dec44SPavel Belous RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); 63ec0dec44SPavel Belous 64ec0dec44SPavel Belous dev = &rte_eth_devices[port]; 65ec0dec44SPavel Belous 66ec0dec44SPavel Belous if (!is_atlantic_supported(dev)) 67ec0dec44SPavel Belous return -ENOTSUP; 68ec0dec44SPavel Belous 69ec0dec44SPavel Belous return atl_macsec_config_rxsc(dev, mac, pi); 70ec0dec44SPavel Belous } 71ec0dec44SPavel Belous 72*136ab94aSDavid Marchand int 73ec0dec44SPavel Belous rte_pmd_atl_macsec_select_txsa(uint16_t port, uint8_t idx, uint8_t an, 74ec0dec44SPavel Belous uint32_t pn, uint8_t *key) 75ec0dec44SPavel Belous { 76ec0dec44SPavel Belous struct rte_eth_dev *dev; 77ec0dec44SPavel Belous 78ec0dec44SPavel Belous RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); 79ec0dec44SPavel Belous 80ec0dec44SPavel Belous dev = &rte_eth_devices[port]; 81ec0dec44SPavel Belous 82ec0dec44SPavel Belous if (!is_atlantic_supported(dev)) 83ec0dec44SPavel Belous return -ENOTSUP; 84ec0dec44SPavel Belous 85ec0dec44SPavel Belous return atl_macsec_select_txsa(dev, idx, an, pn, key); 86ec0dec44SPavel Belous } 87ec0dec44SPavel Belous 88*136ab94aSDavid Marchand int 89ec0dec44SPavel Belous rte_pmd_atl_macsec_select_rxsa(uint16_t port, uint8_t idx, uint8_t an, 90ec0dec44SPavel Belous uint32_t pn, uint8_t *key) 91ec0dec44SPavel Belous { 92ec0dec44SPavel Belous struct rte_eth_dev *dev; 93ec0dec44SPavel Belous 94ec0dec44SPavel Belous RTE_ETH_VALID_PORTID_OR_ERR_RET(port, -ENODEV); 95ec0dec44SPavel Belous 96ec0dec44SPavel Belous dev = &rte_eth_devices[port]; 97ec0dec44SPavel Belous 98ec0dec44SPavel Belous if (!is_atlantic_supported(dev)) 99ec0dec44SPavel Belous return -ENOTSUP; 100ec0dec44SPavel Belous 101ec0dec44SPavel Belous return atl_macsec_select_rxsa(dev, idx, an, pn, key); 102ec0dec44SPavel Belous } 103