From a43d0166c5b9020a4ac37417852fe5d29ab035ad Mon Sep 17 00:00:00 2001 From: Sanath Kumar Gampa Date: Tue, 2 Nov 2021 09:20:43 +0530 Subject: [PATCH] Nvethernet: changes to receive lpn in enable SA Enhancement to receive lowest_pn from supplicant as part of receive AN enable. Also accept pn_window as 0 from supplicant Bug 3371004 Change-Id: Ic9b90ea902b9f450fc29a397f93be5cca01e9e87 Signed-off-by: Sanath Kumar Gampa Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2619948 Reviewed-by: svcacv Reviewed-by: Mahesh Patil Reviewed-by: Bhadram Varka Reviewed-by: svc_kernel_abi Reviewed-by: Srinivas Ramachandran Reviewed-by: mobile promotions GVS: Gerrit_Virtual_Submit Tested-by: mobile promotions --- drivers/net/ethernet/nvidia/nvethernet/macsec.c | 12 ++++++------ drivers/net/ethernet/nvidia/nvethernet/macsec.h | 2 ++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/nvidia/nvethernet/macsec.c b/drivers/net/ethernet/nvidia/nvethernet/macsec.c index 8bfafd4e..c942d7ee 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/macsec.c +++ b/drivers/net/ethernet/nvidia/nvethernet/macsec.c @@ -599,6 +599,9 @@ static int parse_sa_config(struct nlattr **attrs, struct nlattr **tb_sa, if (tb_sa[NV_MACSEC_SA_ATTR_PN]) { sc_info->next_pn = nla_get_u32(tb_sa[NV_MACSEC_SA_ATTR_PN]); } + if (tb_sa[NV_MACSEC_SA_ATTR_LOWEST_PN]) { + sc_info->lowest_pn = nla_get_u32(tb_sa[NV_MACSEC_SA_ATTR_LOWEST_PN]); + } if (tb_sa[NV_MACSEC_SA_ATTR_KEY]) { memcpy(sc_info->sak, nla_data(tb_sa[NV_MACSEC_SA_ATTR_KEY]), sizeof(sc_info->sak)); @@ -731,11 +734,12 @@ static int macsec_en_rx_sa(struct sk_buff *skb, struct genl_info *info) "\tsci: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n" "\tan: %u\n" "\tpn: %u\n" + "\tlowest pn: %u\n" "\twindow: %u", __func__, rx_sa.sci[0], rx_sa.sci[1], rx_sa.sci[2], rx_sa.sci[3], rx_sa.sci[4], rx_sa.sci[5], rx_sa.sci[6], rx_sa.sci[7], - rx_sa.curr_an, rx_sa.next_pn, rx_sa.pn_window); + rx_sa.curr_an, rx_sa.next_pn, rx_sa.lowest_pn, rx_sa.pn_window); pr_err("\tkey: "); for (i = 0; i < 16; i++) { pr_cont(" %02x", rx_sa.sak[i]); @@ -1124,11 +1128,7 @@ static int macsec_set_replay_prot(struct sk_buff *skb, struct genl_info *info) goto exit; } - if (window != 0) { - macsec_pdata->pn_window = window; - } else { - macsec_pdata->pn_window = OSI_PN_MAX_DEFAULT; - } + macsec_pdata->pn_window = window; exit: PRINT_EXIT(); diff --git a/drivers/net/ethernet/nvidia/nvethernet/macsec.h b/drivers/net/ethernet/nvidia/nvethernet/macsec.h index e4c97fe3..7c63109a 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/macsec.h +++ b/drivers/net/ethernet/nvidia/nvethernet/macsec.h @@ -58,6 +58,7 @@ enum nv_macsec_sa_attrs { NV_MACSEC_SA_ATTR_SCI, NV_MACSEC_SA_ATTR_AN, NV_MACSEC_SA_ATTR_PN, + NV_MACSEC_SA_ATTR_LOWEST_PN, NV_MACSEC_SA_ATTR_KEY, __NV_MACSEC_SA_ATTR_END, NUM_NV_MACSEC_SA_ATTR = __NV_MACSEC_SA_ATTR_END, @@ -107,6 +108,7 @@ static const struct nla_policy nv_macsec_sa_genl_policy[NUM_NV_MACSEC_SA_ATTR] = .len = 8, }, /* SCI is 64bit */ [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 }, [NV_MACSEC_SA_ATTR_KEY] = { .type = NLA_BINARY, .len = OSI_KEY_LEN_128,}, };