From c5aa651596c5610cb9b7f68ce36e245e315ac3f1 Mon Sep 17 00:00:00 2001 From: Sanath Kumar Gampa Date: Mon, 21 Oct 2024 07:07:11 +0000 Subject: [PATCH] kernel:nvidia-oot:Support for multiple MACSec SCs Add support to accept multiple supplicant launch on same VF so that DUT can have multiple MACSEC links with different ethernet peers Pass Peer MACID to OSI such that the same is added to SCI LUT Bug 4754899 Change-Id: Iaf56eb4d7ebc3266a0d3ceb3dbc76a1547ed608c Signed-off-by: Sanath Kumar Gampa Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3237500 Reviewed-by: Ashutosh Jha Reviewed-by: Mahesh Patil GVS: buildbot_gerritrpt --- drivers/net/ethernet/nvidia/nvethernet/macsec.c | 4 ++++ drivers/net/ethernet/nvidia/nvethernet/macsec.h | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/nvidia/nvethernet/macsec.c b/drivers/net/ethernet/nvidia/nvethernet/macsec.c index ec1d4c89..7e3787da 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/macsec.c +++ b/drivers/net/ethernet/nvidia/nvethernet/macsec.c @@ -505,6 +505,10 @@ static int parse_sa_config(struct nlattr **attrs, struct nlattr **tb_sa, memcpy(sc_info->sci, nla_data(tb_sa[NV_MACSEC_SA_ATTR_SCI]), sizeof(sc_info->sci)); } + if (tb_sa[NV_MACSEC_SA_ATTR_PEER_MACID]) { + memcpy(sc_info->peer_macid, nla_data(tb_sa[NV_MACSEC_SA_ATTR_PEER_MACID]), + sizeof(sc_info->peer_macid)); + } if (tb_sa[NV_MACSEC_SA_ATTR_AN]) { sc_info->curr_an = nla_get_u8(tb_sa[NV_MACSEC_SA_ATTR_AN]); } diff --git a/drivers/net/ethernet/nvidia/nvethernet/macsec.h b/drivers/net/ethernet/nvidia/nvethernet/macsec.h index 91338c3c..e52eedbd 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/macsec.h +++ b/drivers/net/ethernet/nvidia/nvethernet/macsec.h @@ -38,7 +38,7 @@ /** * @brief Maximum number of supplicants allowed per VF */ -#define MAX_SUPPLICANTS_ALLOWED 1 +#define MAX_SUPPLICANTS_ALLOWED 48 #define NV_MACSEC_GENL_VERSION 1 @@ -63,6 +63,7 @@ enum nv_macsec_sa_attrs { NV_MACSEC_SA_ATTR_UNSPEC, NV_MACSEC_SA_ATTR_SCI, + NV_MACSEC_SA_ATTR_PEER_MACID, NV_MACSEC_SA_ATTR_AN, NV_MACSEC_SA_ATTR_PN, NV_MACSEC_SA_ATTR_LOWEST_PN, @@ -123,6 +124,8 @@ enum nv_macsec_attrs { static const struct nla_policy nv_macsec_sa_genl_policy[NUM_NV_MACSEC_SA_ATTR] = { [NV_MACSEC_SA_ATTR_SCI] = { .type = NLA_BINARY, .len = 8, }, /* SCI is 64bit */ + [NV_MACSEC_SA_ATTR_PEER_MACID] = { .type = NLA_BINARY, + .len = 6, }, /* MACID is 48bit */ [NV_MACSEC_SA_ATTR_AN] = { .type = NLA_U8 }, [NV_MACSEC_SA_ATTR_PN] = { .type = NLA_U32 }, [NV_MACSEC_SA_ATTR_LOWEST_PN] = { .type = NLA_U32 },