nvethernet: Add support for MACsec controller

This commit adds the driver interface for the
MACsec controller. The driver interface is
invoked using generic netlink messages from
userspace MACsec key agreement agent.

Currently sysfs node is added to check the irq
stats for default macsec controller operation.

Bug 2913560

Change-Id: I07b0b778ba1c6674e87b103a3e68e158fea61c2c
Signed-off-by: Srinivas Ramachandran <srinivasra@nvidia.com>
This commit is contained in:
Srinivas Ramachandran
2020-11-30 15:12:48 -08:00
committed by Revanth Kumar Uppala
parent c651869a94
commit 805fe9c4fa
6 changed files with 2958 additions and 7 deletions

View File

@@ -52,7 +52,9 @@
#include <osi_dma.h>
#include <mmc.h>
#include "ioctl.h"
#ifdef MACSEC_SUPPORT
#include "macsec.h"
#endif
/**
* @brief Max number of Ethernet IRQs supported in HW
*/
@@ -271,7 +273,7 @@ struct ether_ivc_ctxt {
* @brief Ethernet driver private data
*/
struct ether_priv_data {
/** OSI core private data */
/** OSI core private data */
struct osi_core_priv_data *osi_core;
/** OSI DMA private data */
struct osi_dma_priv_data *osi_dma;
@@ -342,7 +344,7 @@ struct ether_priv_data {
unsigned int txq_prio[OSI_MGBE_MAX_NUM_CHANS];
#ifdef THERMAL_CAL
/** Pointer to thermal cooling device which this driver registers
/** Pointer to thermal cooling device which this driver registers
* with the kernel. Kernel will invoke the callback ops for this
* cooling device when temperate in thermal zone defined in DT
* binding for this driver is tripped */
@@ -405,6 +407,10 @@ struct ether_priv_data {
/** Register dump debug fs pointer */
struct dentry *dbgfs_reg_dump;
#endif
#ifdef MACSEC_SUPPORT
/** MACsec priv data */
struct macsec_priv_data *macsec_pdata;
#endif /* MACSEC_SUPPORT */
};
/**
@@ -482,7 +488,7 @@ int ether_conf_eee(struct ether_priv_data *pdata, unsigned int tx_lpi_enable);
#if IS_ENABLED(CONFIG_NVETHERNET_SELFTESTS)
void ether_selftest_run(struct net_device *dev,
struct ethtool_test *etest, u64 *buf);
struct ethtool_test *etest, u64 *buf);
void ether_selftest_get_strings(struct ether_priv_data *pdata, u8 *data);
int ether_selftest_get_count(struct ether_priv_data *pdata);
#else