1============================= 2Netlink interface for ethtool 3============================= 4 5 6Basic information 7================= 8 9Netlink interface for ethtool uses generic netlink family ``ethtool`` 10(userspace application should use macros ``ETHTOOL_GENL_NAME`` and 11``ETHTOOL_GENL_VERSION`` defined in ``<linux/ethtool_netlink.h>`` uapi 12header). This family does not use a specific header, all information in 13requests and replies is passed using netlink attributes. 14 15The ethtool netlink interface uses extended ACK for error and warning 16reporting, userspace application developers are encouraged to make these 17messages available to user in a suitable way. 18 19Requests can be divided into three categories: "get" (retrieving information), 20"set" (setting parameters) and "action" (invoking an action). 21 22All "set" and "action" type requests require admin privileges 23(``CAP_NET_ADMIN`` in the namespace). Most "get" type requests are allowed for 24anyone but there are exceptions (where the response contains sensitive 25information). In some cases, the request as such is allowed for anyone but 26unprivileged users have attributes with sensitive information (e.g. 27wake-on-lan password) omitted. 28 29 30Conventions 31=========== 32 33Attributes which represent a boolean value usually use NLA_U8 type so that we 34can distinguish three states: "on", "off" and "not present" (meaning the 35information is not available in "get" requests or value is not to be changed 36in "set" requests). For these attributes, the "true" value should be passed as 37number 1 but any non-zero value should be understood as "true" by recipient. 38In the tables below, "bool" denotes NLA_U8 attributes interpreted in this way. 39 40In the message structure descriptions below, if an attribute name is suffixed 41with "+", parent nest can contain multiple attributes of the same type. This 42implements an array of entries. 43 44 45Request header 46============== 47 48Each request or reply message contains a nested attribute with common header. 49Structure of this header is 50 51 ============================== ====== ============================= 52 ``ETHTOOL_A_HEADER_DEV_INDEX`` u32 device ifindex 53 ``ETHTOOL_A_HEADER_DEV_NAME`` string device name 54 ``ETHTOOL_A_HEADER_FLAGS`` u32 flags common for all requests 55 ============================== ====== ============================= 56 57``ETHTOOL_A_HEADER_DEV_INDEX`` and ``ETHTOOL_A_HEADER_DEV_NAME`` identify the 58device message relates to. One of them is sufficient in requests, if both are 59used, they must identify the same device. Some requests, e.g. global string 60sets, do not require device identification. Most ``GET`` requests also allow 61dump requests without device identification to query the same information for 62all devices providing it (each device in a separate message). 63 64``ETHTOOL_A_HEADER_FLAGS`` is a bitmap of request flags common for all request 65types. The interpretation of these flags is the same for all request types but 66the flags may not apply to requests. Recognized flags are: 67 68 ================================= =================================== 69 ``ETHTOOL_FLAG_COMPACT_BITSETS`` use compact format bitsets in reply 70 ``ETHTOOL_FLAG_OMIT_REPLY`` omit optional reply (_SET and _ACT) 71 ``ETHTOOL_FLAG_STATS`` include optional device statistics 72 ================================= =================================== 73 74New request flags should follow the general idea that if the flag is not set, 75the behaviour is backward compatible, i.e. requests from old clients not aware 76of the flag should be interpreted the way the client expects. A client must 77not set flags it does not understand. 78 79 80Bit sets 81======== 82 83For short bitmaps of (reasonably) fixed length, standard ``NLA_BITFIELD32`` 84type is used. For arbitrary length bitmaps, ethtool netlink uses a nested 85attribute with contents of one of two forms: compact (two binary bitmaps 86representing bit values and mask of affected bits) and bit-by-bit (list of 87bits identified by either index or name). 88 89Verbose (bit-by-bit) bitsets allow sending symbolic names for bits together 90with their values which saves a round trip (when the bitset is passed in a 91request) or at least a second request (when the bitset is in a reply). This is 92useful for one shot applications like traditional ethtool command. On the 93other hand, long running applications like ethtool monitor (displaying 94notifications) or network management daemons may prefer fetching the names 95only once and using compact form to save message size. Notifications from 96ethtool netlink interface always use compact form for bitsets. 97 98A bitset can represent either a value/mask pair (``ETHTOOL_A_BITSET_NOMASK`` 99not set) or a single bitmap (``ETHTOOL_A_BITSET_NOMASK`` set). In requests 100modifying a bitmap, the former changes the bit set in mask to values set in 101value and preserves the rest; the latter sets the bits set in the bitmap and 102clears the rest. 103 104Compact form: nested (bitset) atrribute contents: 105 106 ============================ ====== ============================ 107 ``ETHTOOL_A_BITSET_NOMASK`` flag no mask, only a list 108 ``ETHTOOL_A_BITSET_SIZE`` u32 number of significant bits 109 ``ETHTOOL_A_BITSET_VALUE`` binary bitmap of bit values 110 ``ETHTOOL_A_BITSET_MASK`` binary bitmap of valid bits 111 ============================ ====== ============================ 112 113Value and mask must have length at least ``ETHTOOL_A_BITSET_SIZE`` bits 114rounded up to a multiple of 32 bits. They consist of 32-bit words in host byte 115order, words ordered from least significant to most significant (i.e. the same 116way as bitmaps are passed with ioctl interface). 117 118For compact form, ``ETHTOOL_A_BITSET_SIZE`` and ``ETHTOOL_A_BITSET_VALUE`` are 119mandatory. ``ETHTOOL_A_BITSET_MASK`` attribute is mandatory if 120``ETHTOOL_A_BITSET_NOMASK`` is not set (bitset represents a value/mask pair); 121if ``ETHTOOL_A_BITSET_NOMASK`` is not set, ``ETHTOOL_A_BITSET_MASK`` is not 122allowed (bitset represents a single bitmap. 123 124Kernel bit set length may differ from userspace length if older application is 125used on newer kernel or vice versa. If userspace bitmap is longer, an error is 126issued only if the request actually tries to set values of some bits not 127recognized by kernel. 128 129Bit-by-bit form: nested (bitset) attribute contents: 130 131 +------------------------------------+--------+-----------------------------+ 132 | ``ETHTOOL_A_BITSET_NOMASK`` | flag | no mask, only a list | 133 +------------------------------------+--------+-----------------------------+ 134 | ``ETHTOOL_A_BITSET_SIZE`` | u32 | number of significant bits | 135 +------------------------------------+--------+-----------------------------+ 136 | ``ETHTOOL_A_BITSET_BITS`` | nested | array of bits | 137 +-+----------------------------------+--------+-----------------------------+ 138 | | ``ETHTOOL_A_BITSET_BITS_BIT+`` | nested | one bit | 139 +-+-+--------------------------------+--------+-----------------------------+ 140 | | | ``ETHTOOL_A_BITSET_BIT_INDEX`` | u32 | bit index (0 for LSB) | 141 +-+-+--------------------------------+--------+-----------------------------+ 142 | | | ``ETHTOOL_A_BITSET_BIT_NAME`` | string | bit name | 143 +-+-+--------------------------------+--------+-----------------------------+ 144 | | | ``ETHTOOL_A_BITSET_BIT_VALUE`` | flag | present if bit is set | 145 +-+-+--------------------------------+--------+-----------------------------+ 146 147Bit size is optional for bit-by-bit form. ``ETHTOOL_A_BITSET_BITS`` nest can 148only contain ``ETHTOOL_A_BITSET_BITS_BIT`` attributes but there can be an 149arbitrary number of them. A bit may be identified by its index or by its 150name. When used in requests, listed bits are set to 0 or 1 according to 151``ETHTOOL_A_BITSET_BIT_VALUE``, the rest is preserved. A request fails if 152index exceeds kernel bit length or if name is not recognized. 153 154When ``ETHTOOL_A_BITSET_NOMASK`` flag is present, bitset is interpreted as 155a simple bitmap. ``ETHTOOL_A_BITSET_BIT_VALUE`` attributes are not used in 156such case. Such bitset represents a bitmap with listed bits set and the rest 157zero. 158 159In requests, application can use either form. Form used by kernel in reply is 160determined by ``ETHTOOL_FLAG_COMPACT_BITSETS`` flag in flags field of request 161header. Semantics of value and mask depends on the attribute. 162 163 164List of message types 165===================== 166 167All constants identifying message types use ``ETHTOOL_CMD_`` prefix and suffix 168according to message purpose: 169 170 ============== ====================================== 171 ``_GET`` userspace request to retrieve data 172 ``_SET`` userspace request to set data 173 ``_ACT`` userspace request to perform an action 174 ``_GET_REPLY`` kernel reply to a ``GET`` request 175 ``_SET_REPLY`` kernel reply to a ``SET`` request 176 ``_ACT_REPLY`` kernel reply to an ``ACT`` request 177 ``_NTF`` kernel notification 178 ============== ====================================== 179 180Userspace to kernel: 181 182 ===================================== ================================ 183 ``ETHTOOL_MSG_STRSET_GET`` get string set 184 ``ETHTOOL_MSG_LINKINFO_GET`` get link settings 185 ``ETHTOOL_MSG_LINKINFO_SET`` set link settings 186 ``ETHTOOL_MSG_LINKMODES_GET`` get link modes info 187 ``ETHTOOL_MSG_LINKMODES_SET`` set link modes info 188 ``ETHTOOL_MSG_LINKSTATE_GET`` get link state 189 ``ETHTOOL_MSG_DEBUG_GET`` get debugging settings 190 ``ETHTOOL_MSG_DEBUG_SET`` set debugging settings 191 ``ETHTOOL_MSG_WOL_GET`` get wake-on-lan settings 192 ``ETHTOOL_MSG_WOL_SET`` set wake-on-lan settings 193 ``ETHTOOL_MSG_FEATURES_GET`` get device features 194 ``ETHTOOL_MSG_FEATURES_SET`` set device features 195 ``ETHTOOL_MSG_PRIVFLAGS_GET`` get private flags 196 ``ETHTOOL_MSG_PRIVFLAGS_SET`` set private flags 197 ``ETHTOOL_MSG_RINGS_GET`` get ring sizes 198 ``ETHTOOL_MSG_RINGS_SET`` set ring sizes 199 ``ETHTOOL_MSG_CHANNELS_GET`` get channel counts 200 ``ETHTOOL_MSG_CHANNELS_SET`` set channel counts 201 ``ETHTOOL_MSG_COALESCE_GET`` get coalescing parameters 202 ``ETHTOOL_MSG_COALESCE_SET`` set coalescing parameters 203 ``ETHTOOL_MSG_PAUSE_GET`` get pause parameters 204 ``ETHTOOL_MSG_PAUSE_SET`` set pause parameters 205 ``ETHTOOL_MSG_EEE_GET`` get EEE settings 206 ``ETHTOOL_MSG_EEE_SET`` set EEE settings 207 ``ETHTOOL_MSG_TSINFO_GET`` get timestamping info 208 ``ETHTOOL_MSG_CABLE_TEST_ACT`` action start cable test 209 ``ETHTOOL_MSG_CABLE_TEST_TDR_ACT`` action start raw TDR cable test 210 ``ETHTOOL_MSG_TUNNEL_INFO_GET`` get tunnel offload info 211 ===================================== ================================ 212 213Kernel to userspace: 214 215 ===================================== ================================= 216 ``ETHTOOL_MSG_STRSET_GET_REPLY`` string set contents 217 ``ETHTOOL_MSG_LINKINFO_GET_REPLY`` link settings 218 ``ETHTOOL_MSG_LINKINFO_NTF`` link settings notification 219 ``ETHTOOL_MSG_LINKMODES_GET_REPLY`` link modes info 220 ``ETHTOOL_MSG_LINKMODES_NTF`` link modes notification 221 ``ETHTOOL_MSG_LINKSTATE_GET_REPLY`` link state info 222 ``ETHTOOL_MSG_DEBUG_GET_REPLY`` debugging settings 223 ``ETHTOOL_MSG_DEBUG_NTF`` debugging settings notification 224 ``ETHTOOL_MSG_WOL_GET_REPLY`` wake-on-lan settings 225 ``ETHTOOL_MSG_WOL_NTF`` wake-on-lan settings notification 226 ``ETHTOOL_MSG_FEATURES_GET_REPLY`` device features 227 ``ETHTOOL_MSG_FEATURES_SET_REPLY`` optional reply to FEATURES_SET 228 ``ETHTOOL_MSG_FEATURES_NTF`` netdev features notification 229 ``ETHTOOL_MSG_PRIVFLAGS_GET_REPLY`` private flags 230 ``ETHTOOL_MSG_PRIVFLAGS_NTF`` private flags 231 ``ETHTOOL_MSG_RINGS_GET_REPLY`` ring sizes 232 ``ETHTOOL_MSG_RINGS_NTF`` ring sizes 233 ``ETHTOOL_MSG_CHANNELS_GET_REPLY`` channel counts 234 ``ETHTOOL_MSG_CHANNELS_NTF`` channel counts 235 ``ETHTOOL_MSG_COALESCE_GET_REPLY`` coalescing parameters 236 ``ETHTOOL_MSG_COALESCE_NTF`` coalescing parameters 237 ``ETHTOOL_MSG_PAUSE_GET_REPLY`` pause parameters 238 ``ETHTOOL_MSG_PAUSE_NTF`` pause parameters 239 ``ETHTOOL_MSG_EEE_GET_REPLY`` EEE settings 240 ``ETHTOOL_MSG_EEE_NTF`` EEE settings 241 ``ETHTOOL_MSG_TSINFO_GET_REPLY`` timestamping info 242 ``ETHTOOL_MSG_CABLE_TEST_NTF`` Cable test results 243 ``ETHTOOL_MSG_CABLE_TEST_TDR_NTF`` Cable test TDR results 244 ``ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY`` tunnel offload info 245 ===================================== ================================= 246 247``GET`` requests are sent by userspace applications to retrieve device 248information. They usually do not contain any message specific attributes. 249Kernel replies with corresponding "GET_REPLY" message. For most types, ``GET`` 250request with ``NLM_F_DUMP`` and no device identification can be used to query 251the information for all devices supporting the request. 252 253If the data can be also modified, corresponding ``SET`` message with the same 254layout as corresponding ``GET_REPLY`` is used to request changes. Only 255attributes where a change is requested are included in such request (also, not 256all attributes may be changed). Replies to most ``SET`` request consist only 257of error code and extack; if kernel provides additional data, it is sent in 258the form of corresponding ``SET_REPLY`` message which can be suppressed by 259setting ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header. 260 261Data modification also triggers sending a ``NTF`` message with a notification. 262These usually bear only a subset of attributes which was affected by the 263change. The same notification is issued if the data is modified using other 264means (mostly ioctl ethtool interface). Unlike notifications from ethtool 265netlink code which are only sent if something actually changed, notifications 266triggered by ioctl interface may be sent even if the request did not actually 267change any data. 268 269``ACT`` messages request kernel (driver) to perform a specific action. If some 270information is reported by kernel (which can be suppressed by setting 271``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header), the reply takes form of 272an ``ACT_REPLY`` message. Performing an action also triggers a notification 273(``NTF`` message). 274 275Later sections describe the format and semantics of these messages. 276 277 278STRSET_GET 279========== 280 281Requests contents of a string set as provided by ioctl commands 282``ETHTOOL_GSSET_INFO`` and ``ETHTOOL_GSTRINGS.`` String sets are not user 283writeable so that the corresponding ``STRSET_SET`` message is only used in 284kernel replies. There are two types of string sets: global (independent of 285a device, e.g. device feature names) and device specific (e.g. device private 286flags). 287 288Request contents: 289 290 +---------------------------------------+--------+------------------------+ 291 | ``ETHTOOL_A_STRSET_HEADER`` | nested | request header | 292 +---------------------------------------+--------+------------------------+ 293 | ``ETHTOOL_A_STRSET_STRINGSETS`` | nested | string set to request | 294 +-+-------------------------------------+--------+------------------------+ 295 | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set | 296 +-+-+-----------------------------------+--------+------------------------+ 297 | | | ``ETHTOOL_A_STRINGSET_ID`` | u32 | set id | 298 +-+-+-----------------------------------+--------+------------------------+ 299 300Kernel response contents: 301 302 +---------------------------------------+--------+-----------------------+ 303 | ``ETHTOOL_A_STRSET_HEADER`` | nested | reply header | 304 +---------------------------------------+--------+-----------------------+ 305 | ``ETHTOOL_A_STRSET_STRINGSETS`` | nested | array of string sets | 306 +-+-------------------------------------+--------+-----------------------+ 307 | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set | 308 +-+-+-----------------------------------+--------+-----------------------+ 309 | | | ``ETHTOOL_A_STRINGSET_ID`` | u32 | set id | 310 +-+-+-----------------------------------+--------+-----------------------+ 311 | | | ``ETHTOOL_A_STRINGSET_COUNT`` | u32 | number of strings | 312 +-+-+-----------------------------------+--------+-----------------------+ 313 | | | ``ETHTOOL_A_STRINGSET_STRINGS`` | nested | array of strings | 314 +-+-+-+---------------------------------+--------+-----------------------+ 315 | | | | ``ETHTOOL_A_STRINGS_STRING+`` | nested | one string | 316 +-+-+-+-+-------------------------------+--------+-----------------------+ 317 | | | | | ``ETHTOOL_A_STRING_INDEX`` | u32 | string index | 318 +-+-+-+-+-------------------------------+--------+-----------------------+ 319 | | | | | ``ETHTOOL_A_STRING_VALUE`` | string | string value | 320 +-+-+-+-+-------------------------------+--------+-----------------------+ 321 | ``ETHTOOL_A_STRSET_COUNTS_ONLY`` | flag | return only counts | 322 +---------------------------------------+--------+-----------------------+ 323 324Device identification in request header is optional. Depending on its presence 325a and ``NLM_F_DUMP`` flag, there are three type of ``STRSET_GET`` requests: 326 327 - no ``NLM_F_DUMP,`` no device: get "global" stringsets 328 - no ``NLM_F_DUMP``, with device: get string sets related to the device 329 - ``NLM_F_DUMP``, no device: get device related string sets for all devices 330 331If there is no ``ETHTOOL_A_STRSET_STRINGSETS`` array, all string sets of 332requested type are returned, otherwise only those specified in the request. 333Flag ``ETHTOOL_A_STRSET_COUNTS_ONLY`` tells kernel to only return string 334counts of the sets, not the actual strings. 335 336 337LINKINFO_GET 338============ 339 340Requests link settings as provided by ``ETHTOOL_GLINKSETTINGS`` except for 341link modes and autonegotiation related information. The request does not use 342any attributes. 343 344Request contents: 345 346 ==================================== ====== ========================== 347 ``ETHTOOL_A_LINKINFO_HEADER`` nested request header 348 ==================================== ====== ========================== 349 350Kernel response contents: 351 352 ==================================== ====== ========================== 353 ``ETHTOOL_A_LINKINFO_HEADER`` nested reply header 354 ``ETHTOOL_A_LINKINFO_PORT`` u8 physical port 355 ``ETHTOOL_A_LINKINFO_PHYADDR`` u8 phy MDIO address 356 ``ETHTOOL_A_LINKINFO_TP_MDIX`` u8 MDI(-X) status 357 ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL`` u8 MDI(-X) control 358 ``ETHTOOL_A_LINKINFO_TRANSCEIVER`` u8 transceiver 359 ==================================== ====== ========================== 360 361Attributes and their values have the same meaning as matching members of the 362corresponding ioctl structures. 363 364``LINKINFO_GET`` allows dump requests (kernel returns reply message for all 365devices supporting the request). 366 367 368LINKINFO_SET 369============ 370 371``LINKINFO_SET`` request allows setting some of the attributes reported by 372``LINKINFO_GET``. 373 374Request contents: 375 376 ==================================== ====== ========================== 377 ``ETHTOOL_A_LINKINFO_HEADER`` nested request header 378 ``ETHTOOL_A_LINKINFO_PORT`` u8 physical port 379 ``ETHTOOL_A_LINKINFO_PHYADDR`` u8 phy MDIO address 380 ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL`` u8 MDI(-X) control 381 ==================================== ====== ========================== 382 383MDI(-X) status and transceiver cannot be set, request with the corresponding 384attributes is rejected. 385 386 387LINKMODES_GET 388============= 389 390Requests link modes (supported, advertised and peer advertised) and related 391information (autonegotiation status, link speed and duplex) as provided by 392``ETHTOOL_GLINKSETTINGS``. The request does not use any attributes. 393 394Request contents: 395 396 ==================================== ====== ========================== 397 ``ETHTOOL_A_LINKMODES_HEADER`` nested request header 398 ==================================== ====== ========================== 399 400Kernel response contents: 401 402 ========================================== ====== ========================== 403 ``ETHTOOL_A_LINKMODES_HEADER`` nested reply header 404 ``ETHTOOL_A_LINKMODES_AUTONEG`` u8 autonegotiation status 405 ``ETHTOOL_A_LINKMODES_OURS`` bitset advertised link modes 406 ``ETHTOOL_A_LINKMODES_PEER`` bitset partner link modes 407 ``ETHTOOL_A_LINKMODES_SPEED`` u32 link speed (Mb/s) 408 ``ETHTOOL_A_LINKMODES_DUPLEX`` u8 duplex mode 409 ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG`` u8 Master/slave port mode 410 ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE`` u8 Master/slave port state 411 ========================================== ====== ========================== 412 413For ``ETHTOOL_A_LINKMODES_OURS``, value represents advertised modes and mask 414represents supported modes. ``ETHTOOL_A_LINKMODES_PEER`` in the reply is a bit 415list. 416 417``LINKMODES_GET`` allows dump requests (kernel returns reply messages for all 418devices supporting the request). 419 420 421LINKMODES_SET 422============= 423 424Request contents: 425 426 ========================================== ====== ========================== 427 ``ETHTOOL_A_LINKMODES_HEADER`` nested request header 428 ``ETHTOOL_A_LINKMODES_AUTONEG`` u8 autonegotiation status 429 ``ETHTOOL_A_LINKMODES_OURS`` bitset advertised link modes 430 ``ETHTOOL_A_LINKMODES_PEER`` bitset partner link modes 431 ``ETHTOOL_A_LINKMODES_SPEED`` u32 link speed (Mb/s) 432 ``ETHTOOL_A_LINKMODES_DUPLEX`` u8 duplex mode 433 ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG`` u8 Master/slave port mode 434 ``ETHTOOL_A_LINKMODES_LANES`` u32 lanes 435 ========================================== ====== ========================== 436 437``ETHTOOL_A_LINKMODES_OURS`` bit set allows setting advertised link modes. If 438autonegotiation is on (either set now or kept from before), advertised modes 439are not changed (no ``ETHTOOL_A_LINKMODES_OURS`` attribute) and at least one 440of speed, duplex and lanes is specified, kernel adjusts advertised modes to all 441supported modes matching speed, duplex, lanes or all (whatever is specified). 442This autoselection is done on ethtool side with ioctl interface, netlink 443interface is supposed to allow requesting changes without knowing what exactly 444kernel supports. 445 446 447LINKSTATE_GET 448============= 449 450Requests link state information. Link up/down flag (as provided by 451``ETHTOOL_GLINK`` ioctl command) is provided. Optionally, extended state might 452be provided as well. In general, extended state describes reasons for why a port 453is down, or why it operates in some non-obvious mode. This request does not have 454any attributes. 455 456Request contents: 457 458 ==================================== ====== ========================== 459 ``ETHTOOL_A_LINKSTATE_HEADER`` nested request header 460 ==================================== ====== ========================== 461 462Kernel response contents: 463 464 ==================================== ====== ============================ 465 ``ETHTOOL_A_LINKSTATE_HEADER`` nested reply header 466 ``ETHTOOL_A_LINKSTATE_LINK`` bool link state (up/down) 467 ``ETHTOOL_A_LINKSTATE_SQI`` u32 Current Signal Quality Index 468 ``ETHTOOL_A_LINKSTATE_SQI_MAX`` u32 Max support SQI value 469 ``ETHTOOL_A_LINKSTATE_EXT_STATE`` u8 link extended state 470 ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE`` u8 link extended substate 471 ==================================== ====== ============================ 472 473For most NIC drivers, the value of ``ETHTOOL_A_LINKSTATE_LINK`` returns 474carrier flag provided by ``netif_carrier_ok()`` but there are drivers which 475define their own handler. 476 477``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE`` are 478optional values. ethtool core can provide either both 479``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``, 480or only ``ETHTOOL_A_LINKSTATE_EXT_STATE``, or none of them. 481 482``LINKSTATE_GET`` allows dump requests (kernel returns reply messages for all 483devices supporting the request). 484 485 486Link extended states: 487 488 ================================================ ============================================ 489 ``ETHTOOL_LINK_EXT_STATE_AUTONEG`` States relating to the autonegotiation or 490 issues therein 491 492 ``ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE`` Failure during link training 493 494 ``ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH`` Logical mismatch in physical coding sublayer 495 or forward error correction sublayer 496 497 ``ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY`` Signal integrity issues 498 499 ``ETHTOOL_LINK_EXT_STATE_NO_CABLE`` No cable connected 500 501 ``ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE`` Failure is related to cable, 502 e.g., unsupported cable 503 504 ``ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE`` Failure is related to EEPROM, e.g., failure 505 during reading or parsing the data 506 507 ``ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE`` Failure during calibration algorithm 508 509 ``ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED`` The hardware is not able to provide the 510 power required from cable or module 511 512 ``ETHTOOL_LINK_EXT_STATE_OVERHEAT`` The module is overheated 513 ================================================ ============================================ 514 515Link extended substates: 516 517 Autoneg substates: 518 519 =============================================================== ================================ 520 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED`` Peer side is down 521 522 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED`` Ack not received from peer side 523 524 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED`` Next page exchange failed 525 526 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE`` Peer side is down during force 527 mode or there is no agreement of 528 speed 529 530 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE`` Forward error correction modes 531 in both sides are mismatched 532 533 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD`` No Highest Common Denominator 534 =============================================================== ================================ 535 536 Link training substates: 537 538 =========================================================================== ==================== 539 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED`` Frames were not 540 recognized, the 541 lock failed 542 543 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT`` The lock did not 544 occur before 545 timeout 546 547 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY`` Peer side did not 548 send ready signal 549 after training 550 process 551 552 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT`` Remote side is not 553 ready yet 554 =========================================================================== ==================== 555 556 Link logical mismatch substates: 557 558 ================================================================ =============================== 559 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK`` Physical coding sublayer was 560 not locked in first phase - 561 block lock 562 563 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK`` Physical coding sublayer was 564 not locked in second phase - 565 alignment markers lock 566 567 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS`` Physical coding sublayer did 568 not get align status 569 570 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED`` FC forward error correction is 571 not locked 572 573 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED`` RS forward error correction is 574 not locked 575 ================================================================ =============================== 576 577 Bad signal integrity substates: 578 579 ================================================================= ============================= 580 ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS`` Large number of physical 581 errors 582 583 ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE`` The system attempted to 584 operate the cable at a rate 585 that is not formally 586 supported, which led to 587 signal integrity issues 588 ================================================================= ============================= 589 590 Cable issue substates: 591 592 =================================================== ============================================ 593 ``ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE`` Unsupported cable 594 595 ``ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE`` Cable test failure 596 =================================================== ============================================ 597 598DEBUG_GET 599========= 600 601Requests debugging settings of a device. At the moment, only message mask is 602provided. 603 604Request contents: 605 606 ==================================== ====== ========================== 607 ``ETHTOOL_A_DEBUG_HEADER`` nested request header 608 ==================================== ====== ========================== 609 610Kernel response contents: 611 612 ==================================== ====== ========================== 613 ``ETHTOOL_A_DEBUG_HEADER`` nested reply header 614 ``ETHTOOL_A_DEBUG_MSGMASK`` bitset message mask 615 ==================================== ====== ========================== 616 617The message mask (``ETHTOOL_A_DEBUG_MSGMASK``) is equal to message level as 618provided by ``ETHTOOL_GMSGLVL`` and set by ``ETHTOOL_SMSGLVL`` in ioctl 619interface. While it is called message level there for historical reasons, most 620drivers and almost all newer drivers use it as a mask of enabled message 621classes (represented by ``NETIF_MSG_*`` constants); therefore netlink 622interface follows its actual use in practice. 623 624``DEBUG_GET`` allows dump requests (kernel returns reply messages for all 625devices supporting the request). 626 627 628DEBUG_SET 629========= 630 631Set or update debugging settings of a device. At the moment, only message mask 632is supported. 633 634Request contents: 635 636 ==================================== ====== ========================== 637 ``ETHTOOL_A_DEBUG_HEADER`` nested request header 638 ``ETHTOOL_A_DEBUG_MSGMASK`` bitset message mask 639 ==================================== ====== ========================== 640 641``ETHTOOL_A_DEBUG_MSGMASK`` bit set allows setting or modifying mask of 642enabled debugging message types for the device. 643 644 645WOL_GET 646======= 647 648Query device wake-on-lan settings. Unlike most "GET" type requests, 649``ETHTOOL_MSG_WOL_GET`` requires (netns) ``CAP_NET_ADMIN`` privileges as it 650(potentially) provides SecureOn(tm) password which is confidential. 651 652Request contents: 653 654 ==================================== ====== ========================== 655 ``ETHTOOL_A_WOL_HEADER`` nested request header 656 ==================================== ====== ========================== 657 658Kernel response contents: 659 660 ==================================== ====== ========================== 661 ``ETHTOOL_A_WOL_HEADER`` nested reply header 662 ``ETHTOOL_A_WOL_MODES`` bitset mask of enabled WoL modes 663 ``ETHTOOL_A_WOL_SOPASS`` binary SecureOn(tm) password 664 ==================================== ====== ========================== 665 666In reply, ``ETHTOOL_A_WOL_MODES`` mask consists of modes supported by the 667device, value of modes which are enabled. ``ETHTOOL_A_WOL_SOPASS`` is only 668included in reply if ``WAKE_MAGICSECURE`` mode is supported. 669 670 671WOL_SET 672======= 673 674Set or update wake-on-lan settings. 675 676Request contents: 677 678 ==================================== ====== ========================== 679 ``ETHTOOL_A_WOL_HEADER`` nested request header 680 ``ETHTOOL_A_WOL_MODES`` bitset enabled WoL modes 681 ``ETHTOOL_A_WOL_SOPASS`` binary SecureOn(tm) password 682 ==================================== ====== ========================== 683 684``ETHTOOL_A_WOL_SOPASS`` is only allowed for devices supporting 685``WAKE_MAGICSECURE`` mode. 686 687 688FEATURES_GET 689============ 690 691Gets netdev features like ``ETHTOOL_GFEATURES`` ioctl request. 692 693Request contents: 694 695 ==================================== ====== ========================== 696 ``ETHTOOL_A_FEATURES_HEADER`` nested request header 697 ==================================== ====== ========================== 698 699Kernel response contents: 700 701 ==================================== ====== ========================== 702 ``ETHTOOL_A_FEATURES_HEADER`` nested reply header 703 ``ETHTOOL_A_FEATURES_HW`` bitset dev->hw_features 704 ``ETHTOOL_A_FEATURES_WANTED`` bitset dev->wanted_features 705 ``ETHTOOL_A_FEATURES_ACTIVE`` bitset dev->features 706 ``ETHTOOL_A_FEATURES_NOCHANGE`` bitset NETIF_F_NEVER_CHANGE 707 ==================================== ====== ========================== 708 709Bitmaps in kernel response have the same meaning as bitmaps used in ioctl 710interference but attribute names are different (they are based on 711corresponding members of struct net_device). Legacy "flags" are not provided, 712if userspace needs them (most likely only ethtool for backward compatibility), 713it can calculate their values from related feature bits itself. 714ETHA_FEATURES_HW uses mask consisting of all features recognized by kernel (to 715provide all names when using verbose bitmap format), the other three use no 716mask (simple bit lists). 717 718 719FEATURES_SET 720============ 721 722Request to set netdev features like ``ETHTOOL_SFEATURES`` ioctl request. 723 724Request contents: 725 726 ==================================== ====== ========================== 727 ``ETHTOOL_A_FEATURES_HEADER`` nested request header 728 ``ETHTOOL_A_FEATURES_WANTED`` bitset requested features 729 ==================================== ====== ========================== 730 731Kernel response contents: 732 733 ==================================== ====== ========================== 734 ``ETHTOOL_A_FEATURES_HEADER`` nested reply header 735 ``ETHTOOL_A_FEATURES_WANTED`` bitset diff wanted vs. result 736 ``ETHTOOL_A_FEATURES_ACTIVE`` bitset diff old vs. new active 737 ==================================== ====== ========================== 738 739Request constains only one bitset which can be either value/mask pair (request 740to change specific feature bits and leave the rest) or only a value (request 741to set all features to specified set). 742 743As request is subject to netdev_change_features() sanity checks, optional 744kernel reply (can be suppressed by ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request 745header) informs client about the actual result. ``ETHTOOL_A_FEATURES_WANTED`` 746reports the difference between client request and actual result: mask consists 747of bits which differ between requested features and result (dev->features 748after the operation), value consists of values of these bits in the request 749(i.e. negated values from resulting features). ``ETHTOOL_A_FEATURES_ACTIVE`` 750reports the difference between old and new dev->features: mask consists of 751bits which have changed, values are their values in new dev->features (after 752the operation). 753 754``ETHTOOL_MSG_FEATURES_NTF`` notification is sent not only if device features 755are modified using ``ETHTOOL_MSG_FEATURES_SET`` request or on of ethtool ioctl 756request but also each time features are modified with netdev_update_features() 757or netdev_change_features(). 758 759 760PRIVFLAGS_GET 761============= 762 763Gets private flags like ``ETHTOOL_GPFLAGS`` ioctl request. 764 765Request contents: 766 767 ==================================== ====== ========================== 768 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested request header 769 ==================================== ====== ========================== 770 771Kernel response contents: 772 773 ==================================== ====== ========================== 774 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested reply header 775 ``ETHTOOL_A_PRIVFLAGS_FLAGS`` bitset private flags 776 ==================================== ====== ========================== 777 778``ETHTOOL_A_PRIVFLAGS_FLAGS`` is a bitset with values of device private flags. 779These flags are defined by driver, their number and names (and also meaning) 780are device dependent. For compact bitset format, names can be retrieved as 781``ETH_SS_PRIV_FLAGS`` string set. If verbose bitset format is requested, 782response uses all private flags supported by the device as mask so that client 783gets the full information without having to fetch the string set with names. 784 785 786PRIVFLAGS_SET 787============= 788 789Sets or modifies values of device private flags like ``ETHTOOL_SPFLAGS`` 790ioctl request. 791 792Request contents: 793 794 ==================================== ====== ========================== 795 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested request header 796 ``ETHTOOL_A_PRIVFLAGS_FLAGS`` bitset private flags 797 ==================================== ====== ========================== 798 799``ETHTOOL_A_PRIVFLAGS_FLAGS`` can either set the whole set of private flags or 800modify only values of some of them. 801 802 803RINGS_GET 804========= 805 806Gets ring sizes like ``ETHTOOL_GRINGPARAM`` ioctl request. 807 808Request contents: 809 810 ==================================== ====== ========================== 811 ``ETHTOOL_A_RINGS_HEADER`` nested request header 812 ==================================== ====== ========================== 813 814Kernel response contents: 815 816 ==================================== ====== ========================== 817 ``ETHTOOL_A_RINGS_HEADER`` nested reply header 818 ``ETHTOOL_A_RINGS_RX_MAX`` u32 max size of RX ring 819 ``ETHTOOL_A_RINGS_RX_MINI_MAX`` u32 max size of RX mini ring 820 ``ETHTOOL_A_RINGS_RX_JUMBO_MAX`` u32 max size of RX jumbo ring 821 ``ETHTOOL_A_RINGS_TX_MAX`` u32 max size of TX ring 822 ``ETHTOOL_A_RINGS_RX`` u32 size of RX ring 823 ``ETHTOOL_A_RINGS_RX_MINI`` u32 size of RX mini ring 824 ``ETHTOOL_A_RINGS_RX_JUMBO`` u32 size of RX jumbo ring 825 ``ETHTOOL_A_RINGS_TX`` u32 size of TX ring 826 ==================================== ====== ========================== 827 828 829RINGS_SET 830========= 831 832Sets ring sizes like ``ETHTOOL_SRINGPARAM`` ioctl request. 833 834Request contents: 835 836 ==================================== ====== ========================== 837 ``ETHTOOL_A_RINGS_HEADER`` nested reply header 838 ``ETHTOOL_A_RINGS_RX`` u32 size of RX ring 839 ``ETHTOOL_A_RINGS_RX_MINI`` u32 size of RX mini ring 840 ``ETHTOOL_A_RINGS_RX_JUMBO`` u32 size of RX jumbo ring 841 ``ETHTOOL_A_RINGS_TX`` u32 size of TX ring 842 ==================================== ====== ========================== 843 844Kernel checks that requested ring sizes do not exceed limits reported by 845driver. Driver may impose additional constraints and may not suspport all 846attributes. 847 848 849CHANNELS_GET 850============ 851 852Gets channel counts like ``ETHTOOL_GCHANNELS`` ioctl request. 853 854Request contents: 855 856 ==================================== ====== ========================== 857 ``ETHTOOL_A_CHANNELS_HEADER`` nested request header 858 ==================================== ====== ========================== 859 860Kernel response contents: 861 862 ===================================== ====== ========================== 863 ``ETHTOOL_A_CHANNELS_HEADER`` nested reply header 864 ``ETHTOOL_A_CHANNELS_RX_MAX`` u32 max receive channels 865 ``ETHTOOL_A_CHANNELS_TX_MAX`` u32 max transmit channels 866 ``ETHTOOL_A_CHANNELS_OTHER_MAX`` u32 max other channels 867 ``ETHTOOL_A_CHANNELS_COMBINED_MAX`` u32 max combined channels 868 ``ETHTOOL_A_CHANNELS_RX_COUNT`` u32 receive channel count 869 ``ETHTOOL_A_CHANNELS_TX_COUNT`` u32 transmit channel count 870 ``ETHTOOL_A_CHANNELS_OTHER_COUNT`` u32 other channel count 871 ``ETHTOOL_A_CHANNELS_COMBINED_COUNT`` u32 combined channel count 872 ===================================== ====== ========================== 873 874 875CHANNELS_SET 876============ 877 878Sets channel counts like ``ETHTOOL_SCHANNELS`` ioctl request. 879 880Request contents: 881 882 ===================================== ====== ========================== 883 ``ETHTOOL_A_CHANNELS_HEADER`` nested request header 884 ``ETHTOOL_A_CHANNELS_RX_COUNT`` u32 receive channel count 885 ``ETHTOOL_A_CHANNELS_TX_COUNT`` u32 transmit channel count 886 ``ETHTOOL_A_CHANNELS_OTHER_COUNT`` u32 other channel count 887 ``ETHTOOL_A_CHANNELS_COMBINED_COUNT`` u32 combined channel count 888 ===================================== ====== ========================== 889 890Kernel checks that requested channel counts do not exceed limits reported by 891driver. Driver may impose additional constraints and may not suspport all 892attributes. 893 894 895COALESCE_GET 896============ 897 898Gets coalescing parameters like ``ETHTOOL_GCOALESCE`` ioctl request. 899 900Request contents: 901 902 ==================================== ====== ========================== 903 ``ETHTOOL_A_COALESCE_HEADER`` nested request header 904 ==================================== ====== ========================== 905 906Kernel response contents: 907 908 =========================================== ====== ======================= 909 ``ETHTOOL_A_COALESCE_HEADER`` nested reply header 910 ``ETHTOOL_A_COALESCE_RX_USECS`` u32 delay (us), normal Rx 911 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES`` u32 max packets, normal Rx 912 ``ETHTOOL_A_COALESCE_RX_USECS_IRQ`` u32 delay (us), Rx in IRQ 913 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ`` u32 max packets, Rx in IRQ 914 ``ETHTOOL_A_COALESCE_TX_USECS`` u32 delay (us), normal Tx 915 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES`` u32 max packets, normal Tx 916 ``ETHTOOL_A_COALESCE_TX_USECS_IRQ`` u32 delay (us), Tx in IRQ 917 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ`` u32 IRQ packets, Tx in IRQ 918 ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS`` u32 delay of stats update 919 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX`` bool adaptive Rx coalesce 920 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX`` bool adaptive Tx coalesce 921 ``ETHTOOL_A_COALESCE_PKT_RATE_LOW`` u32 threshold for low rate 922 ``ETHTOOL_A_COALESCE_RX_USECS_LOW`` u32 delay (us), low Rx 923 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW`` u32 max packets, low Rx 924 ``ETHTOOL_A_COALESCE_TX_USECS_LOW`` u32 delay (us), low Tx 925 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW`` u32 max packets, low Tx 926 ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH`` u32 threshold for high rate 927 ``ETHTOOL_A_COALESCE_RX_USECS_HIGH`` u32 delay (us), high Rx 928 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH`` u32 max packets, high Rx 929 ``ETHTOOL_A_COALESCE_TX_USECS_HIGH`` u32 delay (us), high Tx 930 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH`` u32 max packets, high Tx 931 ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL`` u32 rate sampling interval 932 =========================================== ====== ======================= 933 934Attributes are only included in reply if their value is not zero or the 935corresponding bit in ``ethtool_ops::supported_coalesce_params`` is set (i.e. 936they are declared as supported by driver). 937 938 939COALESCE_SET 940============ 941 942Sets coalescing parameters like ``ETHTOOL_SCOALESCE`` ioctl request. 943 944Request contents: 945 946 =========================================== ====== ======================= 947 ``ETHTOOL_A_COALESCE_HEADER`` nested request header 948 ``ETHTOOL_A_COALESCE_RX_USECS`` u32 delay (us), normal Rx 949 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES`` u32 max packets, normal Rx 950 ``ETHTOOL_A_COALESCE_RX_USECS_IRQ`` u32 delay (us), Rx in IRQ 951 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ`` u32 max packets, Rx in IRQ 952 ``ETHTOOL_A_COALESCE_TX_USECS`` u32 delay (us), normal Tx 953 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES`` u32 max packets, normal Tx 954 ``ETHTOOL_A_COALESCE_TX_USECS_IRQ`` u32 delay (us), Tx in IRQ 955 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ`` u32 IRQ packets, Tx in IRQ 956 ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS`` u32 delay of stats update 957 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX`` bool adaptive Rx coalesce 958 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX`` bool adaptive Tx coalesce 959 ``ETHTOOL_A_COALESCE_PKT_RATE_LOW`` u32 threshold for low rate 960 ``ETHTOOL_A_COALESCE_RX_USECS_LOW`` u32 delay (us), low Rx 961 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW`` u32 max packets, low Rx 962 ``ETHTOOL_A_COALESCE_TX_USECS_LOW`` u32 delay (us), low Tx 963 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW`` u32 max packets, low Tx 964 ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH`` u32 threshold for high rate 965 ``ETHTOOL_A_COALESCE_RX_USECS_HIGH`` u32 delay (us), high Rx 966 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH`` u32 max packets, high Rx 967 ``ETHTOOL_A_COALESCE_TX_USECS_HIGH`` u32 delay (us), high Tx 968 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH`` u32 max packets, high Tx 969 ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL`` u32 rate sampling interval 970 =========================================== ====== ======================= 971 972Request is rejected if it attributes declared as unsupported by driver (i.e. 973such that the corresponding bit in ``ethtool_ops::supported_coalesce_params`` 974is not set), regardless of their values. Driver may impose additional 975constraints on coalescing parameters and their values. 976 977 978PAUSE_GET 979============ 980 981Gets channel counts like ``ETHTOOL_GPAUSE`` ioctl request. 982 983Request contents: 984 985 ===================================== ====== ========================== 986 ``ETHTOOL_A_PAUSE_HEADER`` nested request header 987 ===================================== ====== ========================== 988 989Kernel response contents: 990 991 ===================================== ====== ========================== 992 ``ETHTOOL_A_PAUSE_HEADER`` nested request header 993 ``ETHTOOL_A_PAUSE_AUTONEG`` bool pause autonegotiation 994 ``ETHTOOL_A_PAUSE_RX`` bool receive pause frames 995 ``ETHTOOL_A_PAUSE_TX`` bool transmit pause frames 996 ``ETHTOOL_A_PAUSE_STATS`` nested pause statistics 997 ===================================== ====== ========================== 998 999``ETHTOOL_A_PAUSE_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set 1000in ``ETHTOOL_A_HEADER_FLAGS``. 1001It will be empty if driver did not report any statistics. Drivers fill in 1002the statistics in the following structure: 1003 1004.. kernel-doc:: include/linux/ethtool.h 1005 :identifiers: ethtool_pause_stats 1006 1007Each member has a corresponding attribute defined. 1008 1009PAUSE_SET 1010============ 1011 1012Sets pause parameters like ``ETHTOOL_GPAUSEPARAM`` ioctl request. 1013 1014Request contents: 1015 1016 ===================================== ====== ========================== 1017 ``ETHTOOL_A_PAUSE_HEADER`` nested request header 1018 ``ETHTOOL_A_PAUSE_AUTONEG`` bool pause autonegotiation 1019 ``ETHTOOL_A_PAUSE_RX`` bool receive pause frames 1020 ``ETHTOOL_A_PAUSE_TX`` bool transmit pause frames 1021 ===================================== ====== ========================== 1022 1023 1024EEE_GET 1025======= 1026 1027Gets channel counts like ``ETHTOOL_GEEE`` ioctl request. 1028 1029Request contents: 1030 1031 ===================================== ====== ========================== 1032 ``ETHTOOL_A_EEE_HEADER`` nested request header 1033 ===================================== ====== ========================== 1034 1035Kernel response contents: 1036 1037 ===================================== ====== ========================== 1038 ``ETHTOOL_A_EEE_HEADER`` nested request header 1039 ``ETHTOOL_A_EEE_MODES_OURS`` bool supported/advertised modes 1040 ``ETHTOOL_A_EEE_MODES_PEER`` bool peer advertised link modes 1041 ``ETHTOOL_A_EEE_ACTIVE`` bool EEE is actively used 1042 ``ETHTOOL_A_EEE_ENABLED`` bool EEE is enabled 1043 ``ETHTOOL_A_EEE_TX_LPI_ENABLED`` bool Tx lpi enabled 1044 ``ETHTOOL_A_EEE_TX_LPI_TIMER`` u32 Tx lpi timeout (in us) 1045 ===================================== ====== ========================== 1046 1047In ``ETHTOOL_A_EEE_MODES_OURS``, mask consists of link modes for which EEE is 1048enabled, value of link modes for which EEE is advertised. Link modes for which 1049peer advertises EEE are listed in ``ETHTOOL_A_EEE_MODES_PEER`` (no mask). The 1050netlink interface allows reporting EEE status for all link modes but only 1051first 32 are provided by the ``ethtool_ops`` callback. 1052 1053 1054EEE_SET 1055======= 1056 1057Sets pause parameters like ``ETHTOOL_GEEEPARAM`` ioctl request. 1058 1059Request contents: 1060 1061 ===================================== ====== ========================== 1062 ``ETHTOOL_A_EEE_HEADER`` nested request header 1063 ``ETHTOOL_A_EEE_MODES_OURS`` bool advertised modes 1064 ``ETHTOOL_A_EEE_ENABLED`` bool EEE is enabled 1065 ``ETHTOOL_A_EEE_TX_LPI_ENABLED`` bool Tx lpi enabled 1066 ``ETHTOOL_A_EEE_TX_LPI_TIMER`` u32 Tx lpi timeout (in us) 1067 ===================================== ====== ========================== 1068 1069``ETHTOOL_A_EEE_MODES_OURS`` is used to either list link modes to advertise 1070EEE for (if there is no mask) or specify changes to the list (if there is 1071a mask). The netlink interface allows reporting EEE status for all link modes 1072but only first 32 can be set at the moment as that is what the ``ethtool_ops`` 1073callback supports. 1074 1075 1076TSINFO_GET 1077========== 1078 1079Gets timestamping information like ``ETHTOOL_GET_TS_INFO`` ioctl request. 1080 1081Request contents: 1082 1083 ===================================== ====== ========================== 1084 ``ETHTOOL_A_TSINFO_HEADER`` nested request header 1085 ===================================== ====== ========================== 1086 1087Kernel response contents: 1088 1089 ===================================== ====== ========================== 1090 ``ETHTOOL_A_TSINFO_HEADER`` nested request header 1091 ``ETHTOOL_A_TSINFO_TIMESTAMPING`` bitset SO_TIMESTAMPING flags 1092 ``ETHTOOL_A_TSINFO_TX_TYPES`` bitset supported Tx types 1093 ``ETHTOOL_A_TSINFO_RX_FILTERS`` bitset supported Rx filters 1094 ``ETHTOOL_A_TSINFO_PHC_INDEX`` u32 PTP hw clock index 1095 ===================================== ====== ========================== 1096 1097``ETHTOOL_A_TSINFO_PHC_INDEX`` is absent if there is no associated PHC (there 1098is no special value for this case). The bitset attributes are omitted if they 1099would be empty (no bit set). 1100 1101CABLE_TEST 1102========== 1103 1104Start a cable test. 1105 1106Request contents: 1107 1108 ==================================== ====== ========================== 1109 ``ETHTOOL_A_CABLE_TEST_HEADER`` nested request header 1110 ==================================== ====== ========================== 1111 1112Notification contents: 1113 1114An Ethernet cable typically contains 1, 2 or 4 pairs. The length of 1115the pair can only be measured when there is a fault in the pair and 1116hence a reflection. Information about the fault may not be available, 1117depending on the specific hardware. Hence the contents of the notify 1118message are mostly optional. The attributes can be repeated an 1119arbitrary number of times, in an arbitrary order, for an arbitrary 1120number of pairs. 1121 1122The example shows the notification sent when the test is completed for 1123a T2 cable, i.e. two pairs. One pair is OK and hence has no length 1124information. The second pair has a fault and does have length 1125information. 1126 1127 +---------------------------------------------+--------+---------------------+ 1128 | ``ETHTOOL_A_CABLE_TEST_HEADER`` | nested | reply header | 1129 +---------------------------------------------+--------+---------------------+ 1130 | ``ETHTOOL_A_CABLE_TEST_STATUS`` | u8 | completed | 1131 +---------------------------------------------+--------+---------------------+ 1132 | ``ETHTOOL_A_CABLE_TEST_NTF_NEST`` | nested | all the results | 1133 +-+-------------------------------------------+--------+---------------------+ 1134 | | ``ETHTOOL_A_CABLE_NEST_RESULT`` | nested | cable test result | 1135 +-+-+-----------------------------------------+--------+---------------------+ 1136 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1137 +-+-+-----------------------------------------+--------+---------------------+ 1138 | | | ``ETHTOOL_A_CABLE_RESULTS_CODE`` | u8 | result code | 1139 +-+-+-----------------------------------------+--------+---------------------+ 1140 | | ``ETHTOOL_A_CABLE_NEST_RESULT`` | nested | cable test results | 1141 +-+-+-----------------------------------------+--------+---------------------+ 1142 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1143 +-+-+-----------------------------------------+--------+---------------------+ 1144 | | | ``ETHTOOL_A_CABLE_RESULTS_CODE`` | u8 | result code | 1145 +-+-+-----------------------------------------+--------+---------------------+ 1146 | | ``ETHTOOL_A_CABLE_NEST_FAULT_LENGTH`` | nested | cable length | 1147 +-+-+-----------------------------------------+--------+---------------------+ 1148 | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR`` | u8 | pair number | 1149 +-+-+-----------------------------------------+--------+---------------------+ 1150 | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_CM`` | u32 | length in cm | 1151 +-+-+-----------------------------------------+--------+---------------------+ 1152 1153CABLE_TEST TDR 1154============== 1155 1156Start a cable test and report raw TDR data 1157 1158Request contents: 1159 1160 +--------------------------------------------+--------+-----------------------+ 1161 | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER`` | nested | reply header | 1162 +--------------------------------------------+--------+-----------------------+ 1163 | ``ETHTOOL_A_CABLE_TEST_TDR_CFG`` | nested | test configuration | 1164 +-+------------------------------------------+--------+-----------------------+ 1165 | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE`` | u32 | first data distance | 1166 +-+-+----------------------------------------+--------+-----------------------+ 1167 | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE`` | u32 | last data distance | 1168 +-+-+----------------------------------------+--------+-----------------------+ 1169 | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE`` | u32 | distance of each step | 1170 +-+-+----------------------------------------+--------+-----------------------+ 1171 | | ``ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR`` | u8 | pair to test | 1172 +-+-+----------------------------------------+--------+-----------------------+ 1173 1174The ETHTOOL_A_CABLE_TEST_TDR_CFG is optional, as well as all members 1175of the nest. All distances are expressed in centimeters. The PHY takes 1176the distances as a guide, and rounds to the nearest distance it 1177actually supports. If a pair is passed, only that one pair will be 1178tested. Otherwise all pairs are tested. 1179 1180Notification contents: 1181 1182Raw TDR data is gathered by sending a pulse down the cable and 1183recording the amplitude of the reflected pulse for a given distance. 1184 1185It can take a number of seconds to collect TDR data, especial if the 1186full 100 meters is probed at 1 meter intervals. When the test is 1187started a notification will be sent containing just 1188ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value 1189ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED. 1190 1191When the test has completed a second notification will be sent 1192containing ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value 1193ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED and the TDR data. 1194 1195The message may optionally contain the amplitude of the pulse send 1196down the cable. This is measured in mV. A reflection should not be 1197bigger than transmitted pulse. 1198 1199Before the raw TDR data should be an ETHTOOL_A_CABLE_TDR_NEST_STEP 1200nest containing information about the distance along the cable for the 1201first reading, the last reading, and the step between each 1202reading. Distances are measured in centimeters. These should be the 1203exact values the PHY used. These may be different to what the user 1204requested, if the native measurement resolution is greater than 1 cm. 1205 1206For each step along the cable, a ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE is 1207used to report the amplitude of the reflection for a given pair. 1208 1209 +---------------------------------------------+--------+----------------------+ 1210 | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER`` | nested | reply header | 1211 +---------------------------------------------+--------+----------------------+ 1212 | ``ETHTOOL_A_CABLE_TEST_TDR_STATUS`` | u8 | completed | 1213 +---------------------------------------------+--------+----------------------+ 1214 | ``ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST`` | nested | all the results | 1215 +-+-------------------------------------------+--------+----------------------+ 1216 | | ``ETHTOOL_A_CABLE_TDR_NEST_PULSE`` | nested | TX Pulse amplitude | 1217 +-+-+-----------------------------------------+--------+----------------------+ 1218 | | | ``ETHTOOL_A_CABLE_PULSE_mV`` | s16 | Pulse amplitude | 1219 +-+-+-----------------------------------------+--------+----------------------+ 1220 | | ``ETHTOOL_A_CABLE_NEST_STEP`` | nested | TDR step info | 1221 +-+-+-----------------------------------------+--------+----------------------+ 1222 | | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE`` | u32 | First data distance | 1223 +-+-+-----------------------------------------+--------+----------------------+ 1224 | | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE`` | u32 | Last data distance | 1225 +-+-+-----------------------------------------+--------+----------------------+ 1226 | | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE`` | u32 | distance of each step| 1227 +-+-+-----------------------------------------+--------+----------------------+ 1228 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE`` | nested | Reflection amplitude | 1229 +-+-+-----------------------------------------+--------+----------------------+ 1230 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1231 +-+-+-----------------------------------------+--------+----------------------+ 1232 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV`` | s16 | Reflection amplitude | 1233 +-+-+-----------------------------------------+--------+----------------------+ 1234 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE`` | nested | Reflection amplitude | 1235 +-+-+-----------------------------------------+--------+----------------------+ 1236 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1237 +-+-+-----------------------------------------+--------+----------------------+ 1238 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV`` | s16 | Reflection amplitude | 1239 +-+-+-----------------------------------------+--------+----------------------+ 1240 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE`` | nested | Reflection amplitude | 1241 +-+-+-----------------------------------------+--------+----------------------+ 1242 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1243 +-+-+-----------------------------------------+--------+----------------------+ 1244 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV`` | s16 | Reflection amplitude | 1245 +-+-+-----------------------------------------+--------+----------------------+ 1246 1247TUNNEL_INFO 1248=========== 1249 1250Gets information about the tunnel state NIC is aware of. 1251 1252Request contents: 1253 1254 ===================================== ====== ========================== 1255 ``ETHTOOL_A_TUNNEL_INFO_HEADER`` nested request header 1256 ===================================== ====== ========================== 1257 1258Kernel response contents: 1259 1260 +---------------------------------------------+--------+---------------------+ 1261 | ``ETHTOOL_A_TUNNEL_INFO_HEADER`` | nested | reply header | 1262 +---------------------------------------------+--------+---------------------+ 1263 | ``ETHTOOL_A_TUNNEL_INFO_UDP_PORTS`` | nested | all UDP port tables | 1264 +-+-------------------------------------------+--------+---------------------+ 1265 | | ``ETHTOOL_A_TUNNEL_UDP_TABLE`` | nested | one UDP port table | 1266 +-+-+-----------------------------------------+--------+---------------------+ 1267 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE`` | u32 | max size of the | 1268 | | | | | table | 1269 +-+-+-----------------------------------------+--------+---------------------+ 1270 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES`` | bitset | tunnel types which | 1271 | | | | | table can hold | 1272 +-+-+-----------------------------------------+--------+---------------------+ 1273 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY`` | nested | offloaded UDP port | 1274 +-+-+-+---------------------------------------+--------+---------------------+ 1275 | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT`` | be16 | UDP port | 1276 +-+-+-+---------------------------------------+--------+---------------------+ 1277 | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE`` | u32 | tunnel type | 1278 +-+-+-+---------------------------------------+--------+---------------------+ 1279 1280For UDP tunnel table empty ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES`` indicates that 1281the table contains static entries, hard-coded by the NIC. 1282 1283Request translation 1284=================== 1285 1286The following table maps ioctl commands to netlink commands providing their 1287functionality. Entries with "n/a" in right column are commands which do not 1288have their netlink replacement yet. Entries which "n/a" in the left column 1289are netlink only. 1290 1291 =================================== ===================================== 1292 ioctl command netlink command 1293 =================================== ===================================== 1294 ``ETHTOOL_GSET`` ``ETHTOOL_MSG_LINKINFO_GET`` 1295 ``ETHTOOL_MSG_LINKMODES_GET`` 1296 ``ETHTOOL_SSET`` ``ETHTOOL_MSG_LINKINFO_SET`` 1297 ``ETHTOOL_MSG_LINKMODES_SET`` 1298 ``ETHTOOL_GDRVINFO`` n/a 1299 ``ETHTOOL_GREGS`` n/a 1300 ``ETHTOOL_GWOL`` ``ETHTOOL_MSG_WOL_GET`` 1301 ``ETHTOOL_SWOL`` ``ETHTOOL_MSG_WOL_SET`` 1302 ``ETHTOOL_GMSGLVL`` ``ETHTOOL_MSG_DEBUG_GET`` 1303 ``ETHTOOL_SMSGLVL`` ``ETHTOOL_MSG_DEBUG_SET`` 1304 ``ETHTOOL_NWAY_RST`` n/a 1305 ``ETHTOOL_GLINK`` ``ETHTOOL_MSG_LINKSTATE_GET`` 1306 ``ETHTOOL_GEEPROM`` n/a 1307 ``ETHTOOL_SEEPROM`` n/a 1308 ``ETHTOOL_GCOALESCE`` ``ETHTOOL_MSG_COALESCE_GET`` 1309 ``ETHTOOL_SCOALESCE`` ``ETHTOOL_MSG_COALESCE_SET`` 1310 ``ETHTOOL_GRINGPARAM`` ``ETHTOOL_MSG_RINGS_GET`` 1311 ``ETHTOOL_SRINGPARAM`` ``ETHTOOL_MSG_RINGS_SET`` 1312 ``ETHTOOL_GPAUSEPARAM`` ``ETHTOOL_MSG_PAUSE_GET`` 1313 ``ETHTOOL_SPAUSEPARAM`` ``ETHTOOL_MSG_PAUSE_SET`` 1314 ``ETHTOOL_GRXCSUM`` ``ETHTOOL_MSG_FEATURES_GET`` 1315 ``ETHTOOL_SRXCSUM`` ``ETHTOOL_MSG_FEATURES_SET`` 1316 ``ETHTOOL_GTXCSUM`` ``ETHTOOL_MSG_FEATURES_GET`` 1317 ``ETHTOOL_STXCSUM`` ``ETHTOOL_MSG_FEATURES_SET`` 1318 ``ETHTOOL_GSG`` ``ETHTOOL_MSG_FEATURES_GET`` 1319 ``ETHTOOL_SSG`` ``ETHTOOL_MSG_FEATURES_SET`` 1320 ``ETHTOOL_TEST`` n/a 1321 ``ETHTOOL_GSTRINGS`` ``ETHTOOL_MSG_STRSET_GET`` 1322 ``ETHTOOL_PHYS_ID`` n/a 1323 ``ETHTOOL_GSTATS`` n/a 1324 ``ETHTOOL_GTSO`` ``ETHTOOL_MSG_FEATURES_GET`` 1325 ``ETHTOOL_STSO`` ``ETHTOOL_MSG_FEATURES_SET`` 1326 ``ETHTOOL_GPERMADDR`` rtnetlink ``RTM_GETLINK`` 1327 ``ETHTOOL_GUFO`` ``ETHTOOL_MSG_FEATURES_GET`` 1328 ``ETHTOOL_SUFO`` ``ETHTOOL_MSG_FEATURES_SET`` 1329 ``ETHTOOL_GGSO`` ``ETHTOOL_MSG_FEATURES_GET`` 1330 ``ETHTOOL_SGSO`` ``ETHTOOL_MSG_FEATURES_SET`` 1331 ``ETHTOOL_GFLAGS`` ``ETHTOOL_MSG_FEATURES_GET`` 1332 ``ETHTOOL_SFLAGS`` ``ETHTOOL_MSG_FEATURES_SET`` 1333 ``ETHTOOL_GPFLAGS`` ``ETHTOOL_MSG_PRIVFLAGS_GET`` 1334 ``ETHTOOL_SPFLAGS`` ``ETHTOOL_MSG_PRIVFLAGS_SET`` 1335 ``ETHTOOL_GRXFH`` n/a 1336 ``ETHTOOL_SRXFH`` n/a 1337 ``ETHTOOL_GGRO`` ``ETHTOOL_MSG_FEATURES_GET`` 1338 ``ETHTOOL_SGRO`` ``ETHTOOL_MSG_FEATURES_SET`` 1339 ``ETHTOOL_GRXRINGS`` n/a 1340 ``ETHTOOL_GRXCLSRLCNT`` n/a 1341 ``ETHTOOL_GRXCLSRULE`` n/a 1342 ``ETHTOOL_GRXCLSRLALL`` n/a 1343 ``ETHTOOL_SRXCLSRLDEL`` n/a 1344 ``ETHTOOL_SRXCLSRLINS`` n/a 1345 ``ETHTOOL_FLASHDEV`` n/a 1346 ``ETHTOOL_RESET`` n/a 1347 ``ETHTOOL_SRXNTUPLE`` n/a 1348 ``ETHTOOL_GRXNTUPLE`` n/a 1349 ``ETHTOOL_GSSET_INFO`` ``ETHTOOL_MSG_STRSET_GET`` 1350 ``ETHTOOL_GRXFHINDIR`` n/a 1351 ``ETHTOOL_SRXFHINDIR`` n/a 1352 ``ETHTOOL_GFEATURES`` ``ETHTOOL_MSG_FEATURES_GET`` 1353 ``ETHTOOL_SFEATURES`` ``ETHTOOL_MSG_FEATURES_SET`` 1354 ``ETHTOOL_GCHANNELS`` ``ETHTOOL_MSG_CHANNELS_GET`` 1355 ``ETHTOOL_SCHANNELS`` ``ETHTOOL_MSG_CHANNELS_SET`` 1356 ``ETHTOOL_SET_DUMP`` n/a 1357 ``ETHTOOL_GET_DUMP_FLAG`` n/a 1358 ``ETHTOOL_GET_DUMP_DATA`` n/a 1359 ``ETHTOOL_GET_TS_INFO`` ``ETHTOOL_MSG_TSINFO_GET`` 1360 ``ETHTOOL_GMODULEINFO`` n/a 1361 ``ETHTOOL_GMODULEEEPROM`` n/a 1362 ``ETHTOOL_GEEE`` ``ETHTOOL_MSG_EEE_GET`` 1363 ``ETHTOOL_SEEE`` ``ETHTOOL_MSG_EEE_SET`` 1364 ``ETHTOOL_GRSSH`` n/a 1365 ``ETHTOOL_SRSSH`` n/a 1366 ``ETHTOOL_GTUNABLE`` n/a 1367 ``ETHTOOL_STUNABLE`` n/a 1368 ``ETHTOOL_GPHYSTATS`` n/a 1369 ``ETHTOOL_PERQUEUE`` n/a 1370 ``ETHTOOL_GLINKSETTINGS`` ``ETHTOOL_MSG_LINKINFO_GET`` 1371 ``ETHTOOL_MSG_LINKMODES_GET`` 1372 ``ETHTOOL_SLINKSETTINGS`` ``ETHTOOL_MSG_LINKINFO_SET`` 1373 ``ETHTOOL_MSG_LINKMODES_SET`` 1374 ``ETHTOOL_PHY_GTUNABLE`` n/a 1375 ``ETHTOOL_PHY_STUNABLE`` n/a 1376 ``ETHTOOL_GFECPARAM`` n/a 1377 ``ETHTOOL_SFECPARAM`` n/a 1378 n/a ''ETHTOOL_MSG_CABLE_TEST_ACT'' 1379 n/a ''ETHTOOL_MSG_CABLE_TEST_TDR_ACT'' 1380 n/a ``ETHTOOL_MSG_TUNNEL_INFO_GET`` 1381 =================================== ===================================== 1382