Add new firmware PA statistics counters for HSR and LRE to the ethtool statistics exposed by the ICSSG driver. New statistics added: - FW_HSR_FWD_CHECK_FAIL_DROP: Packets dropped on the HSR forwarding path - FW_HSR_HE_CHECK_FAIL_DROP: Packets dropped on the HSR host egress path - FW_HSR_SKIP_HOST_DUP_DISCARD_FRAMES: Frames with duplicate discard skipped - FW_LRE_CNT_UNIQUE/DUPLICATE/MULTIPLE_RX: LRE duplicate detetcion counters - FW_LRE_CNT_RX/TX: LRE per-port frame counters - FW_LRE_CNT_OWN_RX: Own HSR tagged frames received - FW_LRE_CNT_ERRWRONGLAN: Frames with wrong LAN identifier (PRP) Document the new HSR/LRE statistics in icssg_prueth.rst. Signed-off-by: MD Danish Anwar --- .../device_drivers/ethernet/ti/icssg_prueth.rst | 10 ++++++++++ drivers/net/ethernet/ti/icssg/icssg_common.c | 7 +++++-- drivers/net/ethernet/ti/icssg/icssg_stats.h | 10 ++++++++++ drivers/net/ethernet/ti/icssg/icssg_switch_map.h | 10 ++++++++++ 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Documentation/networking/device_drivers/ethernet/ti/icssg_prueth.rst b/Documentation/networking/device_drivers/ethernet/ti/icssg_prueth.rst index da21ddf431bb..b0bda7327b2a 100644 --- a/Documentation/networking/device_drivers/ethernet/ti/icssg_prueth.rst +++ b/Documentation/networking/device_drivers/ethernet/ti/icssg_prueth.rst @@ -54,3 +54,13 @@ These statistics are as follows, - ``FW_HOST_TX_PKT_CNT``: Number of valid packets copied by RTU0 to Tx queues - ``FW_HOST_EGRESS_Q_PRE_OVERFLOW``: Host Egress Q (Pre-emptible) Overflow Counter - ``FW_HOST_EGRESS_Q_EXP_OVERFLOW``: Host Egress Q (Pre-emptible) Overflow Counter + - ``FW_HSR_FWD_CHECK_FAIL_DROP``: Packets dropped on the HSR forwarding path due to failed checks + - ``FW_HSR_HE_CHECK_FAIL_DROP``: Packets dropped on the host egress path due to failed checks + - ``FW_HSR_SKIP_HOST_DUP_DISCARD_FRAMES``: Frames for which the host duplicate discard check was skipped + - ``FW_LRE_CNT_UNIQUE_RX``: Number of frames received with no duplicate detected + - ``FW_LRE_CNT_DUPLICATE_RX``: Number of frames received for which exactly one duplicate was detected + - ``FW_LRE_CNT_MULTIPLE_RX``: Number of frames received for which more than one duplicate was detected + - ``FW_LRE_CNT_RX``: Number of HSR/PRP tagged frames received + - ``FW_LRE_CNT_TX``: Number of HSR/PRP tagged frames sent + - ``FW_LRE_CNT_OWN_RX``: Number of HSR/PRP tagged frames received whose source MAC matches the node's own address + - ``FW_LRE_CNT_ERRWRONGLAN``: Number of frames received with a wrong LAN identifier, PRP only diff --git a/drivers/net/ethernet/ti/icssg/icssg_common.c b/drivers/net/ethernet/ti/icssg/icssg_common.c index a28a608f9bf4..e7a51a9eee24 100644 --- a/drivers/net/ethernet/ti/icssg/icssg_common.c +++ b/drivers/net/ethernet/ti/icssg/icssg_common.c @@ -1633,7 +1633,8 @@ void icssg_ndo_get_stats64(struct net_device *ndev, emac_get_stat_by_name(emac, "FW_RX_EOF_SHORT_FRMERR") + emac_get_stat_by_name(emac, "FW_RX_B0_DROP_EARLY_EOF") + emac_get_stat_by_name(emac, "FW_RX_EXP_FRAG_Q_DROP") + - emac_get_stat_by_name(emac, "FW_RX_FIFO_OVERRUN"); + emac_get_stat_by_name(emac, "FW_RX_FIFO_OVERRUN") + + emac_get_stat_by_name(emac, "FW_LRE_CNT_ERRWRONGLAN"); stats->rx_dropped = ndev->stats.rx_dropped + emac_get_stat_by_name(emac, "FW_DROPPED_PKT") + emac_get_stat_by_name(emac, "FW_INF_PORT_DISABLED") + @@ -1643,7 +1644,9 @@ void icssg_ndo_get_stats64(struct net_device *ndev, emac_get_stat_by_name(emac, "FW_INF_DROP_TAGGED") + emac_get_stat_by_name(emac, "FW_INF_DROP_PRIOTAGGED") + emac_get_stat_by_name(emac, "FW_INF_DROP_NOTAG") + - emac_get_stat_by_name(emac, "FW_INF_DROP_NOTMEMBER"); + emac_get_stat_by_name(emac, "FW_INF_DROP_NOTMEMBER") + + emac_get_stat_by_name(emac, "FW_HSR_FWD_CHECK_FAIL_DROP") + + emac_get_stat_by_name(emac, "FW_HSR_HE_CHECK_FAIL_DROP"); stats->tx_errors = ndev->stats.tx_errors; stats->tx_dropped = ndev->stats.tx_dropped + emac_get_stat_by_name(emac, "FW_RTU_PKT_DROP") + diff --git a/drivers/net/ethernet/ti/icssg/icssg_stats.h b/drivers/net/ethernet/ti/icssg/icssg_stats.h index b854eb587c1e..af3fcecac403 100644 --- a/drivers/net/ethernet/ti/icssg/icssg_stats.h +++ b/drivers/net/ethernet/ti/icssg/icssg_stats.h @@ -204,6 +204,16 @@ static const struct icssg_pa_stats icssg_all_pa_stats[] = { ICSSG_PA_STATS(FW_HOST_TX_PKT_CNT), ICSSG_PA_STATS(FW_HOST_EGRESS_Q_PRE_OVERFLOW), ICSSG_PA_STATS(FW_HOST_EGRESS_Q_EXP_OVERFLOW), + ICSSG_PA_STATS(FW_HSR_FWD_CHECK_FAIL_DROP), + ICSSG_PA_STATS(FW_HSR_HE_CHECK_FAIL_DROP), + ICSSG_PA_STATS(FW_HSR_SKIP_HOST_DUP_DISCARD_FRAMES), + ICSSG_PA_STATS(FW_LRE_CNT_UNIQUE_RX), + ICSSG_PA_STATS(FW_LRE_CNT_DUPLICATE_RX), + ICSSG_PA_STATS(FW_LRE_CNT_MULTIPLE_RX), + ICSSG_PA_STATS(FW_LRE_CNT_RX), + ICSSG_PA_STATS(FW_LRE_CNT_TX), + ICSSG_PA_STATS(FW_LRE_CNT_OWN_RX), + ICSSG_PA_STATS(FW_LRE_CNT_ERRWRONGLAN), }; #endif /* __NET_TI_ICSSG_STATS_H */ diff --git a/drivers/net/ethernet/ti/icssg/icssg_switch_map.h b/drivers/net/ethernet/ti/icssg/icssg_switch_map.h index 7e053b8af3ec..bd2d54dd7f45 100644 --- a/drivers/net/ethernet/ti/icssg/icssg_switch_map.h +++ b/drivers/net/ethernet/ti/icssg/icssg_switch_map.h @@ -266,5 +266,15 @@ #define FW_HOST_TX_PKT_CNT 0x0250 #define FW_HOST_EGRESS_Q_PRE_OVERFLOW 0x0258 #define FW_HOST_EGRESS_Q_EXP_OVERFLOW 0x0260 +#define FW_HSR_FWD_CHECK_FAIL_DROP 0x0500 +#define FW_HSR_HE_CHECK_FAIL_DROP 0x0508 +#define FW_HSR_SKIP_HOST_DUP_DISCARD_FRAMES 0x0510 +#define FW_LRE_CNT_UNIQUE_RX 0x0518 +#define FW_LRE_CNT_DUPLICATE_RX 0x0520 +#define FW_LRE_CNT_MULTIPLE_RX 0x0528 +#define FW_LRE_CNT_RX 0x0530 +#define FW_LRE_CNT_TX 0x0538 +#define FW_LRE_CNT_OWN_RX 0x0540 +#define FW_LRE_CNT_ERRWRONGLAN 0x0548 #endif /* __NET_TI_ICSSG_SWITCH_MAP_H */ -- 2.34.1