linux-headers (unknown)

(root)/
include/
linux/
ethtool_netlink.h
       1  /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
       2  /*
       3   * include/uapi/linux/ethtool_netlink.h - netlink interface for ethtool
       4   *
       5   * See Documentation/networking/ethtool-netlink.rst in kernel source tree for
       6   * doucumentation of the interface.
       7   */
       8  
       9  #ifndef _LINUX_ETHTOOL_NETLINK_H_
      10  #define _LINUX_ETHTOOL_NETLINK_H_
      11  
      12  #include <linux/ethtool.h>
      13  
      14  /* message types - userspace to kernel */
      15  enum {
      16  	ETHTOOL_MSG_USER_NONE,
      17  	ETHTOOL_MSG_STRSET_GET,
      18  	ETHTOOL_MSG_LINKINFO_GET,
      19  	ETHTOOL_MSG_LINKINFO_SET,
      20  	ETHTOOL_MSG_LINKMODES_GET,
      21  	ETHTOOL_MSG_LINKMODES_SET,
      22  	ETHTOOL_MSG_LINKSTATE_GET,
      23  	ETHTOOL_MSG_DEBUG_GET,
      24  	ETHTOOL_MSG_DEBUG_SET,
      25  	ETHTOOL_MSG_WOL_GET,
      26  	ETHTOOL_MSG_WOL_SET,
      27  	ETHTOOL_MSG_FEATURES_GET,
      28  	ETHTOOL_MSG_FEATURES_SET,
      29  	ETHTOOL_MSG_PRIVFLAGS_GET,
      30  	ETHTOOL_MSG_PRIVFLAGS_SET,
      31  	ETHTOOL_MSG_RINGS_GET,
      32  	ETHTOOL_MSG_RINGS_SET,
      33  	ETHTOOL_MSG_CHANNELS_GET,
      34  	ETHTOOL_MSG_CHANNELS_SET,
      35  	ETHTOOL_MSG_COALESCE_GET,
      36  	ETHTOOL_MSG_COALESCE_SET,
      37  	ETHTOOL_MSG_PAUSE_GET,
      38  	ETHTOOL_MSG_PAUSE_SET,
      39  	ETHTOOL_MSG_EEE_GET,
      40  	ETHTOOL_MSG_EEE_SET,
      41  	ETHTOOL_MSG_TSINFO_GET,
      42  	ETHTOOL_MSG_CABLE_TEST_ACT,
      43  	ETHTOOL_MSG_CABLE_TEST_TDR_ACT,
      44  	ETHTOOL_MSG_TUNNEL_INFO_GET,
      45  	ETHTOOL_MSG_FEC_GET,
      46  	ETHTOOL_MSG_FEC_SET,
      47  	ETHTOOL_MSG_MODULE_EEPROM_GET,
      48  	ETHTOOL_MSG_STATS_GET,
      49  	ETHTOOL_MSG_PHC_VCLOCKS_GET,
      50  	ETHTOOL_MSG_MODULE_GET,
      51  	ETHTOOL_MSG_MODULE_SET,
      52  	ETHTOOL_MSG_PSE_GET,
      53  	ETHTOOL_MSG_PSE_SET,
      54  	ETHTOOL_MSG_RSS_GET,
      55  	ETHTOOL_MSG_PLCA_GET_CFG,
      56  	ETHTOOL_MSG_PLCA_SET_CFG,
      57  	ETHTOOL_MSG_PLCA_GET_STATUS,
      58  	ETHTOOL_MSG_MM_GET,
      59  	ETHTOOL_MSG_MM_SET,
      60  
      61  	/* add new constants above here */
      62  	__ETHTOOL_MSG_USER_CNT,
      63  	ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
      64  };
      65  
      66  /* message types - kernel to userspace */
      67  enum {
      68  	ETHTOOL_MSG_KERNEL_NONE,
      69  	ETHTOOL_MSG_STRSET_GET_REPLY,
      70  	ETHTOOL_MSG_LINKINFO_GET_REPLY,
      71  	ETHTOOL_MSG_LINKINFO_NTF,
      72  	ETHTOOL_MSG_LINKMODES_GET_REPLY,
      73  	ETHTOOL_MSG_LINKMODES_NTF,
      74  	ETHTOOL_MSG_LINKSTATE_GET_REPLY,
      75  	ETHTOOL_MSG_DEBUG_GET_REPLY,
      76  	ETHTOOL_MSG_DEBUG_NTF,
      77  	ETHTOOL_MSG_WOL_GET_REPLY,
      78  	ETHTOOL_MSG_WOL_NTF,
      79  	ETHTOOL_MSG_FEATURES_GET_REPLY,
      80  	ETHTOOL_MSG_FEATURES_SET_REPLY,
      81  	ETHTOOL_MSG_FEATURES_NTF,
      82  	ETHTOOL_MSG_PRIVFLAGS_GET_REPLY,
      83  	ETHTOOL_MSG_PRIVFLAGS_NTF,
      84  	ETHTOOL_MSG_RINGS_GET_REPLY,
      85  	ETHTOOL_MSG_RINGS_NTF,
      86  	ETHTOOL_MSG_CHANNELS_GET_REPLY,
      87  	ETHTOOL_MSG_CHANNELS_NTF,
      88  	ETHTOOL_MSG_COALESCE_GET_REPLY,
      89  	ETHTOOL_MSG_COALESCE_NTF,
      90  	ETHTOOL_MSG_PAUSE_GET_REPLY,
      91  	ETHTOOL_MSG_PAUSE_NTF,
      92  	ETHTOOL_MSG_EEE_GET_REPLY,
      93  	ETHTOOL_MSG_EEE_NTF,
      94  	ETHTOOL_MSG_TSINFO_GET_REPLY,
      95  	ETHTOOL_MSG_CABLE_TEST_NTF,
      96  	ETHTOOL_MSG_CABLE_TEST_TDR_NTF,
      97  	ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY,
      98  	ETHTOOL_MSG_FEC_GET_REPLY,
      99  	ETHTOOL_MSG_FEC_NTF,
     100  	ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY,
     101  	ETHTOOL_MSG_STATS_GET_REPLY,
     102  	ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
     103  	ETHTOOL_MSG_MODULE_GET_REPLY,
     104  	ETHTOOL_MSG_MODULE_NTF,
     105  	ETHTOOL_MSG_PSE_GET_REPLY,
     106  	ETHTOOL_MSG_RSS_GET_REPLY,
     107  	ETHTOOL_MSG_PLCA_GET_CFG_REPLY,
     108  	ETHTOOL_MSG_PLCA_GET_STATUS_REPLY,
     109  	ETHTOOL_MSG_PLCA_NTF,
     110  	ETHTOOL_MSG_MM_GET_REPLY,
     111  	ETHTOOL_MSG_MM_NTF,
     112  
     113  	/* add new constants above here */
     114  	__ETHTOOL_MSG_KERNEL_CNT,
     115  	ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
     116  };
     117  
     118  /* request header */
     119  
     120  /* use compact bitsets in reply */
     121  #define ETHTOOL_FLAG_COMPACT_BITSETS	(1 << 0)
     122  /* provide optional reply for SET or ACT requests */
     123  #define ETHTOOL_FLAG_OMIT_REPLY	(1 << 1)
     124  /* request statistics, if supported by the driver */
     125  #define ETHTOOL_FLAG_STATS		(1 << 2)
     126  
     127  #define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | \
     128  			  ETHTOOL_FLAG_OMIT_REPLY | \
     129  			  ETHTOOL_FLAG_STATS)
     130  
     131  enum {
     132  	ETHTOOL_A_HEADER_UNSPEC,
     133  	ETHTOOL_A_HEADER_DEV_INDEX,		/* u32 */
     134  	ETHTOOL_A_HEADER_DEV_NAME,		/* string */
     135  	ETHTOOL_A_HEADER_FLAGS,			/* u32 - ETHTOOL_FLAG_* */
     136  
     137  	/* add new constants above here */
     138  	__ETHTOOL_A_HEADER_CNT,
     139  	ETHTOOL_A_HEADER_MAX = __ETHTOOL_A_HEADER_CNT - 1
     140  };
     141  
     142  /* bit sets */
     143  
     144  enum {
     145  	ETHTOOL_A_BITSET_BIT_UNSPEC,
     146  	ETHTOOL_A_BITSET_BIT_INDEX,		/* u32 */
     147  	ETHTOOL_A_BITSET_BIT_NAME,		/* string */
     148  	ETHTOOL_A_BITSET_BIT_VALUE,		/* flag */
     149  
     150  	/* add new constants above here */
     151  	__ETHTOOL_A_BITSET_BIT_CNT,
     152  	ETHTOOL_A_BITSET_BIT_MAX = __ETHTOOL_A_BITSET_BIT_CNT - 1
     153  };
     154  
     155  enum {
     156  	ETHTOOL_A_BITSET_BITS_UNSPEC,
     157  	ETHTOOL_A_BITSET_BITS_BIT,		/* nest - _A_BITSET_BIT_* */
     158  
     159  	/* add new constants above here */
     160  	__ETHTOOL_A_BITSET_BITS_CNT,
     161  	ETHTOOL_A_BITSET_BITS_MAX = __ETHTOOL_A_BITSET_BITS_CNT - 1
     162  };
     163  
     164  enum {
     165  	ETHTOOL_A_BITSET_UNSPEC,
     166  	ETHTOOL_A_BITSET_NOMASK,		/* flag */
     167  	ETHTOOL_A_BITSET_SIZE,			/* u32 */
     168  	ETHTOOL_A_BITSET_BITS,			/* nest - _A_BITSET_BITS_* */
     169  	ETHTOOL_A_BITSET_VALUE,			/* binary */
     170  	ETHTOOL_A_BITSET_MASK,			/* binary */
     171  
     172  	/* add new constants above here */
     173  	__ETHTOOL_A_BITSET_CNT,
     174  	ETHTOOL_A_BITSET_MAX = __ETHTOOL_A_BITSET_CNT - 1
     175  };
     176  
     177  /* string sets */
     178  
     179  enum {
     180  	ETHTOOL_A_STRING_UNSPEC,
     181  	ETHTOOL_A_STRING_INDEX,			/* u32 */
     182  	ETHTOOL_A_STRING_VALUE,			/* string */
     183  
     184  	/* add new constants above here */
     185  	__ETHTOOL_A_STRING_CNT,
     186  	ETHTOOL_A_STRING_MAX = __ETHTOOL_A_STRING_CNT - 1
     187  };
     188  
     189  enum {
     190  	ETHTOOL_A_STRINGS_UNSPEC,
     191  	ETHTOOL_A_STRINGS_STRING,		/* nest - _A_STRINGS_* */
     192  
     193  	/* add new constants above here */
     194  	__ETHTOOL_A_STRINGS_CNT,
     195  	ETHTOOL_A_STRINGS_MAX = __ETHTOOL_A_STRINGS_CNT - 1
     196  };
     197  
     198  enum {
     199  	ETHTOOL_A_STRINGSET_UNSPEC,
     200  	ETHTOOL_A_STRINGSET_ID,			/* u32 */
     201  	ETHTOOL_A_STRINGSET_COUNT,		/* u32 */
     202  	ETHTOOL_A_STRINGSET_STRINGS,		/* nest - _A_STRINGS_* */
     203  
     204  	/* add new constants above here */
     205  	__ETHTOOL_A_STRINGSET_CNT,
     206  	ETHTOOL_A_STRINGSET_MAX = __ETHTOOL_A_STRINGSET_CNT - 1
     207  };
     208  
     209  enum {
     210  	ETHTOOL_A_STRINGSETS_UNSPEC,
     211  	ETHTOOL_A_STRINGSETS_STRINGSET,		/* nest - _A_STRINGSET_* */
     212  
     213  	/* add new constants above here */
     214  	__ETHTOOL_A_STRINGSETS_CNT,
     215  	ETHTOOL_A_STRINGSETS_MAX = __ETHTOOL_A_STRINGSETS_CNT - 1
     216  };
     217  
     218  /* STRSET */
     219  
     220  enum {
     221  	ETHTOOL_A_STRSET_UNSPEC,
     222  	ETHTOOL_A_STRSET_HEADER,		/* nest - _A_HEADER_* */
     223  	ETHTOOL_A_STRSET_STRINGSETS,		/* nest - _A_STRINGSETS_* */
     224  	ETHTOOL_A_STRSET_COUNTS_ONLY,		/* flag */
     225  
     226  	/* add new constants above here */
     227  	__ETHTOOL_A_STRSET_CNT,
     228  	ETHTOOL_A_STRSET_MAX = __ETHTOOL_A_STRSET_CNT - 1
     229  };
     230  
     231  /* LINKINFO */
     232  
     233  enum {
     234  	ETHTOOL_A_LINKINFO_UNSPEC,
     235  	ETHTOOL_A_LINKINFO_HEADER,		/* nest - _A_HEADER_* */
     236  	ETHTOOL_A_LINKINFO_PORT,		/* u8 */
     237  	ETHTOOL_A_LINKINFO_PHYADDR,		/* u8 */
     238  	ETHTOOL_A_LINKINFO_TP_MDIX,		/* u8 */
     239  	ETHTOOL_A_LINKINFO_TP_MDIX_CTRL,	/* u8 */
     240  	ETHTOOL_A_LINKINFO_TRANSCEIVER,		/* u8 */
     241  
     242  	/* add new constants above here */
     243  	__ETHTOOL_A_LINKINFO_CNT,
     244  	ETHTOOL_A_LINKINFO_MAX = __ETHTOOL_A_LINKINFO_CNT - 1
     245  };
     246  
     247  /* LINKMODES */
     248  
     249  enum {
     250  	ETHTOOL_A_LINKMODES_UNSPEC,
     251  	ETHTOOL_A_LINKMODES_HEADER,		/* nest - _A_HEADER_* */
     252  	ETHTOOL_A_LINKMODES_AUTONEG,		/* u8 */
     253  	ETHTOOL_A_LINKMODES_OURS,		/* bitset */
     254  	ETHTOOL_A_LINKMODES_PEER,		/* bitset */
     255  	ETHTOOL_A_LINKMODES_SPEED,		/* u32 */
     256  	ETHTOOL_A_LINKMODES_DUPLEX,		/* u8 */
     257  	ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,	/* u8 */
     258  	ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,	/* u8 */
     259  	ETHTOOL_A_LINKMODES_LANES,		/* u32 */
     260  	ETHTOOL_A_LINKMODES_RATE_MATCHING,	/* u8 */
     261  
     262  	/* add new constants above here */
     263  	__ETHTOOL_A_LINKMODES_CNT,
     264  	ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
     265  };
     266  
     267  /* LINKSTATE */
     268  
     269  enum {
     270  	ETHTOOL_A_LINKSTATE_UNSPEC,
     271  	ETHTOOL_A_LINKSTATE_HEADER,		/* nest - _A_HEADER_* */
     272  	ETHTOOL_A_LINKSTATE_LINK,		/* u8 */
     273  	ETHTOOL_A_LINKSTATE_SQI,		/* u32 */
     274  	ETHTOOL_A_LINKSTATE_SQI_MAX,		/* u32 */
     275  	ETHTOOL_A_LINKSTATE_EXT_STATE,		/* u8 */
     276  	ETHTOOL_A_LINKSTATE_EXT_SUBSTATE,	/* u8 */
     277  	ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT,	/* u32 */
     278  
     279  	/* add new constants above here */
     280  	__ETHTOOL_A_LINKSTATE_CNT,
     281  	ETHTOOL_A_LINKSTATE_MAX = __ETHTOOL_A_LINKSTATE_CNT - 1
     282  };
     283  
     284  /* DEBUG */
     285  
     286  enum {
     287  	ETHTOOL_A_DEBUG_UNSPEC,
     288  	ETHTOOL_A_DEBUG_HEADER,			/* nest - _A_HEADER_* */
     289  	ETHTOOL_A_DEBUG_MSGMASK,		/* bitset */
     290  
     291  	/* add new constants above here */
     292  	__ETHTOOL_A_DEBUG_CNT,
     293  	ETHTOOL_A_DEBUG_MAX = __ETHTOOL_A_DEBUG_CNT - 1
     294  };
     295  
     296  /* WOL */
     297  
     298  enum {
     299  	ETHTOOL_A_WOL_UNSPEC,
     300  	ETHTOOL_A_WOL_HEADER,			/* nest - _A_HEADER_* */
     301  	ETHTOOL_A_WOL_MODES,			/* bitset */
     302  	ETHTOOL_A_WOL_SOPASS,			/* binary */
     303  
     304  	/* add new constants above here */
     305  	__ETHTOOL_A_WOL_CNT,
     306  	ETHTOOL_A_WOL_MAX = __ETHTOOL_A_WOL_CNT - 1
     307  };
     308  
     309  /* FEATURES */
     310  
     311  enum {
     312  	ETHTOOL_A_FEATURES_UNSPEC,
     313  	ETHTOOL_A_FEATURES_HEADER,			/* nest - _A_HEADER_* */
     314  	ETHTOOL_A_FEATURES_HW,				/* bitset */
     315  	ETHTOOL_A_FEATURES_WANTED,			/* bitset */
     316  	ETHTOOL_A_FEATURES_ACTIVE,			/* bitset */
     317  	ETHTOOL_A_FEATURES_NOCHANGE,			/* bitset */
     318  
     319  	/* add new constants above here */
     320  	__ETHTOOL_A_FEATURES_CNT,
     321  	ETHTOOL_A_FEATURES_MAX = __ETHTOOL_A_FEATURES_CNT - 1
     322  };
     323  
     324  /* PRIVFLAGS */
     325  
     326  enum {
     327  	ETHTOOL_A_PRIVFLAGS_UNSPEC,
     328  	ETHTOOL_A_PRIVFLAGS_HEADER,			/* nest - _A_HEADER_* */
     329  	ETHTOOL_A_PRIVFLAGS_FLAGS,			/* bitset */
     330  
     331  	/* add new constants above here */
     332  	__ETHTOOL_A_PRIVFLAGS_CNT,
     333  	ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
     334  };
     335  
     336  /* RINGS */
     337  
     338  enum {
     339  	ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
     340  	ETHTOOL_TCP_DATA_SPLIT_DISABLED,
     341  	ETHTOOL_TCP_DATA_SPLIT_ENABLED,
     342  };
     343  
     344  enum {
     345  	ETHTOOL_A_RINGS_UNSPEC,
     346  	ETHTOOL_A_RINGS_HEADER,				/* nest - _A_HEADER_* */
     347  	ETHTOOL_A_RINGS_RX_MAX,				/* u32 */
     348  	ETHTOOL_A_RINGS_RX_MINI_MAX,			/* u32 */
     349  	ETHTOOL_A_RINGS_RX_JUMBO_MAX,			/* u32 */
     350  	ETHTOOL_A_RINGS_TX_MAX,				/* u32 */
     351  	ETHTOOL_A_RINGS_RX,				/* u32 */
     352  	ETHTOOL_A_RINGS_RX_MINI,			/* u32 */
     353  	ETHTOOL_A_RINGS_RX_JUMBO,			/* u32 */
     354  	ETHTOOL_A_RINGS_TX,				/* u32 */
     355  	ETHTOOL_A_RINGS_RX_BUF_LEN,                     /* u32 */
     356  	ETHTOOL_A_RINGS_TCP_DATA_SPLIT,			/* u8 */
     357  	ETHTOOL_A_RINGS_CQE_SIZE,			/* u32 */
     358  	ETHTOOL_A_RINGS_TX_PUSH,			/* u8 */
     359  	ETHTOOL_A_RINGS_RX_PUSH,			/* u8 */
     360  	ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN,		/* u32 */
     361  	ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX,		/* u32 */
     362  
     363  	/* add new constants above here */
     364  	__ETHTOOL_A_RINGS_CNT,
     365  	ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
     366  };
     367  
     368  /* CHANNELS */
     369  
     370  enum {
     371  	ETHTOOL_A_CHANNELS_UNSPEC,
     372  	ETHTOOL_A_CHANNELS_HEADER,			/* nest - _A_HEADER_* */
     373  	ETHTOOL_A_CHANNELS_RX_MAX,			/* u32 */
     374  	ETHTOOL_A_CHANNELS_TX_MAX,			/* u32 */
     375  	ETHTOOL_A_CHANNELS_OTHER_MAX,			/* u32 */
     376  	ETHTOOL_A_CHANNELS_COMBINED_MAX,		/* u32 */
     377  	ETHTOOL_A_CHANNELS_RX_COUNT,			/* u32 */
     378  	ETHTOOL_A_CHANNELS_TX_COUNT,			/* u32 */
     379  	ETHTOOL_A_CHANNELS_OTHER_COUNT,			/* u32 */
     380  	ETHTOOL_A_CHANNELS_COMBINED_COUNT,		/* u32 */
     381  
     382  	/* add new constants above here */
     383  	__ETHTOOL_A_CHANNELS_CNT,
     384  	ETHTOOL_A_CHANNELS_MAX = (__ETHTOOL_A_CHANNELS_CNT - 1)
     385  };
     386  
     387  /* COALESCE */
     388  
     389  enum {
     390  	ETHTOOL_A_COALESCE_UNSPEC,
     391  	ETHTOOL_A_COALESCE_HEADER,			/* nest - _A_HEADER_* */
     392  	ETHTOOL_A_COALESCE_RX_USECS,			/* u32 */
     393  	ETHTOOL_A_COALESCE_RX_MAX_FRAMES,		/* u32 */
     394  	ETHTOOL_A_COALESCE_RX_USECS_IRQ,		/* u32 */
     395  	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ,		/* u32 */
     396  	ETHTOOL_A_COALESCE_TX_USECS,			/* u32 */
     397  	ETHTOOL_A_COALESCE_TX_MAX_FRAMES,		/* u32 */
     398  	ETHTOOL_A_COALESCE_TX_USECS_IRQ,		/* u32 */
     399  	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ,		/* u32 */
     400  	ETHTOOL_A_COALESCE_STATS_BLOCK_USECS,		/* u32 */
     401  	ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX,		/* u8 */
     402  	ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX,		/* u8 */
     403  	ETHTOOL_A_COALESCE_PKT_RATE_LOW,		/* u32 */
     404  	ETHTOOL_A_COALESCE_RX_USECS_LOW,		/* u32 */
     405  	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW,		/* u32 */
     406  	ETHTOOL_A_COALESCE_TX_USECS_LOW,		/* u32 */
     407  	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW,		/* u32 */
     408  	ETHTOOL_A_COALESCE_PKT_RATE_HIGH,		/* u32 */
     409  	ETHTOOL_A_COALESCE_RX_USECS_HIGH,		/* u32 */
     410  	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH,		/* u32 */
     411  	ETHTOOL_A_COALESCE_TX_USECS_HIGH,		/* u32 */
     412  	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH,		/* u32 */
     413  	ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL,	/* u32 */
     414  	ETHTOOL_A_COALESCE_USE_CQE_MODE_TX,		/* u8 */
     415  	ETHTOOL_A_COALESCE_USE_CQE_MODE_RX,		/* u8 */
     416  	ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES,		/* u32 */
     417  	ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES,		/* u32 */
     418  	ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS,		/* u32 */
     419  
     420  	/* add new constants above here */
     421  	__ETHTOOL_A_COALESCE_CNT,
     422  	ETHTOOL_A_COALESCE_MAX = (__ETHTOOL_A_COALESCE_CNT - 1)
     423  };
     424  
     425  /* PAUSE */
     426  
     427  enum {
     428  	ETHTOOL_A_PAUSE_UNSPEC,
     429  	ETHTOOL_A_PAUSE_HEADER,				/* nest - _A_HEADER_* */
     430  	ETHTOOL_A_PAUSE_AUTONEG,			/* u8 */
     431  	ETHTOOL_A_PAUSE_RX,				/* u8 */
     432  	ETHTOOL_A_PAUSE_TX,				/* u8 */
     433  	ETHTOOL_A_PAUSE_STATS,				/* nest - _PAUSE_STAT_* */
     434  	ETHTOOL_A_PAUSE_STATS_SRC,			/* u32 */
     435  
     436  	/* add new constants above here */
     437  	__ETHTOOL_A_PAUSE_CNT,
     438  	ETHTOOL_A_PAUSE_MAX = (__ETHTOOL_A_PAUSE_CNT - 1)
     439  };
     440  
     441  enum {
     442  	ETHTOOL_A_PAUSE_STAT_UNSPEC,
     443  	ETHTOOL_A_PAUSE_STAT_PAD,
     444  
     445  	ETHTOOL_A_PAUSE_STAT_TX_FRAMES,
     446  	ETHTOOL_A_PAUSE_STAT_RX_FRAMES,
     447  
     448  	/* add new constants above here
     449  	 * adjust ETHTOOL_PAUSE_STAT_CNT if adding non-stats!
     450  	 */
     451  	__ETHTOOL_A_PAUSE_STAT_CNT,
     452  	ETHTOOL_A_PAUSE_STAT_MAX = (__ETHTOOL_A_PAUSE_STAT_CNT - 1)
     453  };
     454  
     455  /* EEE */
     456  
     457  enum {
     458  	ETHTOOL_A_EEE_UNSPEC,
     459  	ETHTOOL_A_EEE_HEADER,				/* nest - _A_HEADER_* */
     460  	ETHTOOL_A_EEE_MODES_OURS,			/* bitset */
     461  	ETHTOOL_A_EEE_MODES_PEER,			/* bitset */
     462  	ETHTOOL_A_EEE_ACTIVE,				/* u8 */
     463  	ETHTOOL_A_EEE_ENABLED,				/* u8 */
     464  	ETHTOOL_A_EEE_TX_LPI_ENABLED,			/* u8 */
     465  	ETHTOOL_A_EEE_TX_LPI_TIMER,			/* u32 */
     466  
     467  	/* add new constants above here */
     468  	__ETHTOOL_A_EEE_CNT,
     469  	ETHTOOL_A_EEE_MAX = (__ETHTOOL_A_EEE_CNT - 1)
     470  };
     471  
     472  /* TSINFO */
     473  
     474  enum {
     475  	ETHTOOL_A_TSINFO_UNSPEC,
     476  	ETHTOOL_A_TSINFO_HEADER,			/* nest - _A_HEADER_* */
     477  	ETHTOOL_A_TSINFO_TIMESTAMPING,			/* bitset */
     478  	ETHTOOL_A_TSINFO_TX_TYPES,			/* bitset */
     479  	ETHTOOL_A_TSINFO_RX_FILTERS,			/* bitset */
     480  	ETHTOOL_A_TSINFO_PHC_INDEX,			/* u32 */
     481  
     482  	/* add new constants above here */
     483  	__ETHTOOL_A_TSINFO_CNT,
     484  	ETHTOOL_A_TSINFO_MAX = (__ETHTOOL_A_TSINFO_CNT - 1)
     485  };
     486  
     487  /* PHC VCLOCKS */
     488  
     489  enum {
     490  	ETHTOOL_A_PHC_VCLOCKS_UNSPEC,
     491  	ETHTOOL_A_PHC_VCLOCKS_HEADER,			/* nest - _A_HEADER_* */
     492  	ETHTOOL_A_PHC_VCLOCKS_NUM,			/* u32 */
     493  	ETHTOOL_A_PHC_VCLOCKS_INDEX,			/* array, s32 */
     494  
     495  	/* add new constants above here */
     496  	__ETHTOOL_A_PHC_VCLOCKS_CNT,
     497  	ETHTOOL_A_PHC_VCLOCKS_MAX = (__ETHTOOL_A_PHC_VCLOCKS_CNT - 1)
     498  };
     499  
     500  /* CABLE TEST */
     501  
     502  enum {
     503  	ETHTOOL_A_CABLE_TEST_UNSPEC,
     504  	ETHTOOL_A_CABLE_TEST_HEADER,		/* nest - _A_HEADER_* */
     505  
     506  	/* add new constants above here */
     507  	__ETHTOOL_A_CABLE_TEST_CNT,
     508  	ETHTOOL_A_CABLE_TEST_MAX = __ETHTOOL_A_CABLE_TEST_CNT - 1
     509  };
     510  
     511  /* CABLE TEST NOTIFY */
     512  enum {
     513  	ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC,
     514  	ETHTOOL_A_CABLE_RESULT_CODE_OK,
     515  	ETHTOOL_A_CABLE_RESULT_CODE_OPEN,
     516  	ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT,
     517  	ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT,
     518  };
     519  
     520  enum {
     521  	ETHTOOL_A_CABLE_PAIR_A,
     522  	ETHTOOL_A_CABLE_PAIR_B,
     523  	ETHTOOL_A_CABLE_PAIR_C,
     524  	ETHTOOL_A_CABLE_PAIR_D,
     525  };
     526  
     527  enum {
     528  	ETHTOOL_A_CABLE_RESULT_UNSPEC,
     529  	ETHTOOL_A_CABLE_RESULT_PAIR,		/* u8 ETHTOOL_A_CABLE_PAIR_ */
     530  	ETHTOOL_A_CABLE_RESULT_CODE,		/* u8 ETHTOOL_A_CABLE_RESULT_CODE_ */
     531  
     532  	__ETHTOOL_A_CABLE_RESULT_CNT,
     533  	ETHTOOL_A_CABLE_RESULT_MAX = (__ETHTOOL_A_CABLE_RESULT_CNT - 1)
     534  };
     535  
     536  enum {
     537  	ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC,
     538  	ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR,	/* u8 ETHTOOL_A_CABLE_PAIR_ */
     539  	ETHTOOL_A_CABLE_FAULT_LENGTH_CM,	/* u32 */
     540  
     541  	__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT,
     542  	ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = (__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT - 1)
     543  };
     544  
     545  enum {
     546  	ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC,
     547  	ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED,
     548  	ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED
     549  };
     550  
     551  enum {
     552  	ETHTOOL_A_CABLE_NEST_UNSPEC,
     553  	ETHTOOL_A_CABLE_NEST_RESULT,		/* nest - ETHTOOL_A_CABLE_RESULT_ */
     554  	ETHTOOL_A_CABLE_NEST_FAULT_LENGTH,	/* nest - ETHTOOL_A_CABLE_FAULT_LENGTH_ */
     555  	__ETHTOOL_A_CABLE_NEST_CNT,
     556  	ETHTOOL_A_CABLE_NEST_MAX = (__ETHTOOL_A_CABLE_NEST_CNT - 1)
     557  };
     558  
     559  enum {
     560  	ETHTOOL_A_CABLE_TEST_NTF_UNSPEC,
     561  	ETHTOOL_A_CABLE_TEST_NTF_HEADER,	/* nest - ETHTOOL_A_HEADER_* */
     562  	ETHTOOL_A_CABLE_TEST_NTF_STATUS,	/* u8 - _STARTED/_COMPLETE */
     563  	ETHTOOL_A_CABLE_TEST_NTF_NEST,		/* nest - of results: */
     564  
     565  	__ETHTOOL_A_CABLE_TEST_NTF_CNT,
     566  	ETHTOOL_A_CABLE_TEST_NTF_MAX = (__ETHTOOL_A_CABLE_TEST_NTF_CNT - 1)
     567  };
     568  
     569  /* CABLE TEST TDR */
     570  
     571  enum {
     572  	ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC,
     573  	ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST,		/* u32 */
     574  	ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST,		/* u32 */
     575  	ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP,		/* u32 */
     576  	ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR,		/* u8 */
     577  
     578  	/* add new constants above here */
     579  	__ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT,
     580  	ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT - 1
     581  };
     582  
     583  enum {
     584  	ETHTOOL_A_CABLE_TEST_TDR_UNSPEC,
     585  	ETHTOOL_A_CABLE_TEST_TDR_HEADER,	/* nest - _A_HEADER_* */
     586  	ETHTOOL_A_CABLE_TEST_TDR_CFG,		/* nest - *_TDR_CFG_* */
     587  
     588  	/* add new constants above here */
     589  	__ETHTOOL_A_CABLE_TEST_TDR_CNT,
     590  	ETHTOOL_A_CABLE_TEST_TDR_MAX = __ETHTOOL_A_CABLE_TEST_TDR_CNT - 1
     591  };
     592  
     593  /* CABLE TEST TDR NOTIFY */
     594  
     595  enum {
     596  	ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC,
     597  	ETHTOOL_A_CABLE_AMPLITUDE_PAIR,         /* u8 */
     598  	ETHTOOL_A_CABLE_AMPLITUDE_mV,           /* s16 */
     599  
     600  	__ETHTOOL_A_CABLE_AMPLITUDE_CNT,
     601  	ETHTOOL_A_CABLE_AMPLITUDE_MAX = (__ETHTOOL_A_CABLE_AMPLITUDE_CNT - 1)
     602  };
     603  
     604  enum {
     605  	ETHTOOL_A_CABLE_PULSE_UNSPEC,
     606  	ETHTOOL_A_CABLE_PULSE_mV,		/* s16 */
     607  
     608  	__ETHTOOL_A_CABLE_PULSE_CNT,
     609  	ETHTOOL_A_CABLE_PULSE_MAX = (__ETHTOOL_A_CABLE_PULSE_CNT - 1)
     610  };
     611  
     612  enum {
     613  	ETHTOOL_A_CABLE_STEP_UNSPEC,
     614  	ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE,	/* u32 */
     615  	ETHTOOL_A_CABLE_STEP_LAST_DISTANCE,	/* u32 */
     616  	ETHTOOL_A_CABLE_STEP_STEP_DISTANCE,	/* u32 */
     617  
     618  	__ETHTOOL_A_CABLE_STEP_CNT,
     619  	ETHTOOL_A_CABLE_STEP_MAX = (__ETHTOOL_A_CABLE_STEP_CNT - 1)
     620  };
     621  
     622  enum {
     623  	ETHTOOL_A_CABLE_TDR_NEST_UNSPEC,
     624  	ETHTOOL_A_CABLE_TDR_NEST_STEP,		/* nest - ETHTTOOL_A_CABLE_STEP */
     625  	ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE,	/* nest - ETHTOOL_A_CABLE_AMPLITUDE */
     626  	ETHTOOL_A_CABLE_TDR_NEST_PULSE,		/* nest - ETHTOOL_A_CABLE_PULSE */
     627  
     628  	__ETHTOOL_A_CABLE_TDR_NEST_CNT,
     629  	ETHTOOL_A_CABLE_TDR_NEST_MAX = (__ETHTOOL_A_CABLE_TDR_NEST_CNT - 1)
     630  };
     631  
     632  enum {
     633  	ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC,
     634  	ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER,	/* nest - ETHTOOL_A_HEADER_* */
     635  	ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS,	/* u8 - _STARTED/_COMPLETE */
     636  	ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST,	/* nest - of results: */
     637  
     638  	/* add new constants above here */
     639  	__ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT,
     640  	ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = __ETHTOOL_A_CABLE_TEST_TDR_NTF_CNT - 1
     641  };
     642  
     643  /* TUNNEL INFO */
     644  
     645  enum {
     646  	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN,
     647  	ETHTOOL_UDP_TUNNEL_TYPE_GENEVE,
     648  	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE,
     649  
     650  	__ETHTOOL_UDP_TUNNEL_TYPE_CNT
     651  };
     652  
     653  enum {
     654  	ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC,
     655  
     656  	ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT,		/* be16 */
     657  	ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE,		/* u32 */
     658  
     659  	/* add new constants above here */
     660  	__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT,
     661  	ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = (__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT - 1)
     662  };
     663  
     664  enum {
     665  	ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC,
     666  
     667  	ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE,		/* u32 */
     668  	ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES,		/* bitset */
     669  	ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY,		/* nest - _UDP_ENTRY_* */
     670  
     671  	/* add new constants above here */
     672  	__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT,
     673  	ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = (__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT - 1)
     674  };
     675  
     676  enum {
     677  	ETHTOOL_A_TUNNEL_UDP_UNSPEC,
     678  
     679  	ETHTOOL_A_TUNNEL_UDP_TABLE,			/* nest - _UDP_TABLE_* */
     680  
     681  	/* add new constants above here */
     682  	__ETHTOOL_A_TUNNEL_UDP_CNT,
     683  	ETHTOOL_A_TUNNEL_UDP_MAX = (__ETHTOOL_A_TUNNEL_UDP_CNT - 1)
     684  };
     685  
     686  enum {
     687  	ETHTOOL_A_TUNNEL_INFO_UNSPEC,
     688  	ETHTOOL_A_TUNNEL_INFO_HEADER,			/* nest - _A_HEADER_* */
     689  
     690  	ETHTOOL_A_TUNNEL_INFO_UDP_PORTS,		/* nest - _UDP_TABLE */
     691  
     692  	/* add new constants above here */
     693  	__ETHTOOL_A_TUNNEL_INFO_CNT,
     694  	ETHTOOL_A_TUNNEL_INFO_MAX = (__ETHTOOL_A_TUNNEL_INFO_CNT - 1)
     695  };
     696  
     697  /* FEC */
     698  
     699  enum {
     700  	ETHTOOL_A_FEC_UNSPEC,
     701  	ETHTOOL_A_FEC_HEADER,				/* nest - _A_HEADER_* */
     702  	ETHTOOL_A_FEC_MODES,				/* bitset */
     703  	ETHTOOL_A_FEC_AUTO,				/* u8 */
     704  	ETHTOOL_A_FEC_ACTIVE,				/* u32 */
     705  	ETHTOOL_A_FEC_STATS,				/* nest - _A_FEC_STAT */
     706  
     707  	__ETHTOOL_A_FEC_CNT,
     708  	ETHTOOL_A_FEC_MAX = (__ETHTOOL_A_FEC_CNT - 1)
     709  };
     710  
     711  enum {
     712  	ETHTOOL_A_FEC_STAT_UNSPEC,
     713  	ETHTOOL_A_FEC_STAT_PAD,
     714  
     715  	ETHTOOL_A_FEC_STAT_CORRECTED,			/* array, u64 */
     716  	ETHTOOL_A_FEC_STAT_UNCORR,			/* array, u64 */
     717  	ETHTOOL_A_FEC_STAT_CORR_BITS,			/* array, u64 */
     718  
     719  	/* add new constants above here */
     720  	__ETHTOOL_A_FEC_STAT_CNT,
     721  	ETHTOOL_A_FEC_STAT_MAX = (__ETHTOOL_A_FEC_STAT_CNT - 1)
     722  };
     723  
     724  /* MODULE EEPROM */
     725  
     726  enum {
     727  	ETHTOOL_A_MODULE_EEPROM_UNSPEC,
     728  	ETHTOOL_A_MODULE_EEPROM_HEADER,			/* nest - _A_HEADER_* */
     729  
     730  	ETHTOOL_A_MODULE_EEPROM_OFFSET,			/* u32 */
     731  	ETHTOOL_A_MODULE_EEPROM_LENGTH,			/* u32 */
     732  	ETHTOOL_A_MODULE_EEPROM_PAGE,			/* u8 */
     733  	ETHTOOL_A_MODULE_EEPROM_BANK,			/* u8 */
     734  	ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS,		/* u8 */
     735  	ETHTOOL_A_MODULE_EEPROM_DATA,			/* binary */
     736  
     737  	__ETHTOOL_A_MODULE_EEPROM_CNT,
     738  	ETHTOOL_A_MODULE_EEPROM_MAX = (__ETHTOOL_A_MODULE_EEPROM_CNT - 1)
     739  };
     740  
     741  /* STATS */
     742  
     743  enum {
     744  	ETHTOOL_A_STATS_UNSPEC,
     745  	ETHTOOL_A_STATS_PAD,
     746  	ETHTOOL_A_STATS_HEADER,			/* nest - _A_HEADER_* */
     747  	ETHTOOL_A_STATS_GROUPS,			/* bitset */
     748  
     749  	ETHTOOL_A_STATS_GRP,			/* nest - _A_STATS_GRP_* */
     750  
     751  	ETHTOOL_A_STATS_SRC,			/* u32 */
     752  
     753  	/* add new constants above here */
     754  	__ETHTOOL_A_STATS_CNT,
     755  	ETHTOOL_A_STATS_MAX = (__ETHTOOL_A_STATS_CNT - 1)
     756  };
     757  
     758  enum {
     759  	ETHTOOL_STATS_ETH_PHY,
     760  	ETHTOOL_STATS_ETH_MAC,
     761  	ETHTOOL_STATS_ETH_CTRL,
     762  	ETHTOOL_STATS_RMON,
     763  
     764  	/* add new constants above here */
     765  	__ETHTOOL_STATS_CNT
     766  };
     767  
     768  enum {
     769  	ETHTOOL_A_STATS_GRP_UNSPEC,
     770  	ETHTOOL_A_STATS_GRP_PAD,
     771  
     772  	ETHTOOL_A_STATS_GRP_ID,			/* u32 */
     773  	ETHTOOL_A_STATS_GRP_SS_ID,		/* u32 */
     774  
     775  	ETHTOOL_A_STATS_GRP_STAT,		/* nest */
     776  
     777  	ETHTOOL_A_STATS_GRP_HIST_RX,		/* nest */
     778  	ETHTOOL_A_STATS_GRP_HIST_TX,		/* nest */
     779  
     780  	ETHTOOL_A_STATS_GRP_HIST_BKT_LOW,	/* u32 */
     781  	ETHTOOL_A_STATS_GRP_HIST_BKT_HI,	/* u32 */
     782  	ETHTOOL_A_STATS_GRP_HIST_VAL,		/* u64 */
     783  
     784  	/* add new constants above here */
     785  	__ETHTOOL_A_STATS_GRP_CNT,
     786  	ETHTOOL_A_STATS_GRP_MAX = (__ETHTOOL_A_STATS_GRP_CNT - 1)
     787  };
     788  
     789  enum {
     790  	/* 30.3.2.1.5 aSymbolErrorDuringCarrier */
     791  	ETHTOOL_A_STATS_ETH_PHY_5_SYM_ERR,
     792  
     793  	/* add new constants above here */
     794  	__ETHTOOL_A_STATS_ETH_PHY_CNT,
     795  	ETHTOOL_A_STATS_ETH_PHY_MAX = (__ETHTOOL_A_STATS_ETH_PHY_CNT - 1)
     796  };
     797  
     798  enum {
     799  	/* 30.3.1.1.2 aFramesTransmittedOK */
     800  	ETHTOOL_A_STATS_ETH_MAC_2_TX_PKT,
     801  	/* 30.3.1.1.3 aSingleCollisionFrames */
     802  	ETHTOOL_A_STATS_ETH_MAC_3_SINGLE_COL,
     803  	/* 30.3.1.1.4 aMultipleCollisionFrames */
     804  	ETHTOOL_A_STATS_ETH_MAC_4_MULTI_COL,
     805  	/* 30.3.1.1.5 aFramesReceivedOK */
     806  	ETHTOOL_A_STATS_ETH_MAC_5_RX_PKT,
     807  	/* 30.3.1.1.6 aFrameCheckSequenceErrors */
     808  	ETHTOOL_A_STATS_ETH_MAC_6_FCS_ERR,
     809  	/* 30.3.1.1.7 aAlignmentErrors */
     810  	ETHTOOL_A_STATS_ETH_MAC_7_ALIGN_ERR,
     811  	/* 30.3.1.1.8 aOctetsTransmittedOK */
     812  	ETHTOOL_A_STATS_ETH_MAC_8_TX_BYTES,
     813  	/* 30.3.1.1.9 aFramesWithDeferredXmissions */
     814  	ETHTOOL_A_STATS_ETH_MAC_9_TX_DEFER,
     815  	/* 30.3.1.1.10 aLateCollisions */
     816  	ETHTOOL_A_STATS_ETH_MAC_10_LATE_COL,
     817  	/* 30.3.1.1.11 aFramesAbortedDueToXSColls */
     818  	ETHTOOL_A_STATS_ETH_MAC_11_XS_COL,
     819  	/* 30.3.1.1.12 aFramesLostDueToIntMACXmitError */
     820  	ETHTOOL_A_STATS_ETH_MAC_12_TX_INT_ERR,
     821  	/* 30.3.1.1.13 aCarrierSenseErrors */
     822  	ETHTOOL_A_STATS_ETH_MAC_13_CS_ERR,
     823  	/* 30.3.1.1.14 aOctetsReceivedOK */
     824  	ETHTOOL_A_STATS_ETH_MAC_14_RX_BYTES,
     825  	/* 30.3.1.1.15 aFramesLostDueToIntMACRcvError */
     826  	ETHTOOL_A_STATS_ETH_MAC_15_RX_INT_ERR,
     827  
     828  	/* 30.3.1.1.18 aMulticastFramesXmittedOK */
     829  	ETHTOOL_A_STATS_ETH_MAC_18_TX_MCAST,
     830  	/* 30.3.1.1.19 aBroadcastFramesXmittedOK */
     831  	ETHTOOL_A_STATS_ETH_MAC_19_TX_BCAST,
     832  	/* 30.3.1.1.20 aFramesWithExcessiveDeferral */
     833  	ETHTOOL_A_STATS_ETH_MAC_20_XS_DEFER,
     834  	/* 30.3.1.1.21 aMulticastFramesReceivedOK */
     835  	ETHTOOL_A_STATS_ETH_MAC_21_RX_MCAST,
     836  	/* 30.3.1.1.22 aBroadcastFramesReceivedOK */
     837  	ETHTOOL_A_STATS_ETH_MAC_22_RX_BCAST,
     838  	/* 30.3.1.1.23 aInRangeLengthErrors */
     839  	ETHTOOL_A_STATS_ETH_MAC_23_IR_LEN_ERR,
     840  	/* 30.3.1.1.24 aOutOfRangeLengthField */
     841  	ETHTOOL_A_STATS_ETH_MAC_24_OOR_LEN,
     842  	/* 30.3.1.1.25 aFrameTooLongErrors */
     843  	ETHTOOL_A_STATS_ETH_MAC_25_TOO_LONG_ERR,
     844  
     845  	/* add new constants above here */
     846  	__ETHTOOL_A_STATS_ETH_MAC_CNT,
     847  	ETHTOOL_A_STATS_ETH_MAC_MAX = (__ETHTOOL_A_STATS_ETH_MAC_CNT - 1)
     848  };
     849  
     850  enum {
     851  	/* 30.3.3.3 aMACControlFramesTransmitted */
     852  	ETHTOOL_A_STATS_ETH_CTRL_3_TX,
     853  	/* 30.3.3.4 aMACControlFramesReceived */
     854  	ETHTOOL_A_STATS_ETH_CTRL_4_RX,
     855  	/* 30.3.3.5 aUnsupportedOpcodesReceived */
     856  	ETHTOOL_A_STATS_ETH_CTRL_5_RX_UNSUP,
     857  
     858  	/* add new constants above here */
     859  	__ETHTOOL_A_STATS_ETH_CTRL_CNT,
     860  	ETHTOOL_A_STATS_ETH_CTRL_MAX = (__ETHTOOL_A_STATS_ETH_CTRL_CNT - 1)
     861  };
     862  
     863  enum {
     864  	/* etherStatsUndersizePkts */
     865  	ETHTOOL_A_STATS_RMON_UNDERSIZE,
     866  	/* etherStatsOversizePkts */
     867  	ETHTOOL_A_STATS_RMON_OVERSIZE,
     868  	/* etherStatsFragments */
     869  	ETHTOOL_A_STATS_RMON_FRAG,
     870  	/* etherStatsJabbers */
     871  	ETHTOOL_A_STATS_RMON_JABBER,
     872  
     873  	/* add new constants above here */
     874  	__ETHTOOL_A_STATS_RMON_CNT,
     875  	ETHTOOL_A_STATS_RMON_MAX = (__ETHTOOL_A_STATS_RMON_CNT - 1)
     876  };
     877  
     878  /* MODULE */
     879  
     880  enum {
     881  	ETHTOOL_A_MODULE_UNSPEC,
     882  	ETHTOOL_A_MODULE_HEADER,		/* nest - _A_HEADER_* */
     883  	ETHTOOL_A_MODULE_POWER_MODE_POLICY,	/* u8 */
     884  	ETHTOOL_A_MODULE_POWER_MODE,		/* u8 */
     885  
     886  	/* add new constants above here */
     887  	__ETHTOOL_A_MODULE_CNT,
     888  	ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
     889  };
     890  
     891  /* Power Sourcing Equipment */
     892  enum {
     893  	ETHTOOL_A_PSE_UNSPEC,
     894  	ETHTOOL_A_PSE_HEADER,			/* nest - _A_HEADER_* */
     895  	ETHTOOL_A_PODL_PSE_ADMIN_STATE,		/* u32 */
     896  	ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,	/* u32 */
     897  	ETHTOOL_A_PODL_PSE_PW_D_STATUS,		/* u32 */
     898  
     899  	/* add new constants above here */
     900  	__ETHTOOL_A_PSE_CNT,
     901  	ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
     902  };
     903  
     904  enum {
     905  	ETHTOOL_A_RSS_UNSPEC,
     906  	ETHTOOL_A_RSS_HEADER,
     907  	ETHTOOL_A_RSS_CONTEXT,		/* u32 */
     908  	ETHTOOL_A_RSS_HFUNC,		/* u32 */
     909  	ETHTOOL_A_RSS_INDIR,		/* binary */
     910  	ETHTOOL_A_RSS_HKEY,		/* binary */
     911  
     912  	__ETHTOOL_A_RSS_CNT,
     913  	ETHTOOL_A_RSS_MAX = (__ETHTOOL_A_RSS_CNT - 1),
     914  };
     915  
     916  /* PLCA */
     917  
     918  enum {
     919  	ETHTOOL_A_PLCA_UNSPEC,
     920  	ETHTOOL_A_PLCA_HEADER,			/* nest - _A_HEADER_* */
     921  	ETHTOOL_A_PLCA_VERSION,			/* u16 */
     922  	ETHTOOL_A_PLCA_ENABLED,			/* u8  */
     923  	ETHTOOL_A_PLCA_STATUS,			/* u8  */
     924  	ETHTOOL_A_PLCA_NODE_CNT,		/* u32 */
     925  	ETHTOOL_A_PLCA_NODE_ID,			/* u32 */
     926  	ETHTOOL_A_PLCA_TO_TMR,			/* u32 */
     927  	ETHTOOL_A_PLCA_BURST_CNT,		/* u32 */
     928  	ETHTOOL_A_PLCA_BURST_TMR,		/* u32 */
     929  
     930  	/* add new constants above here */
     931  	__ETHTOOL_A_PLCA_CNT,
     932  	ETHTOOL_A_PLCA_MAX = (__ETHTOOL_A_PLCA_CNT - 1)
     933  };
     934  
     935  /* MAC Merge (802.3) */
     936  
     937  enum {
     938  	ETHTOOL_A_MM_STAT_UNSPEC,
     939  	ETHTOOL_A_MM_STAT_PAD,
     940  
     941  	/* aMACMergeFrameAssErrorCount */
     942  	ETHTOOL_A_MM_STAT_REASSEMBLY_ERRORS,	/* u64 */
     943  	/* aMACMergeFrameSmdErrorCount */
     944  	ETHTOOL_A_MM_STAT_SMD_ERRORS,		/* u64 */
     945  	/* aMACMergeFrameAssOkCount */
     946  	ETHTOOL_A_MM_STAT_REASSEMBLY_OK,	/* u64 */
     947  	/* aMACMergeFragCountRx */
     948  	ETHTOOL_A_MM_STAT_RX_FRAG_COUNT,	/* u64 */
     949  	/* aMACMergeFragCountTx */
     950  	ETHTOOL_A_MM_STAT_TX_FRAG_COUNT,	/* u64 */
     951  	/* aMACMergeHoldCount */
     952  	ETHTOOL_A_MM_STAT_HOLD_COUNT,		/* u64 */
     953  
     954  	/* add new constants above here */
     955  	__ETHTOOL_A_MM_STAT_CNT,
     956  	ETHTOOL_A_MM_STAT_MAX = (__ETHTOOL_A_MM_STAT_CNT - 1)
     957  };
     958  
     959  enum {
     960  	ETHTOOL_A_MM_UNSPEC,
     961  	ETHTOOL_A_MM_HEADER,			/* nest - _A_HEADER_* */
     962  	ETHTOOL_A_MM_PMAC_ENABLED,		/* u8 */
     963  	ETHTOOL_A_MM_TX_ENABLED,		/* u8 */
     964  	ETHTOOL_A_MM_TX_ACTIVE,			/* u8 */
     965  	ETHTOOL_A_MM_TX_MIN_FRAG_SIZE,		/* u32 */
     966  	ETHTOOL_A_MM_RX_MIN_FRAG_SIZE,		/* u32 */
     967  	ETHTOOL_A_MM_VERIFY_ENABLED,		/* u8 */
     968  	ETHTOOL_A_MM_VERIFY_STATUS,		/* u8 */
     969  	ETHTOOL_A_MM_VERIFY_TIME,		/* u32 */
     970  	ETHTOOL_A_MM_MAX_VERIFY_TIME,		/* u32 */
     971  	ETHTOOL_A_MM_STATS,			/* nest - _A_MM_STAT_* */
     972  
     973  	/* add new constants above here */
     974  	__ETHTOOL_A_MM_CNT,
     975  	ETHTOOL_A_MM_MAX = (__ETHTOOL_A_MM_CNT - 1)
     976  };
     977  
     978  /* generic netlink info */
     979  #define ETHTOOL_GENL_NAME "ethtool"
     980  #define ETHTOOL_GENL_VERSION 1
     981  
     982  #define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
     983  
     984  #endif /* _LINUX_ETHTOOL_NETLINK_H_ */