Add new macsec generic callbacks to ixgbe driver.
Reuse existing rte_pmd_ driver API, keeping it to preserve
backward API compatibility

Signed-off-by: Igor Russkikh <igor.russk...@aquantia.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 55 ++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 975fa474ce83..e2123062c185 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -46,6 +46,7 @@
 #include "base/ixgbe_type.h"
 #include "base/ixgbe_phy.h"
 #include "ixgbe_regs.h"
+#include "rte_pmd_ixgbe.h"
 
 /*
  * High threshold controlling when to start sending XOFF frames. Must be at
@@ -370,6 +371,17 @@ static int ixgbe_dev_udp_tunnel_port_del(struct 
rte_eth_dev *dev,
 static int ixgbe_filter_restore(struct rte_eth_dev *dev);
 static void ixgbe_l2_tunnel_conf(struct rte_eth_dev *dev);
 
+static int ixgbe_macsec_enable(struct rte_eth_dev *dev,
+                              uint8_t encr, uint8_t repl_prot);
+static int ixgbe_macsec_disable(struct rte_eth_dev *dev);
+static int ixgbe_macsec_config_txsc(struct rte_eth_dev *dev, uint8_t *mac);
+static int ixgbe_macsec_config_rxsc(struct rte_eth_dev *dev,
+                                   uint8_t *mac, uint16_t pi);
+static int ixgbe_macsec_select_txsa(struct rte_eth_dev *dev, uint8_t idx,
+                                   uint8_t an, uint32_t pn, uint8_t *key);
+static int ixgbe_macsec_select_rxsa(struct rte_eth_dev *dev, uint8_t idx,
+                                   uint8_t an, uint32_t pn, uint8_t *key);
+
 /*
  * Define VF Stats MACRO for Non "cleared on read" register
  */
@@ -581,6 +593,12 @@ static const struct eth_dev_ops ixgbe_eth_dev_ops = {
        .udp_tunnel_port_add  = ixgbe_dev_udp_tunnel_port_add,
        .udp_tunnel_port_del  = ixgbe_dev_udp_tunnel_port_del,
        .tm_ops_get           = ixgbe_tm_ops_get,
+       .macsec_enable        = ixgbe_macsec_enable,
+       .macsec_disable       = ixgbe_macsec_disable,
+       .macsec_config_rxsc   = ixgbe_macsec_config_rxsc,
+       .macsec_config_txsc   = ixgbe_macsec_config_txsc,
+       .macsec_select_rxsa   = ixgbe_macsec_select_rxsa,
+       .macsec_select_txsa   = ixgbe_macsec_select_txsa,
 };
 
 /*
@@ -8652,6 +8670,43 @@ ixgbe_clear_all_l2_tn_filter(struct rte_eth_dev *dev)
        return 0;
 }
 
+static int ixgbe_macsec_enable(struct rte_eth_dev *dev,
+                              uint8_t encr, uint8_t repl_prot)
+{
+       return rte_pmd_ixgbe_macsec_enable(dev->data->port_id,
+                                                  encr, repl_prot);
+}
+
+static int ixgbe_macsec_disable(struct rte_eth_dev *dev)
+{
+       return rte_pmd_ixgbe_macsec_disable(dev->data->port_id);
+}
+
+static int ixgbe_macsec_config_txsc(struct rte_eth_dev *dev, uint8_t *mac)
+{
+       return rte_pmd_ixgbe_macsec_config_txsc(dev->data->port_id, mac);
+}
+
+static int ixgbe_macsec_config_rxsc(struct rte_eth_dev *dev,
+                                   uint8_t *mac, uint16_t pi)
+{
+       return rte_pmd_ixgbe_macsec_config_rxsc(dev->data->port_id, mac, pi);
+}
+
+static int ixgbe_macsec_select_txsa(struct rte_eth_dev *dev, uint8_t idx,
+                                   uint8_t an, uint32_t pn, uint8_t *key)
+{
+       return rte_pmd_ixgbe_macsec_select_txsa(dev->data->port_id, idx, an,
+                                               pn, key);
+}
+
+static int ixgbe_macsec_select_rxsa(struct rte_eth_dev *dev, uint8_t idx,
+                                   uint8_t an, uint32_t pn, uint8_t *key)
+{
+       return rte_pmd_ixgbe_macsec_select_txsa(dev->data->port_id, idx, an,
+                                               pn, key);
+}
+
 RTE_PMD_REGISTER_PCI(net_ixgbe, rte_ixgbe_pmd);
 RTE_PMD_REGISTER_PCI_TABLE(net_ixgbe, pci_id_ixgbe_map);
 RTE_PMD_REGISTER_KMOD_DEP(net_ixgbe, "* igb_uio | uio_pci_generic | vfio-pci");
-- 
2.17.1

Reply via email to