osi: core: macsec: enable SECURE_REG_VIOL intr

enable SECURE_REG_VIOL interrupt to generate
uncorrected Error for illegal access errors
for MACSEC Registers

Bug 3590939

Change-Id: I4f50c1b709ed3662eb6062dcbbbe42a8e36f101c
Signed-off-by: Om Prakash Singh <omp@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/kernel/nvethernetrm/+/2767836
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Om Prakash Singh
2022-08-27 18:13:43 +05:30
committed by Bhadram Varka
parent 9bae4a2183
commit e49f5c01ce
3 changed files with 18 additions and 10 deletions

View File

@@ -366,6 +366,7 @@ typedef my_lint_64 nvel64_t;
#define MACSEC_RX_CRC_ERR_IDX 0U #define MACSEC_RX_CRC_ERR_IDX 0U
#define MACSEC_TX_CRC_ERR_IDX 1U #define MACSEC_TX_CRC_ERR_IDX 1U
#define MACSEC_RX_ICV_ERR_IDX 2U #define MACSEC_RX_ICV_ERR_IDX 2U
#define MACSEC_REG_VIOL_ERR_IDX 3U
/** @} */ /** @} */
extern nveu32_t hsi_err_code[][3]; extern nveu32_t hsi_err_code[][3];
@@ -388,13 +389,14 @@ extern nveu32_t hsi_err_code[][3];
/** /**
* @brief Maximum number of different mac error code * @brief Maximum number of different mac error code
* HSI_SW_ERR_CODE + Two (Corrected and Uncorrected error code)
*/ */
#define HSI_MAX_MAC_ERROR_CODE 6U #define HSI_MAX_MAC_ERROR_CODE 6U
/** /**
* @brief Maximum number of different macsec error code * @brief Maximum number of different macsec error code
*/ */
#define HSI_MAX_MACSEC_ERROR_CODE 3U #define HSI_MAX_MACSEC_ERROR_CODE 4U
/** /**
* @addtogroup HSI_SW_ERR_CODE * @addtogroup HSI_SW_ERR_CODE
@@ -409,7 +411,7 @@ extern nveu32_t hsi_err_code[][3];
#define OSI_MACSEC_RX_CRC_ERR 0x1005U #define OSI_MACSEC_RX_CRC_ERR 0x1005U
#define OSI_MACSEC_TX_CRC_ERR 0x1006U #define OSI_MACSEC_TX_CRC_ERR 0x1006U
#define OSI_MACSEC_RX_ICV_ERR 0x1007U #define OSI_MACSEC_RX_ICV_ERR 0x1007U
#define OSI_MACSEC_REG_VIOL_ERR 0x1008U
/** @} */ /** @} */
#endif #endif

View File

