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 ========================================== ====== ========================== 435 436``ETHTOOL_A_LINKMODES_OURS`` bit set allows setting advertised link modes. If 437autonegotiation is on (either set now or kept from before), advertised modes 438are not changed (no ``ETHTOOL_A_LINKMODES_OURS`` attribute) and at least one 439of speed and duplex is specified, kernel adjusts advertised modes to all 440supported modes matching speed, duplex or both (whatever is specified). This 441autoselection is done on ethtool side with ioctl interface, netlink interface 442is supposed to allow requesting changes without knowing what exactly kernel 443supports. 444 445 446LINKSTATE_GET 447============= 448 449Requests link state information. Link up/down flag (as provided by 450``ETHTOOL_GLINK`` ioctl command) is provided. Optionally, extended state might 451be provided as well. In general, extended state describes reasons for why a port 452is down, or why it operates in some non-obvious mode. This request does not have 453any attributes. 454 455Request contents: 456 457 ==================================== ====== ========================== 458 ``ETHTOOL_A_LINKSTATE_HEADER`` nested request header 459 ==================================== ====== ========================== 460 461Kernel response contents: 462 463 ==================================== ====== ============================ 464 ``ETHTOOL_A_LINKSTATE_HEADER`` nested reply header 465 ``ETHTOOL_A_LINKSTATE_LINK`` bool link state (up/down) 466 ``ETHTOOL_A_LINKSTATE_SQI`` u32 Current Signal Quality Index 467 ``ETHTOOL_A_LINKSTATE_SQI_MAX`` u32 Max support SQI value 468 ``ETHTOOL_A_LINKSTATE_EXT_STATE`` u8 link extended state 469 ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE`` u8 link extended substate 470 ==================================== ====== ============================ 471 472For most NIC drivers, the value of ``ETHTOOL_A_LINKSTATE_LINK`` returns 473carrier flag provided by ``netif_carrier_ok()`` but there are drivers which 474define their own handler. 475 476``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE`` are 477optional values. ethtool core can provide either both 478``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``, 479or only ``ETHTOOL_A_LINKSTATE_EXT_STATE``, or none of them. 480 481``LINKSTATE_GET`` allows dump requests (kernel returns reply messages for all 482devices supporting the request). 483 484 485Link extended states: 486 487 ================================================ ============================================ 488 ``ETHTOOL_LINK_EXT_STATE_AUTONEG`` States relating to the autonegotiation or 489 issues therein 490 491 ``ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE`` Failure during link training 492 493 ``ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH`` Logical mismatch in physical coding sublayer 494 or forward error correction sublayer 495 496 ``ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY`` Signal integrity issues 497 498 ``ETHTOOL_LINK_EXT_STATE_NO_CABLE`` No cable connected 499 500 ``ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE`` Failure is related to cable, 501 e.g., unsupported cable 502 503 ``ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE`` Failure is related to EEPROM, e.g., failure 504 during reading or parsing the data 505 506 ``ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE`` Failure during calibration algorithm 507 508 ``ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED`` The hardware is not able to provide the 509 power required from cable or module 510 511 ``ETHTOOL_LINK_EXT_STATE_OVERHEAT`` The module is overheated 512 ================================================ ============================================ 513 514Link extended substates: 515 516 Autoneg substates: 517 518 =============================================================== ================================ 519 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED`` Peer side is down 520 521 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED`` Ack not received from peer side 522 523 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED`` Next page exchange failed 524 525 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE`` Peer side is down during force 526 mode or there is no agreement of 527 speed 528 529 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE`` Forward error correction modes 530 in both sides are mismatched 531 532 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD`` No Highest Common Denominator 533 =============================================================== ================================ 534 535 Link training substates: 536 537 =========================================================================== ==================== 538 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED`` Frames were not 539 recognized, the 540 lock failed 541 542 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT`` The lock did not 543 occur before 544 timeout 545 546 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY`` Peer side did not 547 send ready signal 548 after training 549 process 550 551 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT`` Remote side is not 552 ready yet 553 =========================================================================== ==================== 554 555 Link logical mismatch substates: 556 557 ================================================================ =============================== 558 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK`` Physical coding sublayer was 559 not locked in first phase - 560 block lock 561 562 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK`` Physical coding sublayer was 563 not locked in second phase - 564 alignment markers lock 565 566 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS`` Physical coding sublayer did 567 not get align status 568 569 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED`` FC forward error correction is 570 not locked 571 572 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED`` RS forward error correction is 573 not locked 574 ================================================================ =============================== 575 576 Bad signal integrity substates: 577 578 ================================================================= ============================= 579 ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS`` Large number of physical 580 errors 581 582 ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE`` The system attempted to 583 operate the cable at a rate 584 that is not formally 585 supported, which led to 586 signal integrity issues 587 ================================================================= ============================= 588 589 Cable issue substates: 590 591 =================================================== ============================================ 592 ``ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE`` Unsupported cable 593 594 ``ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE`` Cable test failure 595 =================================================== ============================================ 596 597DEBUG_GET 598========= 599 600Requests debugging settings of a device. At the moment, only message mask is 601provided. 602 603Request contents: 604 605 ==================================== ====== ========================== 606 ``ETHTOOL_A_DEBUG_HEADER`` nested request header 607 ==================================== ====== ========================== 608 609Kernel response contents: 610 611 ==================================== ====== ========================== 612 ``ETHTOOL_A_DEBUG_HEADER`` nested reply header 613 ``ETHTOOL_A_DEBUG_MSGMASK`` bitset message mask 614 ==================================== ====== ========================== 615 616The message mask (``ETHTOOL_A_DEBUG_MSGMASK``) is equal to message level as 617provided by ``ETHTOOL_GMSGLVL`` and set by ``ETHTOOL_SMSGLVL`` in ioctl 618interface. While it is called message level there for historical reasons, most 619drivers and almost all newer drivers use it as a mask of enabled message 620classes (represented by ``NETIF_MSG_*`` constants); therefore netlink 621interface follows its actual use in practice. 622 623``DEBUG_GET`` allows dump requests (kernel returns reply messages for all 624devices supporting the request). 625 626 627DEBUG_SET 628========= 629 630Set or update debugging settings of a device. At the moment, only message mask 631is supported. 632 633Request contents: 634 635 ==================================== ====== ========================== 636 ``ETHTOOL_A_DEBUG_HEADER`` nested request header 637 ``ETHTOOL_A_DEBUG_MSGMASK`` bitset message mask 638 ==================================== ====== ========================== 639 640``ETHTOOL_A_DEBUG_MSGMASK`` bit set allows setting or modifying mask of 641enabled debugging message types for the device. 642 643 644WOL_GET 645======= 646 647Query device wake-on-lan settings. Unlike most "GET" type requests, 648``ETHTOOL_MSG_WOL_GET`` requires (netns) ``CAP_NET_ADMIN`` privileges as it 649(potentially) provides SecureOn(tm) password which is confidential. 650 651Request contents: 652 653 ==================================== ====== ========================== 654 ``ETHTOOL_A_WOL_HEADER`` nested request header 655 ==================================== ====== ========================== 656 657Kernel response contents: 658 659 ==================================== ====== ========================== 660 ``ETHTOOL_A_WOL_HEADER`` nested reply header 661 ``ETHTOOL_A_WOL_MODES`` bitset mask of enabled WoL modes 662 ``ETHTOOL_A_WOL_SOPASS`` binary SecureOn(tm) password 663 ==================================== ====== ========================== 664 665In reply, ``ETHTOOL_A_WOL_MODES`` mask consists of modes supported by the 666device, value of modes which are enabled. ``ETHTOOL_A_WOL_SOPASS`` is only 667included in reply if ``WAKE_MAGICSECURE`` mode is supported. 668 669 670WOL_SET 671======= 672 673Set or update wake-on-lan settings. 674 675Request contents: 676 677 ==================================== ====== ========================== 678 ``ETHTOOL_A_WOL_HEADER`` nested request header 679 ``ETHTOOL_A_WOL_MODES`` bitset enabled WoL modes 680 ``ETHTOOL_A_WOL_SOPASS`` binary SecureOn(tm) password 681 ==================================== ====== ========================== 682 683``ETHTOOL_A_WOL_SOPASS`` is only allowed for devices supporting 684``WAKE_MAGICSECURE`` mode. 685 686 687FEATURES_GET 688============ 689 690Gets netdev features like ``ETHTOOL_GFEATURES`` ioctl request. 691 692Request contents: 693 694 ==================================== ====== ========================== 695 ``ETHTOOL_A_FEATURES_HEADER`` nested request header 696 ==================================== ====== ========================== 697 698Kernel response contents: 699 700 ==================================== ====== ========================== 701 ``ETHTOOL_A_FEATURES_HEADER`` nested reply header 702 ``ETHTOOL_A_FEATURES_HW`` bitset dev->hw_features 703 ``ETHTOOL_A_FEATURES_WANTED`` bitset dev->wanted_features 704 ``ETHTOOL_A_FEATURES_ACTIVE`` bitset dev->features 705 ``ETHTOOL_A_FEATURES_NOCHANGE`` bitset NETIF_F_NEVER_CHANGE 706 ==================================== ====== ========================== 707 708Bitmaps in kernel response have the same meaning as bitmaps used in ioctl 709interference but attribute names are different (they are based on 710corresponding members of struct net_device). Legacy "flags" are not provided, 711if userspace needs them (most likely only ethtool for backward compatibility), 712it can calculate their values from related feature bits itself. 713ETHA_FEATURES_HW uses mask consisting of all features recognized by kernel (to 714provide all names when using verbose bitmap format), the other three use no 715mask (simple bit lists). 716 717 718FEATURES_SET 719============ 720 721Request to set netdev features like ``ETHTOOL_SFEATURES`` ioctl request. 722 723Request contents: 724 725 ==================================== ====== ========================== 726 ``ETHTOOL_A_FEATURES_HEADER`` nested request header 727 ``ETHTOOL_A_FEATURES_WANTED`` bitset requested features 728 ==================================== ====== ========================== 729 730Kernel response contents: 731 732 ==================================== ====== ========================== 733 ``ETHTOOL_A_FEATURES_HEADER`` nested reply header 734 ``ETHTOOL_A_FEATURES_WANTED`` bitset diff wanted vs. result 735 ``ETHTOOL_A_FEATURES_ACTIVE`` bitset diff old vs. new active 736 ==================================== ====== ========================== 737 738Request constains only one bitset which can be either value/mask pair (request 739to change specific feature bits and leave the rest) or only a value (request 740to set all features to specified set). 741 742As request is subject to netdev_change_features() sanity checks, optional 743kernel reply (can be suppressed by ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request 744header) informs client about the actual result. ``ETHTOOL_A_FEATURES_WANTED`` 745reports the difference between client request and actual result: mask consists 746of bits which differ between requested features and result (dev->features 747after the operation), value consists of values of these bits in the request 748(i.e. negated values from resulting features). ``ETHTOOL_A_FEATURES_ACTIVE`` 749reports the difference between old and new dev->features: mask consists of 750bits which have changed, values are their values in new dev->features (after 751the operation). 752 753``ETHTOOL_MSG_FEATURES_NTF`` notification is sent not only if device features 754are modified using ``ETHTOOL_MSG_FEATURES_SET`` request or on of ethtool ioctl 755request but also each time features are modified with netdev_update_features() 756or netdev_change_features(). 757 758 759PRIVFLAGS_GET 760============= 761 762Gets private flags like ``ETHTOOL_GPFLAGS`` ioctl request. 763 764Request contents: 765 766 ==================================== ====== ========================== 767 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested request header 768 ==================================== ====== ========================== 769 770Kernel response contents: 771 772 ==================================== ====== ========================== 773 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested reply header 774 ``ETHTOOL_A_PRIVFLAGS_FLAGS`` bitset private flags 775 ==================================== ====== ========================== 776 777``ETHTOOL_A_PRIVFLAGS_FLAGS`` is a bitset with values of device private flags. 778These flags are defined by driver, their number and names (and also meaning) 779are device dependent. For compact bitset format, names can be retrieved as 780``ETH_SS_PRIV_FLAGS`` string set. If verbose bitset format is requested, 781response uses all private flags supported by the device as mask so that client 782gets the full information without having to fetch the string set with names. 783 784 785PRIVFLAGS_SET 786============= 787 788Sets or modifies values of device private flags like ``ETHTOOL_SPFLAGS`` 789ioctl request. 790 791Request contents: 792 793 ==================================== ====== ========================== 794 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested request header 795 ``ETHTOOL_A_PRIVFLAGS_FLAGS`` bitset private flags 796 ==================================== ====== ========================== 797 798``ETHTOOL_A_PRIVFLAGS_FLAGS`` can either set the whole set of private flags or 799modify only values of some of them. 800 801 802RINGS_GET 803========= 804 805Gets ring sizes like ``ETHTOOL_GRINGPARAM`` ioctl request. 806 807Request contents: 808 809 ==================================== ====== ========================== 810 ``ETHTOOL_A_RINGS_HEADER`` nested request header 811 ==================================== ====== ========================== 812 813Kernel response contents: 814 815 ==================================== ====== ========================== 816 ``ETHTOOL_A_RINGS_HEADER`` nested reply header 817 ``ETHTOOL_A_RINGS_RX_MAX`` u32 max size of RX ring 818 ``ETHTOOL_A_RINGS_RX_MINI_MAX`` u32 max size of RX mini ring 819 ``ETHTOOL_A_RINGS_RX_JUMBO_MAX`` u32 max size of RX jumbo ring 820 ``ETHTOOL_A_RINGS_TX_MAX`` u32 max size of TX ring 821 ``ETHTOOL_A_RINGS_RX`` u32 size of RX ring 822 ``ETHTOOL_A_RINGS_RX_MINI`` u32 size of RX mini ring 823 ``ETHTOOL_A_RINGS_RX_JUMBO`` u32 size of RX jumbo ring 824 ``ETHTOOL_A_RINGS_TX`` u32 size of TX ring 825 ==================================== ====== ========================== 826 827 828RINGS_SET 829========= 830 831Sets ring sizes like ``ETHTOOL_SRINGPARAM`` ioctl request. 832 833Request contents: 834 835 ==================================== ====== ========================== 836 ``ETHTOOL_A_RINGS_HEADER`` nested reply header 837 ``ETHTOOL_A_RINGS_RX`` u32 size of RX ring 838 ``ETHTOOL_A_RINGS_RX_MINI`` u32 size of RX mini ring 839 ``ETHTOOL_A_RINGS_RX_JUMBO`` u32 size of RX jumbo ring 840 ``ETHTOOL_A_RINGS_TX`` u32 size of TX ring 841 ==================================== ====== ========================== 842 843Kernel checks that requested ring sizes do not exceed limits reported by 844driver. Driver may impose additional constraints and may not suspport all 845attributes. 846 847 848CHANNELS_GET 849============ 850 851Gets channel counts like ``ETHTOOL_GCHANNELS`` ioctl request. 852 853Request contents: 854 855 ==================================== ====== ========================== 856 ``ETHTOOL_A_CHANNELS_HEADER`` nested request header 857 ==================================== ====== ========================== 858 859Kernel response contents: 860 861 ===================================== ====== ========================== 862 ``ETHTOOL_A_CHANNELS_HEADER`` nested reply header 863 ``ETHTOOL_A_CHANNELS_RX_MAX`` u32 max receive channels 864 ``ETHTOOL_A_CHANNELS_TX_MAX`` u32 max transmit channels 865 ``ETHTOOL_A_CHANNELS_OTHER_MAX`` u32 max other channels 866 ``ETHTOOL_A_CHANNELS_COMBINED_MAX`` u32 max combined channels 867 ``ETHTOOL_A_CHANNELS_RX_COUNT`` u32 receive channel count 868 ``ETHTOOL_A_CHANNELS_TX_COUNT`` u32 transmit channel count 869 ``ETHTOOL_A_CHANNELS_OTHER_COUNT`` u32 other channel count 870 ``ETHTOOL_A_CHANNELS_COMBINED_COUNT`` u32 combined channel count 871 ===================================== ====== ========================== 872 873 874CHANNELS_SET 875============ 876 877Sets channel counts like ``ETHTOOL_SCHANNELS`` ioctl request. 878 879Request contents: 880 881 ===================================== ====== ========================== 882 ``ETHTOOL_A_CHANNELS_HEADER`` nested request header 883 ``ETHTOOL_A_CHANNELS_RX_COUNT`` u32 receive channel count 884 ``ETHTOOL_A_CHANNELS_TX_COUNT`` u32 transmit channel count 885 ``ETHTOOL_A_CHANNELS_OTHER_COUNT`` u32 other channel count 886 ``ETHTOOL_A_CHANNELS_COMBINED_COUNT`` u32 combined channel count 887 ===================================== ====== ========================== 888 889Kernel checks that requested channel counts do not exceed limits reported by 890driver. Driver may impose additional constraints and may not suspport all 891attributes. 892 893 894COALESCE_GET 895============ 896 897Gets coalescing parameters like ``ETHTOOL_GCOALESCE`` ioctl request. 898 899Request contents: 900 901 ==================================== ====== ========================== 902 ``ETHTOOL_A_COALESCE_HEADER`` nested request header 903 ==================================== ====== ========================== 904 905Kernel response contents: 906 907 =========================================== ====== ======================= 908 ``ETHTOOL_A_COALESCE_HEADER`` nested reply header 909 ``ETHTOOL_A_COALESCE_RX_USECS`` u32 delay (us), normal Rx 910 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES`` u32 max packets, normal Rx 911 ``ETHTOOL_A_COALESCE_RX_USECS_IRQ`` u32 delay (us), Rx in IRQ 912 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ`` u32 max packets, Rx in IRQ 913 ``ETHTOOL_A_COALESCE_TX_USECS`` u32 delay (us), normal Tx 914 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES`` u32 max packets, normal Tx 915 ``ETHTOOL_A_COALESCE_TX_USECS_IRQ`` u32 delay (us), Tx in IRQ 916 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ`` u32 IRQ packets, Tx in IRQ 917 ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS`` u32 delay of stats update 918 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX`` bool adaptive Rx coalesce 919 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX`` bool adaptive Tx coalesce 920 ``ETHTOOL_A_COALESCE_PKT_RATE_LOW`` u32 threshold for low rate 921 ``ETHTOOL_A_COALESCE_RX_USECS_LOW`` u32 delay (us), low Rx 922 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW`` u32 max packets, low Rx 923 ``ETHTOOL_A_COALESCE_TX_USECS_LOW`` u32 delay (us), low Tx 924 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW`` u32 max packets, low Tx 925 ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH`` u32 threshold for high rate 926 ``ETHTOOL_A_COALESCE_RX_USECS_HIGH`` u32 delay (us), high Rx 927 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH`` u32 max packets, high Rx 928 ``ETHTOOL_A_COALESCE_TX_USECS_HIGH`` u32 delay (us), high Tx 929 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH`` u32 max packets, high Tx 930 ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL`` u32 rate sampling interval 931 =========================================== ====== ======================= 932 933Attributes are only included in reply if their value is not zero or the 934corresponding bit in ``ethtool_ops::supported_coalesce_params`` is set (i.e. 935they are declared as supported by driver). 936 937 938COALESCE_SET 939============ 940 941Sets coalescing parameters like ``ETHTOOL_SCOALESCE`` ioctl request. 942 943Request contents: 944 945 =========================================== ====== ======================= 946 ``ETHTOOL_A_COALESCE_HEADER`` nested request header 947 ``ETHTOOL_A_COALESCE_RX_USECS`` u32 delay (us), normal Rx 948 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES`` u32 max packets, normal Rx 949 ``ETHTOOL_A_COALESCE_RX_USECS_IRQ`` u32 delay (us), Rx in IRQ 950 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ`` u32 max packets, Rx in IRQ 951 ``ETHTOOL_A_COALESCE_TX_USECS`` u32 delay (us), normal Tx 952 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES`` u32 max packets, normal Tx 953 ``ETHTOOL_A_COALESCE_TX_USECS_IRQ`` u32 delay (us), Tx in IRQ 954 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ`` u32 IRQ packets, Tx in IRQ 955 ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS`` u32 delay of stats update 956 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX`` bool adaptive Rx coalesce 957 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX`` bool adaptive Tx coalesce 958 ``ETHTOOL_A_COALESCE_PKT_RATE_LOW`` u32 threshold for low rate 959 ``ETHTOOL_A_COALESCE_RX_USECS_LOW`` u32 delay (us), low Rx 960 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW`` u32 max packets, low Rx 961 ``ETHTOOL_A_COALESCE_TX_USECS_LOW`` u32 delay (us), low Tx 962 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW`` u32 max packets, low Tx 963 ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH`` u32 threshold for high rate 964 ``ETHTOOL_A_COALESCE_RX_USECS_HIGH`` u32 delay (us), high Rx 965 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH`` u32 max packets, high Rx 966 ``ETHTOOL_A_COALESCE_TX_USECS_HIGH`` u32 delay (us), high Tx 967 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH`` u32 max packets, high Tx 968 ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL`` u32 rate sampling interval 969 =========================================== ====== ======================= 970 971Request is rejected if it attributes declared as unsupported by driver (i.e. 972such that the corresponding bit in ``ethtool_ops::supported_coalesce_params`` 973is not set), regardless of their values. Driver may impose additional 974constraints on coalescing parameters and their values. 975 976 977PAUSE_GET 978============ 979 980Gets channel counts like ``ETHTOOL_GPAUSE`` ioctl request. 981 982Request contents: 983 984 ===================================== ====== ========================== 985 ``ETHTOOL_A_PAUSE_HEADER`` nested request header 986 ===================================== ====== ========================== 987 988Kernel response contents: 989 990 ===================================== ====== ========================== 991 ``ETHTOOL_A_PAUSE_HEADER`` nested request header 992 ``ETHTOOL_A_PAUSE_AUTONEG`` bool pause autonegotiation 993 ``ETHTOOL_A_PAUSE_RX`` bool receive pause frames 994 ``ETHTOOL_A_PAUSE_TX`` bool transmit pause frames 995 ``ETHTOOL_A_PAUSE_STATS`` nested pause statistics 996 ===================================== ====== ========================== 997 998``ETHTOOL_A_PAUSE_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set 999in ``ETHTOOL_A_HEADER_FLAGS``. 1000It will be empty if driver did not report any statistics. Drivers fill in 1001the statistics in the following structure: 1002 1003.. kernel-doc:: include/linux/ethtool.h 1004 :identifiers: ethtool_pause_stats 1005 1006Each member has a corresponding attribute defined. 1007 1008PAUSE_SET 1009============ 1010 1011Sets pause parameters like ``ETHTOOL_GPAUSEPARAM`` ioctl request. 1012 1013Request contents: 1014 1015 ===================================== ====== ========================== 1016 ``ETHTOOL_A_PAUSE_HEADER`` nested request header 1017 ``ETHTOOL_A_PAUSE_AUTONEG`` bool pause autonegotiation 1018 ``ETHTOOL_A_PAUSE_RX`` bool receive pause frames 1019 ``ETHTOOL_A_PAUSE_TX`` bool transmit pause frames 1020 ===================================== ====== ========================== 1021 1022 1023EEE_GET 1024======= 1025 1026Gets channel counts like ``ETHTOOL_GEEE`` ioctl request. 1027 1028Request contents: 1029 1030 ===================================== ====== ========================== 1031 ``ETHTOOL_A_EEE_HEADER`` nested request header 1032 ===================================== ====== ========================== 1033 1034Kernel response contents: 1035 1036 ===================================== ====== ========================== 1037 ``ETHTOOL_A_EEE_HEADER`` nested request header 1038 ``ETHTOOL_A_EEE_MODES_OURS`` bool supported/advertised modes 1039 ``ETHTOOL_A_EEE_MODES_PEER`` bool peer advertised link modes 1040 ``ETHTOOL_A_EEE_ACTIVE`` bool EEE is actively used 1041 ``ETHTOOL_A_EEE_ENABLED`` bool EEE is enabled 1042 ``ETHTOOL_A_EEE_TX_LPI_ENABLED`` bool Tx lpi enabled 1043 ``ETHTOOL_A_EEE_TX_LPI_TIMER`` u32 Tx lpi timeout (in us) 1044 ===================================== ====== ========================== 1045 1046In ``ETHTOOL_A_EEE_MODES_OURS``, mask consists of link modes for which EEE is 1047enabled, value of link modes for which EEE is advertised. Link modes for which 1048peer advertises EEE are listed in ``ETHTOOL_A_EEE_MODES_PEER`` (no mask). The 1049netlink interface allows reporting EEE status for all link modes but only 1050first 32 are provided by the ``ethtool_ops`` callback. 1051 1052 1053EEE_SET 1054======= 1055 1056Sets pause parameters like ``ETHTOOL_GEEEPARAM`` ioctl request. 1057 1058Request contents: 1059 1060 ===================================== ====== ========================== 1061 ``ETHTOOL_A_EEE_HEADER`` nested request header 1062 ``ETHTOOL_A_EEE_MODES_OURS`` bool advertised modes 1063 ``ETHTOOL_A_EEE_ENABLED`` bool EEE is enabled 1064 ``ETHTOOL_A_EEE_TX_LPI_ENABLED`` bool Tx lpi enabled 1065 ``ETHTOOL_A_EEE_TX_LPI_TIMER`` u32 Tx lpi timeout (in us) 1066 ===================================== ====== ========================== 1067 1068``ETHTOOL_A_EEE_MODES_OURS`` is used to either list link modes to advertise 1069EEE for (if there is no mask) or specify changes to the list (if there is 1070a mask). The netlink interface allows reporting EEE status for all link modes 1071but only first 32 can be set at the moment as that is what the ``ethtool_ops`` 1072callback supports. 1073 1074 1075TSINFO_GET 1076========== 1077 1078Gets timestamping information like ``ETHTOOL_GET_TS_INFO`` ioctl request. 1079 1080Request contents: 1081 1082 ===================================== ====== ========================== 1083 ``ETHTOOL_A_TSINFO_HEADER`` nested request header 1084 ===================================== ====== ========================== 1085 1086Kernel response contents: 1087 1088 ===================================== ====== ========================== 1089 ``ETHTOOL_A_TSINFO_HEADER`` nested request header 1090 ``ETHTOOL_A_TSINFO_TIMESTAMPING`` bitset SO_TIMESTAMPING flags 1091 ``ETHTOOL_A_TSINFO_TX_TYPES`` bitset supported Tx types 1092 ``ETHTOOL_A_TSINFO_RX_FILTERS`` bitset supported Rx filters 1093 ``ETHTOOL_A_TSINFO_PHC_INDEX`` u32 PTP hw clock index 1094 ===================================== ====== ========================== 1095 1096``ETHTOOL_A_TSINFO_PHC_INDEX`` is absent if there is no associated PHC (there 1097is no special value for this case). The bitset attributes are omitted if they 1098would be empty (no bit set). 1099 1100CABLE_TEST 1101========== 1102 1103Start a cable test. 1104 1105Request contents: 1106 1107 ==================================== ====== ========================== 1108 ``ETHTOOL_A_CABLE_TEST_HEADER`` nested request header 1109 ==================================== ====== ========================== 1110 1111Notification contents: 1112 1113An Ethernet cable typically contains 1, 2 or 4 pairs. The length of 1114the pair can only be measured when there is a fault in the pair and 1115hence a reflection. Information about the fault may not be available, 1116depending on the specific hardware. Hence the contents of the notify 1117message are mostly optional. The attributes can be repeated an 1118arbitrary number of times, in an arbitrary order, for an arbitrary 1119number of pairs. 1120 1121The example shows the notification sent when the test is completed for 1122a T2 cable, i.e. two pairs. One pair is OK and hence has no length 1123information. The second pair has a fault and does have length 1124information. 1125 1126 +---------------------------------------------+--------+---------------------+ 1127 | ``ETHTOOL_A_CABLE_TEST_HEADER`` | nested | reply header | 1128 +---------------------------------------------+--------+---------------------+ 1129 | ``ETHTOOL_A_CABLE_TEST_STATUS`` | u8 | completed | 1130 +---------------------------------------------+--------+---------------------+ 1131 | ``ETHTOOL_A_CABLE_TEST_NTF_NEST`` | nested | all the results | 1132 +-+-------------------------------------------+--------+---------------------+ 1133 | | ``ETHTOOL_A_CABLE_NEST_RESULT`` | nested | cable test result | 1134 +-+-+-----------------------------------------+--------+---------------------+ 1135 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1136 +-+-+-----------------------------------------+--------+---------------------+ 1137 | | | ``ETHTOOL_A_CABLE_RESULTS_CODE`` | u8 | result code | 1138 +-+-+-----------------------------------------+--------+---------------------+ 1139 | | ``ETHTOOL_A_CABLE_NEST_RESULT`` | nested | cable test results | 1140 +-+-+-----------------------------------------+--------+---------------------+ 1141 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1142 +-+-+-----------------------------------------+--------+---------------------+ 1143 | | | ``ETHTOOL_A_CABLE_RESULTS_CODE`` | u8 | result code | 1144 +-+-+-----------------------------------------+--------+---------------------+ 1145 | | ``ETHTOOL_A_CABLE_NEST_FAULT_LENGTH`` | nested | cable length | 1146 +-+-+-----------------------------------------+--------+---------------------+ 1147 | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR`` | u8 | pair number | 1148 +-+-+-----------------------------------------+--------+---------------------+ 1149 | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_CM`` | u32 | length in cm | 1150 +-+-+-----------------------------------------+--------+---------------------+ 1151 1152CABLE_TEST TDR 1153============== 1154 1155Start a cable test and report raw TDR data 1156 1157Request contents: 1158 1159 +--------------------------------------------+--------+-----------------------+ 1160 | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER`` | nested | reply header | 1161 +--------------------------------------------+--------+-----------------------+ 1162 | ``ETHTOOL_A_CABLE_TEST_TDR_CFG`` | nested | test configuration | 1163 +-+------------------------------------------+--------+-----------------------+ 1164 | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE`` | u32 | first data distance | 1165 +-+-+----------------------------------------+--------+-----------------------+ 1166 | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE`` | u32 | last data distance | 1167 +-+-+----------------------------------------+--------+-----------------------+ 1168 | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE`` | u32 | distance of each step | 1169 +-+-+----------------------------------------+--------+-----------------------+ 1170 | | ``ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR`` | u8 | pair to test | 1171 +-+-+----------------------------------------+--------+-----------------------+ 1172 1173The ETHTOOL_A_CABLE_TEST_TDR_CFG is optional, as well as all members 1174of the nest. All distances are expressed in centimeters. The PHY takes 1175the distances as a guide, and rounds to the nearest distance it 1176actually supports. If a pair is passed, only that one pair will be 1177tested. Otherwise all pairs are tested. 1178 1179Notification contents: 1180 1181Raw TDR data is gathered by sending a pulse down the cable and 1182recording the amplitude of the reflected pulse for a given distance. 1183 1184It can take a number of seconds to collect TDR data, especial if the 1185full 100 meters is probed at 1 meter intervals. When the test is 1186started a notification will be sent containing just 1187ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value 1188ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED. 1189 1190When the test has completed a second notification will be sent 1191containing ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value 1192ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED and the TDR data. 1193 1194The message may optionally contain the amplitude of the pulse send 1195down the cable. This is measured in mV. A reflection should not be 1196bigger than transmitted pulse. 1197 1198Before the raw TDR data should be an ETHTOOL_A_CABLE_TDR_NEST_STEP 1199nest containing information about the distance along the cable for the 1200first reading, the last reading, and the step between each 1201reading. Distances are measured in centimeters. These should be the 1202exact values the PHY used. These may be different to what the user 1203requested, if the native measurement resolution is greater than 1 cm. 1204 1205For each step along the cable, a ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE is 1206used to report the amplitude of the reflection for a given pair. 1207 1208 +---------------------------------------------+--------+----------------------+ 1209 | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER`` | nested | reply header | 1210 +---------------------------------------------+--------+----------------------+ 1211 | ``ETHTOOL_A_CABLE_TEST_TDR_STATUS`` | u8 | completed | 1212 +---------------------------------------------+--------+----------------------+ 1213 | ``ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST`` | nested | all the results | 1214 +-+-------------------------------------------+--------+----------------------+ 1215 | | ``ETHTOOL_A_CABLE_TDR_NEST_PULSE`` | nested | TX Pulse amplitude | 1216 +-+-+-----------------------------------------+--------+----------------------+ 1217 | | | ``ETHTOOL_A_CABLE_PULSE_mV`` | s16 | Pulse amplitude | 1218 +-+-+-----------------------------------------+--------+----------------------+ 1219 | | ``ETHTOOL_A_CABLE_NEST_STEP`` | nested | TDR step info | 1220 +-+-+-----------------------------------------+--------+----------------------+ 1221 | | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE`` | u32 | First data distance | 1222 +-+-+-----------------------------------------+--------+----------------------+ 1223 | | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE`` | u32 | Last data distance | 1224 +-+-+-----------------------------------------+--------+----------------------+ 1225 | | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE`` | u32 | distance of each step| 1226 +-+-+-----------------------------------------+--------+----------------------+ 1227 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE`` | nested | Reflection amplitude | 1228 +-+-+-----------------------------------------+--------+----------------------+ 1229 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1230 +-+-+-----------------------------------------+--------+----------------------+ 1231 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV`` | s16 | Reflection amplitude | 1232 +-+-+-----------------------------------------+--------+----------------------+ 1233 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE`` | nested | Reflection amplitude | 1234 +-+-+-----------------------------------------+--------+----------------------+ 1235 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1236 +-+-+-----------------------------------------+--------+----------------------+ 1237 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV`` | s16 | Reflection amplitude | 1238 +-+-+-----------------------------------------+--------+----------------------+ 1239 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE`` | nested | Reflection amplitude | 1240 +-+-+-----------------------------------------+--------+----------------------+ 1241 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1242 +-+-+-----------------------------------------+--------+----------------------+ 1243 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV`` | s16 | Reflection amplitude | 1244 +-+-+-----------------------------------------+--------+----------------------+ 1245 1246TUNNEL_INFO 1247=========== 1248 1249Gets information about the tunnel state NIC is aware of. 1250 1251Request contents: 1252 1253 ===================================== ====== ========================== 1254 ``ETHTOOL_A_TUNNEL_INFO_HEADER`` nested request header 1255 ===================================== ====== ========================== 1256 1257Kernel response contents: 1258 1259 +---------------------------------------------+--------+---------------------+ 1260 | ``ETHTOOL_A_TUNNEL_INFO_HEADER`` | nested | reply header | 1261 +---------------------------------------------+--------+---------------------+ 1262 | ``ETHTOOL_A_TUNNEL_INFO_UDP_PORTS`` | nested | all UDP port tables | 1263 +-+-------------------------------------------+--------+---------------------+ 1264 | | ``ETHTOOL_A_TUNNEL_UDP_TABLE`` | nested | one UDP port table | 1265 +-+-+-----------------------------------------+--------+---------------------+ 1266 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE`` | u32 | max size of the | 1267 | | | | | table | 1268 +-+-+-----------------------------------------+--------+---------------------+ 1269 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES`` | bitset | tunnel types which | 1270 | | | | | table can hold | 1271 +-+-+-----------------------------------------+--------+---------------------+ 1272 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY`` | nested | offloaded UDP port | 1273 +-+-+-+---------------------------------------+--------+---------------------+ 1274 | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT`` | be16 | UDP port | 1275 +-+-+-+---------------------------------------+--------+---------------------+ 1276 | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE`` | u32 | tunnel type | 1277 +-+-+-+---------------------------------------+--------+---------------------+ 1278 1279For UDP tunnel table empty ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES`` indicates that 1280the table contains static entries, hard-coded by the NIC. 1281 1282Request translation 1283=================== 1284 1285The following table maps ioctl commands to netlink commands providing their 1286functionality. Entries with "n/a" in right column are commands which do not 1287have their netlink replacement yet. Entries which "n/a" in the left column 1288are netlink only. 1289 1290 =================================== ===================================== 1291 ioctl command netlink command 1292 =================================== ===================================== 1293 ``ETHTOOL_GSET`` ``ETHTOOL_MSG_LINKINFO_GET`` 1294 ``ETHTOOL_MSG_LINKMODES_GET`` 1295 ``ETHTOOL_SSET`` ``ETHTOOL_MSG_LINKINFO_SET`` 1296 ``ETHTOOL_MSG_LINKMODES_SET`` 1297 ``ETHTOOL_GDRVINFO`` n/a 1298 ``ETHTOOL_GREGS`` n/a 1299 ``ETHTOOL_GWOL`` ``ETHTOOL_MSG_WOL_GET`` 1300 ``ETHTOOL_SWOL`` ``ETHTOOL_MSG_WOL_SET`` 1301 ``ETHTOOL_GMSGLVL`` ``ETHTOOL_MSG_DEBUG_GET`` 1302 ``ETHTOOL_SMSGLVL`` ``ETHTOOL_MSG_DEBUG_SET`` 1303 ``ETHTOOL_NWAY_RST`` n/a 1304 ``ETHTOOL_GLINK`` ``ETHTOOL_MSG_LINKSTATE_GET`` 1305 ``ETHTOOL_GEEPROM`` n/a 1306 ``ETHTOOL_SEEPROM`` n/a 1307 ``ETHTOOL_GCOALESCE`` ``ETHTOOL_MSG_COALESCE_GET`` 1308 ``ETHTOOL_SCOALESCE`` ``ETHTOOL_MSG_COALESCE_SET`` 1309 ``ETHTOOL_GRINGPARAM`` ``ETHTOOL_MSG_RINGS_GET`` 1310 ``ETHTOOL_SRINGPARAM`` ``ETHTOOL_MSG_RINGS_SET`` 1311 ``ETHTOOL_GPAUSEPARAM`` ``ETHTOOL_MSG_PAUSE_GET`` 1312 ``ETHTOOL_SPAUSEPARAM`` ``ETHTOOL_MSG_PAUSE_SET`` 1313 ``ETHTOOL_GRXCSUM`` ``ETHTOOL_MSG_FEATURES_GET`` 1314 ``ETHTOOL_SRXCSUM`` ``ETHTOOL_MSG_FEATURES_SET`` 1315 ``ETHTOOL_GTXCSUM`` ``ETHTOOL_MSG_FEATURES_GET`` 1316 ``ETHTOOL_STXCSUM`` ``ETHTOOL_MSG_FEATURES_SET`` 1317 ``ETHTOOL_GSG`` ``ETHTOOL_MSG_FEATURES_GET`` 1318 ``ETHTOOL_SSG`` ``ETHTOOL_MSG_FEATURES_SET`` 1319 ``ETHTOOL_TEST`` n/a 1320 ``ETHTOOL_GSTRINGS`` ``ETHTOOL_MSG_STRSET_GET`` 1321 ``ETHTOOL_PHYS_ID`` n/a 1322 ``ETHTOOL_GSTATS`` n/a 1323 ``ETHTOOL_GTSO`` ``ETHTOOL_MSG_FEATURES_GET`` 1324 ``ETHTOOL_STSO`` ``ETHTOOL_MSG_FEATURES_SET`` 1325 ``ETHTOOL_GPERMADDR`` rtnetlink ``RTM_GETLINK`` 1326 ``ETHTOOL_GUFO`` ``ETHTOOL_MSG_FEATURES_GET`` 1327 ``ETHTOOL_SUFO`` ``ETHTOOL_MSG_FEATURES_SET`` 1328 ``ETHTOOL_GGSO`` ``ETHTOOL_MSG_FEATURES_GET`` 1329 ``ETHTOOL_SGSO`` ``ETHTOOL_MSG_FEATURES_SET`` 1330 ``ETHTOOL_GFLAGS`` ``ETHTOOL_MSG_FEATURES_GET`` 1331 ``ETHTOOL_SFLAGS`` ``ETHTOOL_MSG_FEATURES_SET`` 1332 ``ETHTOOL_GPFLAGS`` ``ETHTOOL_MSG_PRIVFLAGS_GET`` 1333 ``ETHTOOL_SPFLAGS`` ``ETHTOOL_MSG_PRIVFLAGS_SET`` 1334 ``ETHTOOL_GRXFH`` n/a 1335 ``ETHTOOL_SRXFH`` n/a 1336 ``ETHTOOL_GGRO`` ``ETHTOOL_MSG_FEATURES_GET`` 1337 ``ETHTOOL_SGRO`` ``ETHTOOL_MSG_FEATURES_SET`` 1338 ``ETHTOOL_GRXRINGS`` n/a 1339 ``ETHTOOL_GRXCLSRLCNT`` n/a 1340 ``ETHTOOL_GRXCLSRULE`` n/a 1341 ``ETHTOOL_GRXCLSRLALL`` n/a 1342 ``ETHTOOL_SRXCLSRLDEL`` n/a 1343 ``ETHTOOL_SRXCLSRLINS`` n/a 1344 ``ETHTOOL_FLASHDEV`` n/a 1345 ``ETHTOOL_RESET`` n/a 1346 ``ETHTOOL_SRXNTUPLE`` n/a 1347 ``ETHTOOL_GRXNTUPLE`` n/a 1348 ``ETHTOOL_GSSET_INFO`` ``ETHTOOL_MSG_STRSET_GET`` 1349 ``ETHTOOL_GRXFHINDIR`` n/a 1350 ``ETHTOOL_SRXFHINDIR`` n/a 1351 ``ETHTOOL_GFEATURES`` ``ETHTOOL_MSG_FEATURES_GET`` 1352 ``ETHTOOL_SFEATURES`` ``ETHTOOL_MSG_FEATURES_SET`` 1353 ``ETHTOOL_GCHANNELS`` ``ETHTOOL_MSG_CHANNELS_GET`` 1354 ``ETHTOOL_SCHANNELS`` ``ETHTOOL_MSG_CHANNELS_SET`` 1355 ``ETHTOOL_SET_DUMP`` n/a 1356 ``ETHTOOL_GET_DUMP_FLAG`` n/a 1357 ``ETHTOOL_GET_DUMP_DATA`` n/a 1358 ``ETHTOOL_GET_TS_INFO`` ``ETHTOOL_MSG_TSINFO_GET`` 1359 ``ETHTOOL_GMODULEINFO`` n/a 1360 ``ETHTOOL_GMODULEEEPROM`` n/a 1361 ``ETHTOOL_GEEE`` ``ETHTOOL_MSG_EEE_GET`` 1362 ``ETHTOOL_SEEE`` ``ETHTOOL_MSG_EEE_SET`` 1363 ``ETHTOOL_GRSSH`` n/a 1364 ``ETHTOOL_SRSSH`` n/a 1365 ``ETHTOOL_GTUNABLE`` n/a 1366 ``ETHTOOL_STUNABLE`` n/a 1367 ``ETHTOOL_GPHYSTATS`` n/a 1368 ``ETHTOOL_PERQUEUE`` n/a 1369 ``ETHTOOL_GLINKSETTINGS`` ``ETHTOOL_MSG_LINKINFO_GET`` 1370 ``ETHTOOL_MSG_LINKMODES_GET`` 1371 ``ETHTOOL_SLINKSETTINGS`` ``ETHTOOL_MSG_LINKINFO_SET`` 1372 ``ETHTOOL_MSG_LINKMODES_SET`` 1373 ``ETHTOOL_PHY_GTUNABLE`` n/a 1374 ``ETHTOOL_PHY_STUNABLE`` n/a 1375 ``ETHTOOL_GFECPARAM`` n/a 1376 ``ETHTOOL_SFECPARAM`` n/a 1377 n/a ''ETHTOOL_MSG_CABLE_TEST_ACT'' 1378 n/a ''ETHTOOL_MSG_CABLE_TEST_TDR_ACT'' 1379 n/a ``ETHTOOL_MSG_TUNNEL_INFO_GET`` 1380 =================================== ===================================== 1381