History

ethtool: add interface to read standard MAC stats

Most of the MAC statistics are included in struct rtnl_link_stats64, but some fields are aggregated. Besides it's good to expose these clearly hardware stats separately.

Jakub Kicinski committed 5 years ago

Commit ca224451 parent f09ea6f6 files · +182 −0Browse files

Showing the changes to include/uapi (2 of 6 files). Show all

Unified · Split

2 files
  1. include/uapi/linux/ethtool.h +2 −0
  2. include/uapi/linux/ethtool_netlink.h +53 −0
include/uapi/linux/ethtool.h+2−0
@@ -671,6 +671,7 @@ enum ethtool_link_ext_substate_cable_issue { · 670 unmodified lines
671671 * @ETH_SS_UDP_TUNNEL_TYPES: UDP tunnel types
672672 * @ETH_SS_STATS_STD: standardized stats
673673 * @ETH_SS_STATS_ETH_PHY: names of IEEE 802.3 PHY statistics
674+ * @ETH_SS_STATS_ETH_MAC: names of IEEE 802.3 MAC statistics
674675 *
675676 * @ETH_SS_COUNT: number of defined string sets
676677 */
@@ -693,6 +694,7 @@ enum ethtool_stringset { · 16 unmodified lines
693694 ETH_SS_UDP_TUNNEL_TYPES,
694695 ETH_SS_STATS_STD,
695696 ETH_SS_STATS_ETH_PHY,
697+ ETH_SS_STATS_ETH_MAC,
696698
697699 /* add new constants above here */
698700 ETH_SS_COUNT
include/uapi/linux/ethtool_netlink.h+53−0
@@ -698,6 +698,7 @@ enum { · 697 unmodified lines
698698
699699 enum {
700700 ETHTOOL_STATS_ETH_PHY,
701+ ETHTOOL_STATS_ETH_MAC,
701702
702703 /* add new constants above here */
703704 __ETHTOOL_STATS_CNT
@@ -726,6 +727,58 @@ enum { · 22 unmodified lines
726727 ETHTOOL_A_STATS_ETH_PHY_MAX = (__ETHTOOL_A_STATS_ETH_PHY_CNT - 1)
727728 };
728729
730+enum {
731+ /* 30.3.1.1.2 aFramesTransmittedOK */
732+ ETHTOOL_A_STATS_ETH_MAC_2_TX_PKT,
733+ /* 30.3.1.1.3 aSingleCollisionFrames */
734+ ETHTOOL_A_STATS_ETH_MAC_3_SINGLE_COL,
735+ /* 30.3.1.1.4 aMultipleCollisionFrames */
736+ ETHTOOL_A_STATS_ETH_MAC_4_MULTI_COL,
737+ /* 30.3.1.1.5 aFramesReceivedOK */
738+ ETHTOOL_A_STATS_ETH_MAC_5_RX_PKT,
739+ /* 30.3.1.1.6 aFrameCheckSequenceErrors */
740+ ETHTOOL_A_STATS_ETH_MAC_6_FCS_ERR,
741+ /* 30.3.1.1.7 aAlignmentErrors */
742+ ETHTOOL_A_STATS_ETH_MAC_7_ALIGN_ERR,
743+ /* 30.3.1.1.8 aOctetsTransmittedOK */
744+ ETHTOOL_A_STATS_ETH_MAC_8_TX_BYTES,
745+ /* 30.3.1.1.9 aFramesWithDeferredXmissions */
746+ ETHTOOL_A_STATS_ETH_MAC_9_TX_DEFER,
747+ /* 30.3.1.1.10 aLateCollisions */
748+ ETHTOOL_A_STATS_ETH_MAC_10_LATE_COL,
749+ /* 30.3.1.1.11 aFramesAbortedDueToXSColls */
750+ ETHTOOL_A_STATS_ETH_MAC_11_XS_COL,
751+ /* 30.3.1.1.12 aFramesLostDueToIntMACXmitError */
752+ ETHTOOL_A_STATS_ETH_MAC_12_TX_INT_ERR,
753+ /* 30.3.1.1.13 aCarrierSenseErrors */
754+ ETHTOOL_A_STATS_ETH_MAC_13_CS_ERR,
755+ /* 30.3.1.1.14 aOctetsReceivedOK */
756+ ETHTOOL_A_STATS_ETH_MAC_14_RX_BYTES,
757+ /* 30.3.1.1.15 aFramesLostDueToIntMACRcvError */
758+ ETHTOOL_A_STATS_ETH_MAC_15_RX_INT_ERR,
759+
760+ /* 30.3.1.1.18 aMulticastFramesXmittedOK */
761+ ETHTOOL_A_STATS_ETH_MAC_18_TX_MCAST,
762+ /* 30.3.1.1.19 aBroadcastFramesXmittedOK */
763+ ETHTOOL_A_STATS_ETH_MAC_19_TX_BCAST,
764+ /* 30.3.1.1.20 aFramesWithExcessiveDeferral */
765+ ETHTOOL_A_STATS_ETH_MAC_20_XS_DEFER,
766+ /* 30.3.1.1.21 aMulticastFramesReceivedOK */
767+ ETHTOOL_A_STATS_ETH_MAC_21_RX_MCAST,
768+ /* 30.3.1.1.22 aBroadcastFramesReceivedOK */
769+ ETHTOOL_A_STATS_ETH_MAC_22_RX_BCAST,
770+ /* 30.3.1.1.23 aInRangeLengthErrors */
771+ ETHTOOL_A_STATS_ETH_MAC_23_IR_LEN_ERR,
772+ /* 30.3.1.1.24 aOutOfRangeLengthField */
773+ ETHTOOL_A_STATS_ETH_MAC_24_OOR_LEN,
774+ /* 30.3.1.1.25 aFrameTooLongErrors */
775+ ETHTOOL_A_STATS_ETH_MAC_25_TOO_LONG_ERR,
776+
777+ /* add new constants above here */
778+ __ETHTOOL_A_STATS_ETH_MAC_CNT,
779+ ETHTOOL_A_STATS_ETH_MAC_MAX = (__ETHTOOL_A_STATS_ETH_MAC_CNT - 1)
780+};
781+
729782 /* generic netlink info */
730783 #define ETHTOOL_GENL_NAME "ethtool"
731784 #define ETHTOOL_GENL_VERSION 1