[03/10] net/ixgbe: macsec callbacks implementation

Message ID c6d31e4d4f71bb92bdbed53df1aaf7e0dc6825fe.1554894242.git.igor.russkikh@aquantia.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers
Series add MACSEC hw offload to atlantic PMD |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK

Commit Message

Igor Russkikh April 10, 2019, 11:18 a.m. UTC
  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.russkikh@aquantia.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 55 ++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)
  

Patch

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");