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
671 * @ETH_SS_UDP_TUNNEL_TYPES: UDP tunnel types671 * @ETH_SS_UDP_TUNNEL_TYPES: UDP tunnel types
672 * @ETH_SS_STATS_STD: standardized stats672 * @ETH_SS_STATS_STD: standardized stats
673 * @ETH_SS_STATS_ETH_PHY: names of IEEE 802.3 PHY statistics673 * @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
674 *675 *
675 * @ETH_SS_COUNT: number of defined string sets676 * @ETH_SS_COUNT: number of defined string sets
676 */677 */
@@ -693,6 +694,7 @@ enum ethtool_stringset { · 16 unmodified lines
693 ETH_SS_UDP_TUNNEL_TYPES,694 ETH_SS_UDP_TUNNEL_TYPES,
694 ETH_SS_STATS_STD,695 ETH_SS_STATS_STD,
695 ETH_SS_STATS_ETH_PHY,696 ETH_SS_STATS_ETH_PHY,
697 ETH_SS_STATS_ETH_MAC,
696 698
697 /* add new constants above here */699 /* add new constants above here */
698 ETH_SS_COUNT700 ETH_SS_COUNT
include/uapi/linux/ethtool_netlink.h+53−0
@@ -698,6 +698,7 @@ enum { · 697 unmodified lines
698 698
699enum {699enum {
700 ETHTOOL_STATS_ETH_PHY,700 ETHTOOL_STATS_ETH_PHY,
701 ETHTOOL_STATS_ETH_MAC,
701 702
702 /* add new constants above here */703 /* add new constants above here */
703 __ETHTOOL_STATS_CNT704 __ETHTOOL_STATS_CNT
@@ -726,6 +727,58 @@ enum { · 22 unmodified lines
726 ETHTOOL_A_STATS_ETH_PHY_MAX = (__ETHTOOL_A_STATS_ETH_PHY_CNT - 1)727 ETHTOOL_A_STATS_ETH_PHY_MAX = (__ETHTOOL_A_STATS_ETH_PHY_CNT - 1)
727};728};
728 729
730enum {
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
729/* generic netlink info */782/* generic netlink info */
730#define ETHTOOL_GENL_NAME "ethtool"783#define ETHTOOL_GENL_NAME "ethtool"
731#define ETHTOOL_GENL_VERSION 1784#define ETHTOOL_GENL_VERSION 1