+ uint64_t statistics = 0;
+
+ memset(hw_stats, 0, sizeof(*hw_stats));
+ memset(stats, 0, sizeof(*stats));
+
+ /*36-bit statistics counter that collects the number of frames
+ *that are successfully transmitted, including control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_FRAME_OK_LO,
+ IPN3KE_10G_TX_STATS_FRAME_OK_HI,
+ hw, port_id);
+ stats->opackets = statistics;
+
+ /*36-bit statistics counter that collects the number of frames
+ *that are successfully received, including control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_FRAME_OK_LO,
+ IPN3KE_10G_RX_STATS_FRAME_OK_HI,
+ hw, port_id);
+ stats->ipackets = statistics;
+
+ /*36-bit statistics counter that collects the number of frames
+ *transmitted with error, including control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_FRAME_ERR_LO,
+ IPN3KE_10G_TX_STATS_FRAME_ERR_HI,
+ hw, port_id);
+ stats->oerrors = statistics;
+ hw_stats->eth.tx_errors = statistics;
+
+ /*36-bit statistics counter that collects the number of frames
+ *received with error, including control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_FRAME_ERR_LO,
+ IPN3KE_10G_RX_STATS_FRAME_ERR_HI,
+ hw, port_id);
+ stats->ierrors = statistics;
+ hw_stats->eth.rx_discards = statistics;
+
+ /*36-bit statistics counter that collects the number
+ *of RX frames with CRC error.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_FRAME_CRC_ERR_LO,
+ IPN3KE_10G_RX_STATS_FRAME_CRC_ERR_HI,
+ hw, port_id);
+ hw_stats->crc_errors = statistics;
+
+ /*64-bit statistics counter that collects the payload length,
+ *including the bytes in control frames.
+ *The payload length is the number of data and padding bytes
+ *transmitted.
+ *If the tx_vlan_detection[0] register bit is set to 1,
+ *the VLAN and stacked VLAN tags are counted as part of
+ *the TX payload.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_OCTETS_OK_LO,
+ IPN3KE_10G_TX_STATS_OCTETS_OK_HI,
+ hw, port_id);
+ stats->obytes = statistics;
+ hw_stats->eth.tx_bytes = statistics;
+
+ /*64-bit statistics counter that collects the payload length,
+ *including the bytes in control frames.
+ *The payload length is the number of data and padding bytes
+ *received.
+ *If the rx_vlan_detection[0] register bit is set to 1,
+ *the VLAN and stacked VLAN tags are counted as part of
+ *the RX payload.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_OCTETS_OK_LO,
+ IPN3KE_10G_RX_STATS_OCTETS_OK_HI,
+ hw, port_id);
+ stats->ibytes = statistics;
+ hw_stats->eth.rx_bytes = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *valid pause frames transmitted.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_PAUSE_MAC_CTRL_FRAMES_LO,
+ IPN3KE_10G_TX_STATS_PAUSE_MAC_CTRL_FRAMES_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *valid pause frames received.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_PAUSE_MAC_CTRL_FRAMES_LO,
+ IPN3KE_10G_RX_STATS_PAUSE_MAC_CTRL_FRAMES_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of frames
+ *transmitted that are invalid and with error.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_IF_ERRORS_LO,
+ IPN3KE_10G_TX_STATS_IF_ERRORS_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of frames
+ *received that are invalid and with error.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_IF_ERRORS_LO,
+ IPN3KE_10G_RX_STATS_IF_ERRORS_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *good unicast frames transmitted,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_UNICAST_FRAME_OK_LO,
+ IPN3KE_10G_TX_STATS_UNICAST_FRAME_OK_HI,
+ hw, port_id);
+ hw_stats->eth.tx_unicast = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *good unicast frames received,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_UNICAST_FRAME_OK_LO,
+ IPN3KE_10G_RX_STATS_UNICAST_FRAME_OK_HI,
+ hw, port_id);
+ hw_stats->eth.rx_unicast = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *unicast frames transmitted with error,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_UNICAST_FRAME_ERR_LO,
+ IPN3KE_10G_TX_STATS_UNICAST_FRAME_ERR_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *unicast frames received with error,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_UNICAST_FRAME_ERR_LO,
+ IPN3KE_10G_RX_STATS_UNICAST_FRAME_ERR_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *good multicast frames transmitted,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_MULTICAST_FRAME_OK_LO,
+ IPN3KE_10G_TX_STATS_MULTICAST_FRAME_OK_HI,
+ hw, port_id);
+ hw_stats->eth.tx_multicast = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *good multicast frames received,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_MULTICAST_FRAME_OK_LO,
+ IPN3KE_10G_RX_STATS_MULTICAST_FRAME_OK_HI,
+ hw, port_id);
+ hw_stats->eth.rx_multicast = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *multicast frames transmitted with error,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_MULTICAST_FRAME_ERR_LO,
+ IPN3KE_10G_TX_STATS_MULTICAST_FRAME_ERR_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number
+ *of multicast frames received with error,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_MULTICAST_FRAME_ERR_LO,
+ IPN3KE_10G_RX_STATS_MULTICAST_FRAME_ERR_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *good broadcast frames transmitted,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_BROADCAST_FRAME_OK_LO,
+ IPN3KE_10G_TX_STATS_BROADCAST_FRAME_OK_HI,
+ hw, port_id);
+ hw_stats->eth.tx_broadcast = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *good broadcast frames received,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_BROADCAST_FRAME_OK_LO,
+ IPN3KE_10G_RX_STATS_BROADCAST_FRAME_OK_HI,
+ hw, port_id);
+ hw_stats->eth.rx_broadcast = statistics;
+
+ /*36-bit statistics counter that collects the number
+ *of broadcast frames transmitted with error,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_BROADCAST_FRAME_ERR_LO,
+ IPN3KE_10G_TX_STATS_BROADCAST_FRAME_ERR_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *broadcast frames received with error,
+ *excluding control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_BROADCAST_FRAME_ERR_LO,
+ IPN3KE_10G_RX_STATS_BROADCAST_FRAME_ERR_HI,
+ hw, port_id);
+
+ /*64-bit statistics counter that collects the total number of
+ *octets transmitted.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_64bits_statistics_register(
+ IPN3KE_10G_TX_STATS_ETHER_STATS_OCTETS_LO,
+ IPN3KE_10G_TX_STATS_ETHER_STATS_OCTETS_HI,
+ hw, port_id);
+
+ /*64-bit statistics counter that collects the total number of
+ *octets received.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_64bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_OCTETS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_OCTETS_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the total number of
+ *good, errored, and invalid frames transmitted.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_LO,
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the total number of
+ *good, errored, and invalid frames received.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *undersized TX frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_ETHER_STATS_UNDER_SIZE_PKTS_LO,
+ IPN3KE_10G_TX_STATS_ETHER_STATS_UNDER_SIZE_PKTS_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *undersized RX frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_UNDER_SIZE_PKTS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_UNDER_SIZE_PKTS_HI,
+ hw, port_id);
+ hw_stats->rx_undersize = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *TX frames whose length exceeds the maximum frame length
+ *specified.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_ETHER_STATS_OVER_SIZE_PKTS_LO,
+ IPN3KE_10G_TX_STATS_ETHER_STATS_OVER_SIZE_PKTS_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *RX frames whose length exceeds the maximum frame length
+ *specified.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_OVER_SIZE_PKTS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_OVER_SIZE_PKTS_HI,
+ hw, port_id);
+ hw_stats->rx_oversize = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *64-byte TX frames,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_64_OCTETS_LO,
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_64_OCTETS_HI,
+ hw, port_id);
+ hw_stats->tx_size_64 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *64-byte RX frames,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_64_OCTETS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_64_OCTETS_HI,
+ hw, port_id);
+ hw_stats->rx_size_64 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *TX frames between the length of 65 and 127 bytes,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_65_127_OCTETS_LO,
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_65_127_OCTETS_HI,
+ hw, port_id);
+ hw_stats->tx_size_65_127 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *RX frames between the length of 65 and 127 bytes,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_65_127_OCTETS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_65_127_OCTETS_HI,
+ hw, port_id);
+ hw_stats->rx_size_65_127 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *TX frames between the length of 128 and 255 bytes,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_128_255_OCTETS_LO,
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_128_255_OCTETS_HI,
+ hw, port_id);
+ hw_stats->tx_size_128_255 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *RX frames between the length of 128 and 255 bytes,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_128_255_OCTETS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_128_255_OCTETS_HI,
+ hw, port_id);
+ hw_stats->rx_size_128_255 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *TX frames between the length of 256 and 511 bytes,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_256_511_OCTETS_LO,
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_256_511_OCTETS_HI,
+ hw, port_id);
+ hw_stats->tx_size_256_511 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *RX frames between the length of 256 and 511 bytes,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_256_511_OCTETS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_256_511_OCTETS_HI,
+ hw, port_id);
+ hw_stats->rx_size_256_511 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *TX frames between the length of 512 and 1023 bytes,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_512_1023_OCTETS_LO,
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_512_1023_OCTETS_HI,
+ hw, port_id);
+ hw_stats->tx_size_512_1023 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *RX frames between the length of 512 and 1023 bytes,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_512_1023_OCTETS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_512_1023_OCTETS_HI,
+ hw, port_id);
+ hw_stats->rx_size_512_1023 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *TX frames between the length of 1024 and 1518 bytes,
+ *including the CRC field but
+ *excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_1024_1518_OCTETS_LO,
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_1024_1518_OCTETS_HI,
+ hw, port_id);
+ hw_stats->tx_size_1024_1518 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *RX frames between the length of 1024 and 1518 bytes,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_1024_1518_OCTETS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_1024_1518_OCTETS_HI,
+ hw, port_id);
+ hw_stats->rx_size_1024_1518 = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *TX frames equal or more than the length of 1,519 bytes,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good, errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_1519_X_OCTETS_LO,
+ IPN3KE_10G_TX_STATS_ETHER_STATS_PKTS_1519_X_OCTETS_HI,
+ hw, port_id);
+ hw_stats->tx_size_1519_to_max = statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *RX frames equal or more than the length of 1,519 bytes,
+ *including the CRC field
+ *but excluding the preamble and SFD bytes.
+ *This count includes good,
+ *errored, and invalid frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_1519_X_OCTETS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_PKTS_1519_X_OCTETS_HI,
+ hw, port_id);
+ hw_stats->rx_size_big = statistics;
+
+ /*36-bit statistics counter that collects the total number of
+ *RX frames with length less than 64 bytes and CRC error.
+ *The MAC does not drop these frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_FRAGMENTS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_FRAGMENTS_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *oversized RX frames with CRC error.
+ *The MAC does not drop these frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_JABBERS_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_JABBERS_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *RX frames with CRC error,
+ *whose length is between 64 and the maximum frame length
+ *specified in the register.
+ *The MAC does not drop these frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_ETHER_STATS_CRC_ERR_LO,
+ IPN3KE_10G_RX_STATS_ETHER_STATS_CRC_ERR_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *valid TX unicast control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_UNICAST_MAC_CTRL_FRAMES_LO,
+ IPN3KE_10G_TX_STATS_UNICAST_MAC_CTRL_FRAMES_HI,
+ hw, port_id);
+ hw_stats->eth.tx_unicast += statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *valid RX unicast control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_UNICAST_MAC_CTRL_FRAMES_LO,
+ IPN3KE_10G_RX_STATS_UNICAST_MAC_CTRL_FRAMES_HI,
+ hw, port_id);
+ hw_stats->eth.rx_unicast += statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *valid TX multicast control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_MULTICAST_MAC_CTRL_FRAMES_LO,
+ IPN3KE_10G_TX_STATS_MULTICAST_MAC_CTRL_FRAMES_HI,
+ hw, port_id);
+ hw_stats->eth.tx_multicast += statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *valid RX multicast control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_MULTICAST_MAC_CTRL_FRAMES_LO,
+ IPN3KE_10G_RX_STATS_MULTICAST_MAC_CTRL_FRAMES_HI,
+ hw, port_id);
+ hw_stats->eth.rx_multicast += statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *valid TX broadcast control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_BROADCAST_MAC_CTRL_FRAMES_LO,
+ IPN3KE_10G_TX_STATS_BROADCAST_MAC_CTRL_FRAMES_HI,
+ hw, port_id);
+ hw_stats->eth.tx_broadcast += statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *valid RX broadcast control frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_BROADCAST_MAC_CTRL_FRAMES_LO,
+ IPN3KE_10G_RX_STATS_BROADCAST_MAC_CTRL_FRAMES_HI,
+ hw, port_id);
+ hw_stats->eth.rx_broadcast += statistics;
+
+ /*36-bit statistics counter that collects the number of
+ *valid TX PFC frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_TX_STATS_PFC_MAC_CTRL_FRAMES_LO,
+ IPN3KE_10G_TX_STATS_PFC_MAC_CTRL_FRAMES_HI,
+ hw, port_id);
+
+ /*36-bit statistics counter that collects the number of
+ *valid RX PFC frames.
+ */
+ statistics = ipn3ke_rpst_read_36bits_statistics_register(
+ IPN3KE_10G_RX_STATS_PFC_MAC_CTRL_FRAMES_LO,
+ IPN3KE_10G_RX_STATS_PFC_MAC_CTRL_FRAMES_HI,
+ hw, port_id);
+