From 6ca5a037285cb5fb7a9f7e3eacabf5fe11ccfc33 Mon Sep 17 00:00:00 2001 From: Sanath Kumar Gampa Date: Mon, 21 Oct 2024 07:07:11 +0000 Subject: [PATCH] nvethernet: Add MACSec counters to ethtool stats Bug 4915922 Change-Id: I21920fe788d8a3789faeaa13a82d6961ee1371a4 Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3233767 Reviewed-by: Bhadram Varka GVS: buildbot_gerritrpt Tested-by: Sanath Kumar Gampa Reviewed-by: Sanath Kumar Gampa Reviewed-by: Srinivas Ramachandran --- .../net/ethernet/nvidia/nvethernet/ethtool.c | 439 ++++++++++++++++++ 1 file changed, 439 insertions(+) diff --git a/drivers/net/ethernet/nvidia/nvethernet/ethtool.c b/drivers/net/ethernet/nvidia/nvethernet/ethtool.c index a0a494bf..898aa1cb 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ethtool.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ethtool.c @@ -327,6 +327,16 @@ static const struct ether_stats ether_gstrings_stats[] = { { #c, sizeof_field(struct osi_mmc_counters, c), \ offsetof(struct osi_core_priv_data, mmc.c)} +#ifdef MACSEC_SUPPORT +#define MACSEC_MMC_STAT(c) \ +{ #c, sizeof_field(struct osi_macsec_mmc_counters, c), \ + offsetof(struct osi_core_priv_data, macsec_mmc.c)} + +#define MACSEC_IRQ_STAT(c) \ +{ #c, sizeof_field(struct osi_macsec_irq_stats, c), \ + offsetof(struct osi_core_priv_data, macsec_irq_stats.c)} +#endif /* MACSEC_SUPPORT */ + /** * @brief MMC statistics */ @@ -504,6 +514,426 @@ static const struct ether_stats ether_mmc[] = { ETHER_MMC_STAT(mmc_rx_packet_smd_err_cnt), ETHER_MMC_STAT(mmc_rx_packet_asm_ok_cnt), ETHER_MMC_STAT(mmc_rx_fpe_fragment_cnt), +#ifdef MACSEC_SUPPORT + /* MACSEC MMC */ + MACSEC_MMC_STAT(tx_octets_protected), + MACSEC_MMC_STAT(tx_octets_encrypted), + MACSEC_MMC_STAT(rx_octets_validated), + MACSEC_MMC_STAT(rx_octets_decrypted), + MACSEC_MMC_STAT(rx_pkts_no_tag), + MACSEC_MMC_STAT(rx_pkts_untagged), + MACSEC_MMC_STAT(rx_pkts_bad_tag), + MACSEC_MMC_STAT(rx_pkts_no_sa_err), + MACSEC_MMC_STAT(rx_pkts_no_sa), + MACSEC_MMC_STAT(rx_pkts_overrun), + MACSEC_MMC_STAT(tx_pkts_untaged), + MACSEC_MMC_STAT(tx_pkts_too_long), + MACSEC_MMC_STAT(rx_pkts_late[0]), + MACSEC_MMC_STAT(rx_pkts_late[1]), + MACSEC_MMC_STAT(rx_pkts_late[2]), + MACSEC_MMC_STAT(rx_pkts_late[3]), + MACSEC_MMC_STAT(rx_pkts_late[4]), + MACSEC_MMC_STAT(rx_pkts_late[5]), + MACSEC_MMC_STAT(rx_pkts_late[6]), + MACSEC_MMC_STAT(rx_pkts_late[7]), + MACSEC_MMC_STAT(rx_pkts_late[8]), + MACSEC_MMC_STAT(rx_pkts_late[9]), + MACSEC_MMC_STAT(rx_pkts_late[10]), + MACSEC_MMC_STAT(rx_pkts_late[11]), + MACSEC_MMC_STAT(rx_pkts_late[12]), + MACSEC_MMC_STAT(rx_pkts_late[13]), + MACSEC_MMC_STAT(rx_pkts_late[14]), + MACSEC_MMC_STAT(rx_pkts_late[15]), + MACSEC_MMC_STAT(rx_pkts_late[16]), + MACSEC_MMC_STAT(rx_pkts_late[17]), + MACSEC_MMC_STAT(rx_pkts_late[18]), + MACSEC_MMC_STAT(rx_pkts_late[19]), + MACSEC_MMC_STAT(rx_pkts_late[20]), + MACSEC_MMC_STAT(rx_pkts_late[21]), + MACSEC_MMC_STAT(rx_pkts_late[22]), + MACSEC_MMC_STAT(rx_pkts_late[23]), + MACSEC_MMC_STAT(rx_pkts_late[24]), + MACSEC_MMC_STAT(rx_pkts_late[25]), + MACSEC_MMC_STAT(rx_pkts_late[26]), + MACSEC_MMC_STAT(rx_pkts_late[27]), + MACSEC_MMC_STAT(rx_pkts_late[28]), + MACSEC_MMC_STAT(rx_pkts_late[29]), + MACSEC_MMC_STAT(rx_pkts_late[30]), + MACSEC_MMC_STAT(rx_pkts_late[31]), + MACSEC_MMC_STAT(rx_pkts_late[32]), + MACSEC_MMC_STAT(rx_pkts_late[33]), + MACSEC_MMC_STAT(rx_pkts_late[34]), + MACSEC_MMC_STAT(rx_pkts_late[35]), + MACSEC_MMC_STAT(rx_pkts_late[36]), + MACSEC_MMC_STAT(rx_pkts_late[37]), + MACSEC_MMC_STAT(rx_pkts_late[38]), + MACSEC_MMC_STAT(rx_pkts_late[39]), + MACSEC_MMC_STAT(rx_pkts_late[40]), + MACSEC_MMC_STAT(rx_pkts_late[41]), + MACSEC_MMC_STAT(rx_pkts_late[42]), + MACSEC_MMC_STAT(rx_pkts_late[43]), + MACSEC_MMC_STAT(rx_pkts_late[44]), + MACSEC_MMC_STAT(rx_pkts_late[45]), + MACSEC_MMC_STAT(rx_pkts_late[46]), + MACSEC_MMC_STAT(rx_pkts_late[47]), + MACSEC_MMC_STAT(rx_pkts_not_valid[0]), + MACSEC_MMC_STAT(rx_pkts_not_valid[1]), + MACSEC_MMC_STAT(rx_pkts_not_valid[2]), + MACSEC_MMC_STAT(rx_pkts_not_valid[3]), + MACSEC_MMC_STAT(rx_pkts_not_valid[4]), + MACSEC_MMC_STAT(rx_pkts_not_valid[5]), + MACSEC_MMC_STAT(rx_pkts_not_valid[6]), + MACSEC_MMC_STAT(rx_pkts_not_valid[7]), + MACSEC_MMC_STAT(rx_pkts_not_valid[8]), + MACSEC_MMC_STAT(rx_pkts_not_valid[9]), + MACSEC_MMC_STAT(rx_pkts_not_valid[10]), + MACSEC_MMC_STAT(rx_pkts_not_valid[11]), + MACSEC_MMC_STAT(rx_pkts_not_valid[12]), + MACSEC_MMC_STAT(rx_pkts_not_valid[13]), + MACSEC_MMC_STAT(rx_pkts_not_valid[14]), + MACSEC_MMC_STAT(rx_pkts_not_valid[15]), + MACSEC_MMC_STAT(rx_pkts_not_valid[16]), + MACSEC_MMC_STAT(rx_pkts_not_valid[17]), + MACSEC_MMC_STAT(rx_pkts_not_valid[18]), + MACSEC_MMC_STAT(rx_pkts_not_valid[19]), + MACSEC_MMC_STAT(rx_pkts_not_valid[20]), + MACSEC_MMC_STAT(rx_pkts_not_valid[21]), + MACSEC_MMC_STAT(rx_pkts_not_valid[22]), + MACSEC_MMC_STAT(rx_pkts_not_valid[23]), + MACSEC_MMC_STAT(rx_pkts_not_valid[24]), + MACSEC_MMC_STAT(rx_pkts_not_valid[25]), + MACSEC_MMC_STAT(rx_pkts_not_valid[26]), + MACSEC_MMC_STAT(rx_pkts_not_valid[27]), + MACSEC_MMC_STAT(rx_pkts_not_valid[28]), + MACSEC_MMC_STAT(rx_pkts_not_valid[29]), + MACSEC_MMC_STAT(rx_pkts_not_valid[30]), + MACSEC_MMC_STAT(rx_pkts_not_valid[31]), + MACSEC_MMC_STAT(rx_pkts_not_valid[32]), + MACSEC_MMC_STAT(rx_pkts_not_valid[33]), + MACSEC_MMC_STAT(rx_pkts_not_valid[34]), + MACSEC_MMC_STAT(rx_pkts_not_valid[35]), + MACSEC_MMC_STAT(rx_pkts_not_valid[36]), + MACSEC_MMC_STAT(rx_pkts_not_valid[37]), + MACSEC_MMC_STAT(rx_pkts_not_valid[38]), + MACSEC_MMC_STAT(rx_pkts_not_valid[39]), + MACSEC_MMC_STAT(rx_pkts_not_valid[40]), + MACSEC_MMC_STAT(rx_pkts_not_valid[41]), + MACSEC_MMC_STAT(rx_pkts_not_valid[42]), + MACSEC_MMC_STAT(rx_pkts_not_valid[43]), + MACSEC_MMC_STAT(rx_pkts_not_valid[44]), + MACSEC_MMC_STAT(rx_pkts_not_valid[45]), + MACSEC_MMC_STAT(rx_pkts_not_valid[46]), + MACSEC_MMC_STAT(rx_pkts_not_valid[47]), + MACSEC_MMC_STAT(in_pkts_invalid[0]), + MACSEC_MMC_STAT(in_pkts_invalid[1]), + MACSEC_MMC_STAT(in_pkts_invalid[2]), + MACSEC_MMC_STAT(in_pkts_invalid[3]), + MACSEC_MMC_STAT(in_pkts_invalid[4]), + MACSEC_MMC_STAT(in_pkts_invalid[5]), + MACSEC_MMC_STAT(in_pkts_invalid[6]), + MACSEC_MMC_STAT(in_pkts_invalid[7]), + MACSEC_MMC_STAT(in_pkts_invalid[8]), + MACSEC_MMC_STAT(in_pkts_invalid[9]), + MACSEC_MMC_STAT(in_pkts_invalid[10]), + MACSEC_MMC_STAT(in_pkts_invalid[11]), + MACSEC_MMC_STAT(in_pkts_invalid[12]), + MACSEC_MMC_STAT(in_pkts_invalid[13]), + MACSEC_MMC_STAT(in_pkts_invalid[14]), + MACSEC_MMC_STAT(in_pkts_invalid[15]), + MACSEC_MMC_STAT(in_pkts_invalid[16]), + MACSEC_MMC_STAT(in_pkts_invalid[17]), + MACSEC_MMC_STAT(in_pkts_invalid[18]), + MACSEC_MMC_STAT(in_pkts_invalid[19]), + MACSEC_MMC_STAT(in_pkts_invalid[20]), + MACSEC_MMC_STAT(in_pkts_invalid[21]), + MACSEC_MMC_STAT(in_pkts_invalid[22]), + MACSEC_MMC_STAT(in_pkts_invalid[23]), + MACSEC_MMC_STAT(in_pkts_invalid[24]), + MACSEC_MMC_STAT(in_pkts_invalid[25]), + MACSEC_MMC_STAT(in_pkts_invalid[26]), + MACSEC_MMC_STAT(in_pkts_invalid[27]), + MACSEC_MMC_STAT(in_pkts_invalid[28]), + MACSEC_MMC_STAT(in_pkts_invalid[29]), + MACSEC_MMC_STAT(in_pkts_invalid[30]), + MACSEC_MMC_STAT(in_pkts_invalid[31]), + MACSEC_MMC_STAT(in_pkts_invalid[32]), + MACSEC_MMC_STAT(in_pkts_invalid[33]), + MACSEC_MMC_STAT(in_pkts_invalid[34]), + MACSEC_MMC_STAT(in_pkts_invalid[35]), + MACSEC_MMC_STAT(in_pkts_invalid[36]), + MACSEC_MMC_STAT(in_pkts_invalid[37]), + MACSEC_MMC_STAT(in_pkts_invalid[38]), + MACSEC_MMC_STAT(in_pkts_invalid[39]), + MACSEC_MMC_STAT(in_pkts_invalid[40]), + MACSEC_MMC_STAT(in_pkts_invalid[41]), + MACSEC_MMC_STAT(in_pkts_invalid[42]), + MACSEC_MMC_STAT(in_pkts_invalid[43]), + MACSEC_MMC_STAT(in_pkts_invalid[44]), + MACSEC_MMC_STAT(in_pkts_invalid[45]), + MACSEC_MMC_STAT(in_pkts_invalid[46]), + MACSEC_MMC_STAT(in_pkts_invalid[47]), + MACSEC_MMC_STAT(rx_pkts_delayed[0]), + MACSEC_MMC_STAT(rx_pkts_delayed[1]), + MACSEC_MMC_STAT(rx_pkts_delayed[2]), + MACSEC_MMC_STAT(rx_pkts_delayed[3]), + MACSEC_MMC_STAT(rx_pkts_delayed[4]), + MACSEC_MMC_STAT(rx_pkts_delayed[5]), + MACSEC_MMC_STAT(rx_pkts_delayed[6]), + MACSEC_MMC_STAT(rx_pkts_delayed[7]), + MACSEC_MMC_STAT(rx_pkts_delayed[8]), + MACSEC_MMC_STAT(rx_pkts_delayed[9]), + MACSEC_MMC_STAT(rx_pkts_delayed[10]), + MACSEC_MMC_STAT(rx_pkts_delayed[11]), + MACSEC_MMC_STAT(rx_pkts_delayed[12]), + MACSEC_MMC_STAT(rx_pkts_delayed[13]), + MACSEC_MMC_STAT(rx_pkts_delayed[14]), + MACSEC_MMC_STAT(rx_pkts_delayed[15]), + MACSEC_MMC_STAT(rx_pkts_delayed[16]), + MACSEC_MMC_STAT(rx_pkts_delayed[17]), + MACSEC_MMC_STAT(rx_pkts_delayed[18]), + MACSEC_MMC_STAT(rx_pkts_delayed[19]), + MACSEC_MMC_STAT(rx_pkts_delayed[20]), + MACSEC_MMC_STAT(rx_pkts_delayed[21]), + MACSEC_MMC_STAT(rx_pkts_delayed[22]), + MACSEC_MMC_STAT(rx_pkts_delayed[23]), + MACSEC_MMC_STAT(rx_pkts_delayed[24]), + MACSEC_MMC_STAT(rx_pkts_delayed[25]), + MACSEC_MMC_STAT(rx_pkts_delayed[26]), + MACSEC_MMC_STAT(rx_pkts_delayed[27]), + MACSEC_MMC_STAT(rx_pkts_delayed[28]), + MACSEC_MMC_STAT(rx_pkts_delayed[29]), + MACSEC_MMC_STAT(rx_pkts_delayed[30]), + MACSEC_MMC_STAT(rx_pkts_delayed[31]), + MACSEC_MMC_STAT(rx_pkts_delayed[32]), + MACSEC_MMC_STAT(rx_pkts_delayed[33]), + MACSEC_MMC_STAT(rx_pkts_delayed[34]), + MACSEC_MMC_STAT(rx_pkts_delayed[35]), + MACSEC_MMC_STAT(rx_pkts_delayed[36]), + MACSEC_MMC_STAT(rx_pkts_delayed[37]), + MACSEC_MMC_STAT(rx_pkts_delayed[38]), + MACSEC_MMC_STAT(rx_pkts_delayed[39]), + MACSEC_MMC_STAT(rx_pkts_delayed[40]), + MACSEC_MMC_STAT(rx_pkts_delayed[41]), + MACSEC_MMC_STAT(rx_pkts_delayed[42]), + MACSEC_MMC_STAT(rx_pkts_delayed[43]), + MACSEC_MMC_STAT(rx_pkts_delayed[44]), + MACSEC_MMC_STAT(rx_pkts_delayed[45]), + MACSEC_MMC_STAT(rx_pkts_delayed[46]), + MACSEC_MMC_STAT(rx_pkts_delayed[47]), + MACSEC_MMC_STAT(rx_pkts_unchecked[0]), + MACSEC_MMC_STAT(rx_pkts_unchecked[1]), + MACSEC_MMC_STAT(rx_pkts_unchecked[2]), + MACSEC_MMC_STAT(rx_pkts_unchecked[3]), + MACSEC_MMC_STAT(rx_pkts_unchecked[4]), + MACSEC_MMC_STAT(rx_pkts_unchecked[5]), + MACSEC_MMC_STAT(rx_pkts_unchecked[6]), + MACSEC_MMC_STAT(rx_pkts_unchecked[7]), + MACSEC_MMC_STAT(rx_pkts_unchecked[8]), + MACSEC_MMC_STAT(rx_pkts_unchecked[9]), + MACSEC_MMC_STAT(rx_pkts_unchecked[10]), + MACSEC_MMC_STAT(rx_pkts_unchecked[11]), + MACSEC_MMC_STAT(rx_pkts_unchecked[12]), + MACSEC_MMC_STAT(rx_pkts_unchecked[13]), + MACSEC_MMC_STAT(rx_pkts_unchecked[14]), + MACSEC_MMC_STAT(rx_pkts_unchecked[15]), + MACSEC_MMC_STAT(rx_pkts_unchecked[16]), + MACSEC_MMC_STAT(rx_pkts_unchecked[17]), + MACSEC_MMC_STAT(rx_pkts_unchecked[18]), + MACSEC_MMC_STAT(rx_pkts_unchecked[19]), + MACSEC_MMC_STAT(rx_pkts_unchecked[20]), + MACSEC_MMC_STAT(rx_pkts_unchecked[21]), + MACSEC_MMC_STAT(rx_pkts_unchecked[22]), + MACSEC_MMC_STAT(rx_pkts_unchecked[23]), + MACSEC_MMC_STAT(rx_pkts_unchecked[24]), + MACSEC_MMC_STAT(rx_pkts_unchecked[25]), + MACSEC_MMC_STAT(rx_pkts_unchecked[26]), + MACSEC_MMC_STAT(rx_pkts_unchecked[27]), + MACSEC_MMC_STAT(rx_pkts_unchecked[28]), + MACSEC_MMC_STAT(rx_pkts_unchecked[29]), + MACSEC_MMC_STAT(rx_pkts_unchecked[30]), + MACSEC_MMC_STAT(rx_pkts_unchecked[31]), + MACSEC_MMC_STAT(rx_pkts_unchecked[32]), + MACSEC_MMC_STAT(rx_pkts_unchecked[33]), + MACSEC_MMC_STAT(rx_pkts_unchecked[34]), + MACSEC_MMC_STAT(rx_pkts_unchecked[35]), + MACSEC_MMC_STAT(rx_pkts_unchecked[36]), + MACSEC_MMC_STAT(rx_pkts_unchecked[37]), + MACSEC_MMC_STAT(rx_pkts_unchecked[38]), + MACSEC_MMC_STAT(rx_pkts_unchecked[39]), + MACSEC_MMC_STAT(rx_pkts_unchecked[40]), + MACSEC_MMC_STAT(rx_pkts_unchecked[41]), + MACSEC_MMC_STAT(rx_pkts_unchecked[42]), + MACSEC_MMC_STAT(rx_pkts_unchecked[43]), + MACSEC_MMC_STAT(rx_pkts_unchecked[44]), + MACSEC_MMC_STAT(rx_pkts_unchecked[45]), + MACSEC_MMC_STAT(rx_pkts_unchecked[46]), + MACSEC_MMC_STAT(rx_pkts_unchecked[47]), + MACSEC_MMC_STAT(rx_pkts_ok[0]), + MACSEC_MMC_STAT(rx_pkts_ok[1]), + MACSEC_MMC_STAT(rx_pkts_ok[2]), + MACSEC_MMC_STAT(rx_pkts_ok[3]), + MACSEC_MMC_STAT(rx_pkts_ok[4]), + MACSEC_MMC_STAT(rx_pkts_ok[5]), + MACSEC_MMC_STAT(rx_pkts_ok[6]), + MACSEC_MMC_STAT(rx_pkts_ok[7]), + MACSEC_MMC_STAT(rx_pkts_ok[8]), + MACSEC_MMC_STAT(rx_pkts_ok[9]), + MACSEC_MMC_STAT(rx_pkts_ok[10]), + MACSEC_MMC_STAT(rx_pkts_ok[11]), + MACSEC_MMC_STAT(rx_pkts_ok[12]), + MACSEC_MMC_STAT(rx_pkts_ok[13]), + MACSEC_MMC_STAT(rx_pkts_ok[14]), + MACSEC_MMC_STAT(rx_pkts_ok[15]), + MACSEC_MMC_STAT(rx_pkts_ok[16]), + MACSEC_MMC_STAT(rx_pkts_ok[17]), + MACSEC_MMC_STAT(rx_pkts_ok[18]), + MACSEC_MMC_STAT(rx_pkts_ok[19]), + MACSEC_MMC_STAT(rx_pkts_ok[20]), + MACSEC_MMC_STAT(rx_pkts_ok[21]), + MACSEC_MMC_STAT(rx_pkts_ok[22]), + MACSEC_MMC_STAT(rx_pkts_ok[23]), + MACSEC_MMC_STAT(rx_pkts_ok[24]), + MACSEC_MMC_STAT(rx_pkts_ok[25]), + MACSEC_MMC_STAT(rx_pkts_ok[26]), + MACSEC_MMC_STAT(rx_pkts_ok[27]), + MACSEC_MMC_STAT(rx_pkts_ok[28]), + MACSEC_MMC_STAT(rx_pkts_ok[29]), + MACSEC_MMC_STAT(rx_pkts_ok[30]), + MACSEC_MMC_STAT(rx_pkts_ok[31]), + MACSEC_MMC_STAT(rx_pkts_ok[32]), + MACSEC_MMC_STAT(rx_pkts_ok[33]), + MACSEC_MMC_STAT(rx_pkts_ok[34]), + MACSEC_MMC_STAT(rx_pkts_ok[35]), + MACSEC_MMC_STAT(rx_pkts_ok[36]), + MACSEC_MMC_STAT(rx_pkts_ok[37]), + MACSEC_MMC_STAT(rx_pkts_ok[38]), + MACSEC_MMC_STAT(rx_pkts_ok[39]), + MACSEC_MMC_STAT(rx_pkts_ok[40]), + MACSEC_MMC_STAT(rx_pkts_ok[41]), + MACSEC_MMC_STAT(rx_pkts_ok[42]), + MACSEC_MMC_STAT(rx_pkts_ok[43]), + MACSEC_MMC_STAT(rx_pkts_ok[44]), + MACSEC_MMC_STAT(rx_pkts_ok[45]), + MACSEC_MMC_STAT(rx_pkts_ok[46]), + MACSEC_MMC_STAT(rx_pkts_ok[47]), + MACSEC_MMC_STAT(tx_pkts_protected[0]), + MACSEC_MMC_STAT(tx_pkts_protected[1]), + MACSEC_MMC_STAT(tx_pkts_protected[2]), + MACSEC_MMC_STAT(tx_pkts_protected[3]), + MACSEC_MMC_STAT(tx_pkts_protected[4]), + MACSEC_MMC_STAT(tx_pkts_protected[5]), + MACSEC_MMC_STAT(tx_pkts_protected[6]), + MACSEC_MMC_STAT(tx_pkts_protected[7]), + MACSEC_MMC_STAT(tx_pkts_protected[8]), + MACSEC_MMC_STAT(tx_pkts_protected[9]), + MACSEC_MMC_STAT(tx_pkts_protected[10]), + MACSEC_MMC_STAT(tx_pkts_protected[11]), + MACSEC_MMC_STAT(tx_pkts_protected[12]), + MACSEC_MMC_STAT(tx_pkts_protected[13]), + MACSEC_MMC_STAT(tx_pkts_protected[14]), + MACSEC_MMC_STAT(tx_pkts_protected[15]), + MACSEC_MMC_STAT(tx_pkts_protected[16]), + MACSEC_MMC_STAT(tx_pkts_protected[17]), + MACSEC_MMC_STAT(tx_pkts_protected[18]), + MACSEC_MMC_STAT(tx_pkts_protected[19]), + MACSEC_MMC_STAT(tx_pkts_protected[20]), + MACSEC_MMC_STAT(tx_pkts_protected[21]), + MACSEC_MMC_STAT(tx_pkts_protected[22]), + MACSEC_MMC_STAT(tx_pkts_protected[23]), + MACSEC_MMC_STAT(tx_pkts_protected[24]), + MACSEC_MMC_STAT(tx_pkts_protected[25]), + MACSEC_MMC_STAT(tx_pkts_protected[26]), + MACSEC_MMC_STAT(tx_pkts_protected[27]), + MACSEC_MMC_STAT(tx_pkts_protected[28]), + MACSEC_MMC_STAT(tx_pkts_protected[29]), + MACSEC_MMC_STAT(tx_pkts_protected[30]), + MACSEC_MMC_STAT(tx_pkts_protected[31]), + MACSEC_MMC_STAT(tx_pkts_protected[32]), + MACSEC_MMC_STAT(tx_pkts_protected[33]), + MACSEC_MMC_STAT(tx_pkts_protected[34]), + MACSEC_MMC_STAT(tx_pkts_protected[35]), + MACSEC_MMC_STAT(tx_pkts_protected[36]), + MACSEC_MMC_STAT(tx_pkts_protected[37]), + MACSEC_MMC_STAT(tx_pkts_protected[38]), + MACSEC_MMC_STAT(tx_pkts_protected[39]), + MACSEC_MMC_STAT(tx_pkts_protected[40]), + MACSEC_MMC_STAT(tx_pkts_protected[41]), + MACSEC_MMC_STAT(tx_pkts_protected[42]), + MACSEC_MMC_STAT(tx_pkts_protected[43]), + MACSEC_MMC_STAT(tx_pkts_protected[44]), + MACSEC_MMC_STAT(tx_pkts_protected[45]), + MACSEC_MMC_STAT(tx_pkts_protected[46]), + MACSEC_MMC_STAT(tx_pkts_protected[47]), + MACSEC_MMC_STAT(tx_pkts_encrypted[0]), + MACSEC_MMC_STAT(tx_pkts_encrypted[1]), + MACSEC_MMC_STAT(tx_pkts_encrypted[2]), + MACSEC_MMC_STAT(tx_pkts_encrypted[3]), + MACSEC_MMC_STAT(tx_pkts_encrypted[4]), + MACSEC_MMC_STAT(tx_pkts_encrypted[5]), + MACSEC_MMC_STAT(tx_pkts_encrypted[6]), + MACSEC_MMC_STAT(tx_pkts_encrypted[7]), + MACSEC_MMC_STAT(tx_pkts_encrypted[8]), + MACSEC_MMC_STAT(tx_pkts_encrypted[9]), + MACSEC_MMC_STAT(tx_pkts_encrypted[10]), + MACSEC_MMC_STAT(tx_pkts_encrypted[11]), + MACSEC_MMC_STAT(tx_pkts_encrypted[12]), + MACSEC_MMC_STAT(tx_pkts_encrypted[13]), + MACSEC_MMC_STAT(tx_pkts_encrypted[14]), + MACSEC_MMC_STAT(tx_pkts_encrypted[15]), + MACSEC_MMC_STAT(tx_pkts_encrypted[16]), + MACSEC_MMC_STAT(tx_pkts_encrypted[17]), + MACSEC_MMC_STAT(tx_pkts_encrypted[18]), + MACSEC_MMC_STAT(tx_pkts_encrypted[19]), + MACSEC_MMC_STAT(tx_pkts_encrypted[20]), + MACSEC_MMC_STAT(tx_pkts_encrypted[21]), + MACSEC_MMC_STAT(tx_pkts_encrypted[22]), + MACSEC_MMC_STAT(tx_pkts_encrypted[23]), + MACSEC_MMC_STAT(tx_pkts_encrypted[24]), + MACSEC_MMC_STAT(tx_pkts_encrypted[25]), + MACSEC_MMC_STAT(tx_pkts_encrypted[26]), + MACSEC_MMC_STAT(tx_pkts_encrypted[27]), + MACSEC_MMC_STAT(tx_pkts_encrypted[28]), + MACSEC_MMC_STAT(tx_pkts_encrypted[29]), + MACSEC_MMC_STAT(tx_pkts_encrypted[30]), + MACSEC_MMC_STAT(tx_pkts_encrypted[31]), + MACSEC_MMC_STAT(tx_pkts_encrypted[32]), + MACSEC_MMC_STAT(tx_pkts_encrypted[33]), + MACSEC_MMC_STAT(tx_pkts_encrypted[34]), + MACSEC_MMC_STAT(tx_pkts_encrypted[35]), + MACSEC_MMC_STAT(tx_pkts_encrypted[36]), + MACSEC_MMC_STAT(tx_pkts_encrypted[37]), + MACSEC_MMC_STAT(tx_pkts_encrypted[38]), + MACSEC_MMC_STAT(tx_pkts_encrypted[39]), + MACSEC_MMC_STAT(tx_pkts_encrypted[40]), + MACSEC_MMC_STAT(tx_pkts_encrypted[41]), + MACSEC_MMC_STAT(tx_pkts_encrypted[42]), + MACSEC_MMC_STAT(tx_pkts_encrypted[43]), + MACSEC_MMC_STAT(tx_pkts_encrypted[44]), + MACSEC_MMC_STAT(tx_pkts_encrypted[45]), + MACSEC_MMC_STAT(tx_pkts_encrypted[46]), + MACSEC_MMC_STAT(tx_pkts_encrypted[47]), + /* MACSEC IRQ */ + MACSEC_IRQ_STAT(tx_mtu_check_fail), + MACSEC_IRQ_STAT(tx_mac_crc_error), + MACSEC_IRQ_STAT(tx_sc_an_not_valid), + MACSEC_IRQ_STAT(tx_aes_gcm_buf_ovf), + MACSEC_IRQ_STAT(tx_lkup_miss), + MACSEC_IRQ_STAT(tx_uninit_key_slot), + MACSEC_IRQ_STAT(tx_pn_threshold), + MACSEC_IRQ_STAT(tx_pn_exhausted), + MACSEC_IRQ_STAT(rx_icv_err_threshold), + MACSEC_IRQ_STAT(rx_replay_error), + MACSEC_IRQ_STAT(rx_mtu_check_fail), + MACSEC_IRQ_STAT(rx_mac_crc_error), + MACSEC_IRQ_STAT(rx_aes_gcm_buf_ovf), + MACSEC_IRQ_STAT(rx_lkup_miss), + MACSEC_IRQ_STAT(rx_uninit_key_slot), + MACSEC_IRQ_STAT(rx_pn_exhausted), + MACSEC_IRQ_STAT(secure_reg_viol), + MACSEC_IRQ_STAT(rx_dbg_capture_done), + MACSEC_IRQ_STAT(tx_dbg_capture_done), +#endif /* MACSEC_SUPPORT */ + }; /** @@ -648,6 +1078,15 @@ static void ether_get_ethtool_stats(struct net_device *dev, } } +#ifdef MACSEC_SUPPORT + ret = osi_macsec_read_mmc(osi_core); + if (ret == -1) { + dev_err(pdata->dev, + "Fail to read macsec stats\n"); + return; + } +#endif /* MACSEC_SUPPORT */ + for (i = 0; i < ETHER_MMC_STATS_LEN; i++) { char *p = (char *)osi_core + ether_mmc[i].stat_offset;