The HSC Subsystem maintains statistics counters for all SecYs and
internals SCs (i.e. SCs associated with internals SAs) in its internal tables. You can
read or read-and-clear these statistics through indirect register access.
Following is the procedure to read TX SC statistics for an internal SC with index SC_INDEX[8:0].
- Set the TX_INDIRECT_AXS_CTL_REG register:
- Set the
tx_ind_axs_ctrl_wrn
field to0
(TX_INDIRECT_AXS_CTL_REG[1]=0) to indicate a read function. - Set
tx_ind_axs_ctrl_grp = 2'b11
(TX_INDIRECT_AXS_CTL_REG[3:2] = 2’b11) to indicate indirect access to the TX SC statistics table. - Set
tx_ind_axs_ctrl_keep = 1'b0/1'b1
(TX_INDIRECT_AXS_CTL_REG[4] = 1’b0/1’b1) to clear/keep the corresponding SC statistics after read. - Set
tx_ind_axs_ctrl_num = {1'b0, SC_INDEX[8:0]}
(TX_INDIRECT_AXS_CTL_REG[17:8] = {1’b0, SC_INDEX[8:0]}) if two SAs per SC is supported. Otherwise, settx_ind_axs_ctrl_num = {2'b00, SC_INDEX[7:0]}
(RX_INDIRECT_AXS_CTL_REG[17:8] = {2’b00, SC_INDEX[7:0]}) - Set the
tx_ind_axs_ctrl_ena field
to1
(TX_INDIRECT_AXS_CTL_REG[0]=1).
- Set the
- Wait until the
tx_ind_axs_ctrl_ena
bit is cleared (or a pulse is generated on thestat_rsvd_out_tx_top[120]
pin). - Read the corresponding SC statistics from the following registers:
- TX_INDIRECT_AXS_RDATA_REG_LSB = STAT_TX_SC_PROTECTED_PACKETS[31:0]
- TX_INDIRECT_AXS_RDATA_REG_MID1 = STAT_TX_SC_PROTECTED_PACKETS[63:32]
- TX_INDIRECT_AXS_RDATA_REG_MID2 = STAT_TX_SC_ENCRYPTED_PACKETS[31:0]
- TX_INDIRECT_AXS_RDATA_REG_MID3 = STAT_TX_SC_ENCRYPTED_PACKETS[63:32]
Following is the procedure to read TX SecY/channel statistics for SECY_INDEX[5:0].
- Set the TX_INDIRECT_AXS_CTL_REG register:
- Set the
tx_ind_axs_ctrl_wrn
field to0
(TX_INDIRECT_AXS_CTL_REG[1]=0) to indicate a read function. - Set
tx_ind_axs_ctrl_grp = 2'b10
(TX_INDIRECT_AXS_CTL_REG[3:2] = 2’b10) to indicate indirect access to the SecY statistics table. - Set
tx_ind_axs_ctrl_keep = 1'b0/1'b1
(TX_INDIRECT_AXS_CTL_REG[4] = 1’b0/1’b1) to clear/keep the corresponding SC statistics after read. - Set
tx_ind_axs_ctrl_num = {4'h0, SECY_INDEX[5:0]}
(TX_INDIRECT_AXS_CTL_REG[17:8] = {4’h0, SECY_INDEX[5:0]}). - Set the
tx_ind_axs_ctrl_ena
field to1
(TX_INDIRECT_AXS_CTL_REG[0]=1).
- Set the
- Wait until the
tx_ind_axs_ctrl_ena
bit is cleared (or a pulse is generated on thestat_rsvd_out_tx_top[120]
pin). - Read the corresponding SC statistics from the following registers:
- TX_INDIRECT_AXS_RDATA_REG_LSB = STAT_TX_SECY_UNTAGGED_PACKETS[31:0]
- TX_INDIRECT_AXS_RDATA_REG_MID1 = STAT_TX_SECY_UNTAGGED_PACKETS[63:32]
- TX_INDIRECT_AXS_RDATA_REG_MID2 = STAT_TX_SECY_TOO_LONG_PACKETS[31:0]
- TX_INDIRECT_AXS_RDATA_REG_MID3 = STAT_TX_SECY_TOO_LONG_PACKETS[63:32]
- TX_INDIRECT_AXS_RDATA_REG_MID4 = STAT_TX_SECY_PROTECTED_OCTETS[31:0]
- TX_INDIRECT_AXS_RDATA_REG_MID5 = STAT_TX_SECY_PROTECTED_OCTETS[63:32]
- TX_INDIRECT_AXS_RDATA_REG_MID6 = STAT_TX_SECY_ENCRYPTED_OCTETS[31:0]
- TX_INDIRECT_AXS_RDATA_REG_MSB7 = STAT_TX_SECY_ENCRYPTED_OCTETS[63:32]
Following is the procedure to read RX SC statistics with index SC_INDEX[8:0].
- Set the RX_INDIRECT_AXS_CTL_REG register:
- Set the
rx_ind_axs_ctrl_wrn
field to0
(RX_INDIRECT_AXS_CTL_REG[1]=0) to indicate a read function. - Set
rx_ind_axs_ctrl_grp = 2'b11
(RX_INDIRECT_AXS_CTL_REG[3:2] = 2’b11) to indicate indirect access to the RX SC statistics table. - Set
rx_ind_axs_ctrl_keep = 1'b0/1'b1
(RX_INDIRECT_AXS_CTL_REG[4] = 1’b0/1’b1) to clear/keep the corresponding SC statistics after read. - Set
rx_ind_axs_ctrl_num = {1'b0, SC_INDEX[8:0]}
(RX_INDIRECT_AXS_CTL_REG[17:8] = {1’b0, SC_INDEX[8:0]}) if two SAs per SC is supported. Otherwise, setrx_ind_axs_ctrl_num = {2'b00, SC_INDEX[7:0]}
(RX_INDIRECT_AXS_CTL_REG[17:8] = {2’b00, SC_INDEX[7:0]}). - Set the
rx_ind_axs_ctrl_ena
field to1
(RX_INDIRECT_AXS_CTL_REG[0]=1).
- Set the
- Wait until the
rx_ind_axs_ctrl_ena
bit is cleared (or a pulse is generated on thestat_rsvd_out_rx_top[120]
pin). - Read the corresponding SC statistics from the following registers:
- RX_INDIRECT_AXS_RDATA_REG_LSB = STAT_RX_SC_DELAYED_PACKETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID1 = STAT_RX_SC_DELAYED_PACKETS[63:32]
- RX_INDIRECT_AXS_RDATA_REG_MID2 = STAT_RX_SC_LATE_PACKETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID3 = STAT_RX_SC_LATE_PACKETS[63:32]
- RX_INDIRECT_AXS_RDATA_REG_MID4 = STAT_RX_SC_NOT_VALID_PACKETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID5 = STAT_RX_SC_NOT_VALID_PACKETS[63:32]
- RX_INDIRECT_AXS_RDATA_REG_MID6 = STAT_RX_SC_INVALID_PACKETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID7 = STAT_RX_SC_INVALID_PACKETS[63:32]
- RX_INDIRECT_AXS_RDATA_REG_MID8 = STAT_RX_SC_UNCHECKED_PACKETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID9 = STAT_RX_SC_UNCHECKED_PACKETS[63:32]
- RX_INDIRECT_AXS_RDATA_REG_MID10 = STAT_RX_SC_OK_PACKETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID11 = STAT_RX_SC_OK_PACKETS[63:32]
The following is the procedure to read RX SecY statistics with index SECY_INDEX[5:0].
- Set the RX_INDIRECT_AXS_CTL_REG register:
- Set the
rx_ind_axs_ctrl_wrn
field to 0 (RX_INDIRECT_AXS_CTL_REG[1]=0) to indicate a read function. - Set
rx_ind_axs_ctrl_grp = 2'b10
(RX_INDIRECT_AXS_CTL_REG[3:2] = 2’b10) to indicate the indirect access to the RX SecY statistics table. - Set
rx_ind_axs_ctrl_keep = 1'b0/1'b1
(RX_INDIRECT_AXS_CTL_REG[4] = 1’b0/1’b1) to clear/keep the corresponding SecY statistics after read. - Set
rx_ind_axs_ctrl_num = {4'h0, SECY_INDEX[5:0]}
(RX_INDIRECT_AXS_CTL_REG[17:8] = {4’h0, SECY_INDEX[5:0]}). - Set the
rx_ind_axs_ctrl_ena
field to1
(RX_INDIRECT_AXS_CTL_REG[0]=1).
- Set the
- Wait until the
rx_ind_axs_ctrl_ena
bit is cleared (or a pulse is generated on thestat_rsvd_out_rx_top[120]
pin). - Read the corresponding SecY statistics from the following registers:
- RX_INDIRECT_AXS_RDATA_REG_LSB = STAT_RX_SECY_UNTAGGED_PACKETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID1 = STAT_RX_SECY_UNTAGGED_PACKETS[63:32]
- RX_INDIRECT_AXS_RDATA_REG_MID2 = STAT_RX_SECY_NO_TAG_PACKETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID3 = STAT_RX_SECY_NO_TAG_PACKETS[63:32]
- RX_INDIRECT_AXS_RDATA_REG_MID4 = STAT_RX_SECY_BAD_TAG_PACKETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID5 = STAT_RX_SECY_BAD_TAG_PACKETS[63:32]
- RX_INDIRECT_AXS_RDATA_REG_MID6 = STAT_RX_SECY_NO_SA_PACKETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID7 = STAT_RX_SECY_NO_SA_PACKETS[63:32]
- RX_INDIRECT_AXS_RDATA_REG_MID8 = STAT_RX_SECY_NO_SA_ERROR_PACKETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID9 = STAT_RX_SECY_NO_SA_ERROR_PACKETS[63:32]
- RX_INDIRECT_AXS_RDATA_REG_MID10 = STAT_RX_SECY_VALIDATED_OCTETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MID11 = STAT_RX_SECY_VALIDATED_OCTETS[63:32]
- RX_INDIRECT_AXS_RDATA_REG_MID12 = STAT_RX_SECY_DECRYPTED_OCTETS[31:0]
- RX_INDIRECT_AXS_RDATA_REG_MSB13 = STAT_RX_SECY_DECRYPTED_OCTETS[63:32]