1ec0dec44SPavel Belous /* SPDX-License-Identifier: BSD-3-Clause
2ec0dec44SPavel Belous * Copyright(c) 2018 Aquantia Corporation
3ec0dec44SPavel Belous */
4ec0dec44SPavel Belous
5*df96fd0dSBruce Richardson #include <ethdev_driver.h>
6ec0dec44SPavel Belous
7ec0dec44SPavel Belous #include "rte_pmd_atlantic.h"
8ec0dec44SPavel Belous #include "atl_ethdev.h"
9ec0dec44SPavel Belous
10ec0dec44SPavel Belous
11136ab94aSDavid Marchand int
rte_pmd_atl_macsec_enable(uint16_t port,uint8_t encr,uint8_t repl_prot)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
27136ab94aSDavid Marchand int
rte_pmd_atl_macsec_disable(uint16_t port)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
42136ab94aSDavid Marchand int
rte_pmd_atl_macsec_config_txsc(uint16_t port,uint8_t * mac)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
57136ab94aSDavid Marchand int
rte_pmd_atl_macsec_config_rxsc(uint16_t port,uint8_t * mac,uint16_t pi)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
72136ab94aSDavid Marchand int
rte_pmd_atl_macsec_select_txsa(uint16_t port,uint8_t idx,uint8_t an,uint32_t pn,uint8_t * key)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
88136ab94aSDavid Marchand int
rte_pmd_atl_macsec_select_rxsa(uint16_t port,uint8_t idx,uint8_t an,uint32_t pn,uint8_t * key)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