@@ -3669,6 +3669,13 @@ static inline void handle_common_irq(struct osi_core_priv_data *const osi_core)
if ((common_isr & MACSEC_SECURE_REG_VIOL) == MACSEC_SECURE_REG_VIOL) { if ((common_isr & MACSEC_SECURE_REG_VIOL) == MACSEC_SECURE_REG_VIOL) {
CERT_C__POST_INC__U64(osi_core->macsec_irq_stats.secure_reg_viol); CERT_C__POST_INC__U64(osi_core->macsec_irq_stats.secure_reg_viol);
clear |= MACSEC_SECURE_REG_VIOL; clear |= MACSEC_SECURE_REG_VIOL;
#ifdef HSI_SUPPORT
if (osi_core->hsi.enabled == OSI_ENABLE) {
osi_core->hsi.macsec_err_code[MACSEC_REG_VIOL_ERR_IDX] =
OSI_MACSEC_REG_VIOL_ERR;
osi_core->hsi.macsec_report_err = OSI_ENABLE;
}
#endif
} }
if ((common_isr & MACSEC_RX_UNINIT_KEY_SLOT) == if ((common_isr & MACSEC_RX_UNINIT_KEY_SLOT) ==
@@ -4399,8 +4406,7 @@ static void macsec_intr_config(struct osi_core_priv_data *const osi_core, nveu32
val |= (MACSEC_RX_UNINIT_KEY_SLOT_INT_EN | val |= (MACSEC_RX_UNINIT_KEY_SLOT_INT_EN |
MACSEC_RX_LKUP_MISS_INT_EN | MACSEC_RX_LKUP_MISS_INT_EN |
MACSEC_TX_UNINIT_KEY_SLOT_INT_EN | MACSEC_TX_UNINIT_KEY_SLOT_INT_EN |
MACSEC_TX_LKUP_MISS_INT_EN | MACSEC_TX_LKUP_MISS_INT_EN);
MACSEC_SECURE_REG_VIOL_INT_EN);
osi_writela(osi_core, val, addr + MACSEC_COMMON_IMR); osi_writela(osi_core, val, addr + MACSEC_COMMON_IMR);
LOG("Write MACSEC_COMMON_IMR: 0x%x\n", val); LOG("Write MACSEC_COMMON_IMR: 0x%x\n", val);
} else { } else {
@@ -4431,8 +4437,7 @@ static void macsec_intr_config(struct osi_core_priv_data *const osi_core, nveu32
val &= (~MACSEC_RX_UNINIT_KEY_SLOT_INT_EN & val &= (~MACSEC_RX_UNINIT_KEY_SLOT_INT_EN &
~MACSEC_RX_LKUP_MISS_INT_EN & ~MACSEC_RX_LKUP_MISS_INT_EN &
~MACSEC_TX_UNINIT_KEY_SLOT_INT_EN & ~MACSEC_TX_UNINIT_KEY_SLOT_INT_EN &
~MACSEC_TX_LKUP_MISS_INT_EN & ~MACSEC_TX_LKUP_MISS_INT_EN);
~MACSEC_SECURE_REG_VIOL_INT_EN);
osi_writela(osi_core, val, addr + MACSEC_COMMON_IMR); osi_writela(osi_core, val, addr + MACSEC_COMMON_IMR);
LOG("Write MACSEC_COMMON_IMR: 0x%x\n", val); LOG("Write MACSEC_COMMON_IMR: 0x%x\n", val);
} }
@@ -4561,6 +4566,9 @@ static nve32_t macsec_initialize(struct osi_core_priv_data *const osi_core, nveu
LOG("Write MACSEC_RX_IMR: 0x%x\n", val); LOG("Write MACSEC_RX_IMR: 0x%x\n", val);
osi_writela(osi_core, val, addr + MACSEC_RX_IMR); osi_writela(osi_core, val, addr + MACSEC_RX_IMR);
val = osi_readla(osi_core, addr + MACSEC_COMMON_IMR);
val |= MACSEC_SECURE_REG_VIOL_INT_EN;
osi_writela(osi_core, val, addr + MACSEC_COMMON_IMR);
/* Set AES mode /* Set AES mode
* Default power on reset is AES-GCM128, leave it. * Default power on reset is AES-GCM128, leave it.
*/ */

View File

@@ -91,9 +91,7 @@
#define MACSEC_TX_SCI_LUT_VALID 0xD028 #define MACSEC_TX_SCI_LUT_VALID 0xD028
#define MACSEC_RX_BYP_LUT_VALID 0xD02C #define MACSEC_RX_BYP_LUT_VALID 0xD02C
#define MACSEC_RX_SCI_LUT_VALID 0xD030 #define MACSEC_RX_SCI_LUT_VALID 0xD030
#ifdef DEBUG_MACSEC
#define MACSEC_COMMON_IMR 0xD054 #define MACSEC_COMMON_IMR 0xD054
#endif /* DEBUG_MACSEC */
#define MACSEC_COMMON_ISR 0xD058 #define MACSEC_COMMON_ISR 0xD058
#define MACSEC_TX_SC_KEY_INVALID_STS0_0 0xD064 #define MACSEC_TX_SC_KEY_INVALID_STS0_0 0xD064
#define MACSEC_TX_SC_KEY_INVALID_STS1_0 0xD068 #define MACSEC_TX_SC_KEY_INVALID_STS1_0 0xD068
@@ -217,7 +215,6 @@
#define MACSEC_TX_AES_MODE_AES256 OSI_BIT(1) #define MACSEC_TX_AES_MODE_AES256 OSI_BIT(1)
/** @} */ /** @} */
#ifdef DEBUG_MACSEC
/** /**
* @addtogroup MACSEC_COMMON_IMR register * @addtogroup MACSEC_COMMON_IMR register
* *
@@ -225,12 +222,13 @@
* @{ * @{
*/ */
#define MACSEC_SECURE_REG_VIOL_INT_EN OSI_BIT(31) #define MACSEC_SECURE_REG_VIOL_INT_EN OSI_BIT(31)
#ifdef DEBUG_MACSEC
#define MACSEC_RX_UNINIT_KEY_SLOT_INT_EN OSI_BIT(17) #define MACSEC_RX_UNINIT_KEY_SLOT_INT_EN OSI_BIT(17)
#define MACSEC_RX_LKUP_MISS_INT_EN OSI_BIT(16) #define MACSEC_RX_LKUP_MISS_INT_EN OSI_BIT(16)
#define MACSEC_TX_UNINIT_KEY_SLOT_INT_EN OSI_BIT(1) #define MACSEC_TX_UNINIT_KEY_SLOT_INT_EN OSI_BIT(1)
#define MACSEC_TX_LKUP_MISS_INT_EN OSI_BIT(0) #define MACSEC_TX_LKUP_MISS_INT_EN OSI_BIT(0)
/** @} */
#endif /* DEBUG_MACSEC */ #endif /* DEBUG_MACSEC */
/** @} */
/** /**
* @addtogroup MACSEC_TX_IMR register * @addtogroup MACSEC_TX_IMR register