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 44Attributes that need to be filled-in by device drivers and that are dumped to 45user space based on whether they are valid or not should not use zero as a 46valid value. This avoids the need to explicitly signal the validity of the 47attribute in the device driver API. 48 49 50Request header 51============== 52 53Each request or reply message contains a nested attribute with common header. 54Structure of this header is 55 56 ============================== ====== ============================= 57 ``ETHTOOL_A_HEADER_DEV_INDEX`` u32 device ifindex 58 ``ETHTOOL_A_HEADER_DEV_NAME`` string device name 59 ``ETHTOOL_A_HEADER_FLAGS`` u32 flags common for all requests 60 ``ETHTOOL_A_HEADER_PHY_INDEX`` u32 phy device index 61 ============================== ====== ============================= 62 63``ETHTOOL_A_HEADER_DEV_INDEX`` and ``ETHTOOL_A_HEADER_DEV_NAME`` identify the 64device message relates to. One of them is sufficient in requests, if both are 65used, they must identify the same device. Some requests, e.g. global string 66sets, do not require device identification. Most ``GET`` requests also allow 67dump requests without device identification to query the same information for 68all devices providing it (each device in a separate message). 69 70``ETHTOOL_A_HEADER_FLAGS`` is a bitmap of request flags common for all request 71types. The interpretation of these flags is the same for all request types but 72the flags may not apply to requests. Recognized flags are: 73 74 ================================= =================================== 75 ``ETHTOOL_FLAG_COMPACT_BITSETS`` use compact format bitsets in reply 76 ``ETHTOOL_FLAG_OMIT_REPLY`` omit optional reply (_SET and _ACT) 77 ``ETHTOOL_FLAG_STATS`` include optional device statistics 78 ================================= =================================== 79 80New request flags should follow the general idea that if the flag is not set, 81the behaviour is backward compatible, i.e. requests from old clients not aware 82of the flag should be interpreted the way the client expects. A client must 83not set flags it does not understand. 84 85``ETHTOOL_A_HEADER_PHY_INDEX`` identifies the Ethernet PHY the message relates to. 86As there are numerous commands that are related to PHY configuration, and because 87there may be more than one PHY on the link, the PHY index can be passed in the 88request for the commands that needs it. It is, however, not mandatory, and if it 89is not passed for commands that target a PHY, the net_device.phydev pointer 90is used. 91 92Bit sets 93======== 94 95For short bitmaps of (reasonably) fixed length, standard ``NLA_BITFIELD32`` 96type is used. For arbitrary length bitmaps, ethtool netlink uses a nested 97attribute with contents of one of two forms: compact (two binary bitmaps 98representing bit values and mask of affected bits) and bit-by-bit (list of 99bits identified by either index or name). 100 101Verbose (bit-by-bit) bitsets allow sending symbolic names for bits together 102with their values which saves a round trip (when the bitset is passed in a 103request) or at least a second request (when the bitset is in a reply). This is 104useful for one shot applications like traditional ethtool command. On the 105other hand, long running applications like ethtool monitor (displaying 106notifications) or network management daemons may prefer fetching the names 107only once and using compact form to save message size. Notifications from 108ethtool netlink interface always use compact form for bitsets. 109 110A bitset can represent either a value/mask pair (``ETHTOOL_A_BITSET_NOMASK`` 111not set) or a single bitmap (``ETHTOOL_A_BITSET_NOMASK`` set). In requests 112modifying a bitmap, the former changes the bit set in mask to values set in 113value and preserves the rest; the latter sets the bits set in the bitmap and 114clears the rest. 115 116Compact form: nested (bitset) attribute contents: 117 118 ============================ ====== ============================ 119 ``ETHTOOL_A_BITSET_NOMASK`` flag no mask, only a list 120 ``ETHTOOL_A_BITSET_SIZE`` u32 number of significant bits 121 ``ETHTOOL_A_BITSET_VALUE`` binary bitmap of bit values 122 ``ETHTOOL_A_BITSET_MASK`` binary bitmap of valid bits 123 ============================ ====== ============================ 124 125Value and mask must have length at least ``ETHTOOL_A_BITSET_SIZE`` bits 126rounded up to a multiple of 32 bits. They consist of 32-bit words in host byte 127order, words ordered from least significant to most significant (i.e. the same 128way as bitmaps are passed with ioctl interface). 129 130For compact form, ``ETHTOOL_A_BITSET_SIZE`` and ``ETHTOOL_A_BITSET_VALUE`` are 131mandatory. ``ETHTOOL_A_BITSET_MASK`` attribute is mandatory if 132``ETHTOOL_A_BITSET_NOMASK`` is not set (bitset represents a value/mask pair); 133if ``ETHTOOL_A_BITSET_NOMASK`` is not set, ``ETHTOOL_A_BITSET_MASK`` is not 134allowed (bitset represents a single bitmap. 135 136Kernel bit set length may differ from userspace length if older application is 137used on newer kernel or vice versa. If userspace bitmap is longer, an error is 138issued only if the request actually tries to set values of some bits not 139recognized by kernel. 140 141Bit-by-bit form: nested (bitset) attribute contents: 142 143 +------------------------------------+--------+-----------------------------+ 144 | ``ETHTOOL_A_BITSET_NOMASK`` | flag | no mask, only a list | 145 +------------------------------------+--------+-----------------------------+ 146 | ``ETHTOOL_A_BITSET_SIZE`` | u32 | number of significant bits | 147 +------------------------------------+--------+-----------------------------+ 148 | ``ETHTOOL_A_BITSET_BITS`` | nested | array of bits | 149 +-+----------------------------------+--------+-----------------------------+ 150 | | ``ETHTOOL_A_BITSET_BITS_BIT+`` | nested | one bit | 151 +-+-+--------------------------------+--------+-----------------------------+ 152 | | | ``ETHTOOL_A_BITSET_BIT_INDEX`` | u32 | bit index (0 for LSB) | 153 +-+-+--------------------------------+--------+-----------------------------+ 154 | | | ``ETHTOOL_A_BITSET_BIT_NAME`` | string | bit name | 155 +-+-+--------------------------------+--------+-----------------------------+ 156 | | | ``ETHTOOL_A_BITSET_BIT_VALUE`` | flag | present if bit is set | 157 +-+-+--------------------------------+--------+-----------------------------+ 158 159Bit size is optional for bit-by-bit form. ``ETHTOOL_A_BITSET_BITS`` nest can 160only contain ``ETHTOOL_A_BITSET_BITS_BIT`` attributes but there can be an 161arbitrary number of them. A bit may be identified by its index or by its 162name. When used in requests, listed bits are set to 0 or 1 according to 163``ETHTOOL_A_BITSET_BIT_VALUE``, the rest is preserved. A request fails if 164index exceeds kernel bit length or if name is not recognized. 165 166When ``ETHTOOL_A_BITSET_NOMASK`` flag is present, bitset is interpreted as 167a simple bitmap. ``ETHTOOL_A_BITSET_BIT_VALUE`` attributes are not used in 168such case. Such bitset represents a bitmap with listed bits set and the rest 169zero. 170 171In requests, application can use either form. Form used by kernel in reply is 172determined by ``ETHTOOL_FLAG_COMPACT_BITSETS`` flag in flags field of request 173header. Semantics of value and mask depends on the attribute. 174 175 176List of message types 177===================== 178 179All constants identifying message types use ``ETHTOOL_CMD_`` prefix and suffix 180according to message purpose: 181 182 ============== ====================================== 183 ``_GET`` userspace request to retrieve data 184 ``_SET`` userspace request to set data 185 ``_ACT`` userspace request to perform an action 186 ``_GET_REPLY`` kernel reply to a ``GET`` request 187 ``_SET_REPLY`` kernel reply to a ``SET`` request 188 ``_ACT_REPLY`` kernel reply to an ``ACT`` request 189 ``_NTF`` kernel notification 190 ============== ====================================== 191 192Userspace to kernel: 193 194 ===================================== ================================= 195 ``ETHTOOL_MSG_STRSET_GET`` get string set 196 ``ETHTOOL_MSG_LINKINFO_GET`` get link settings 197 ``ETHTOOL_MSG_LINKINFO_SET`` set link settings 198 ``ETHTOOL_MSG_LINKMODES_GET`` get link modes info 199 ``ETHTOOL_MSG_LINKMODES_SET`` set link modes info 200 ``ETHTOOL_MSG_LINKSTATE_GET`` get link state 201 ``ETHTOOL_MSG_DEBUG_GET`` get debugging settings 202 ``ETHTOOL_MSG_DEBUG_SET`` set debugging settings 203 ``ETHTOOL_MSG_WOL_GET`` get wake-on-lan settings 204 ``ETHTOOL_MSG_WOL_SET`` set wake-on-lan settings 205 ``ETHTOOL_MSG_FEATURES_GET`` get device features 206 ``ETHTOOL_MSG_FEATURES_SET`` set device features 207 ``ETHTOOL_MSG_PRIVFLAGS_GET`` get private flags 208 ``ETHTOOL_MSG_PRIVFLAGS_SET`` set private flags 209 ``ETHTOOL_MSG_RINGS_GET`` get ring sizes 210 ``ETHTOOL_MSG_RINGS_SET`` set ring sizes 211 ``ETHTOOL_MSG_CHANNELS_GET`` get channel counts 212 ``ETHTOOL_MSG_CHANNELS_SET`` set channel counts 213 ``ETHTOOL_MSG_COALESCE_GET`` get coalescing parameters 214 ``ETHTOOL_MSG_COALESCE_SET`` set coalescing parameters 215 ``ETHTOOL_MSG_PAUSE_GET`` get pause parameters 216 ``ETHTOOL_MSG_PAUSE_SET`` set pause parameters 217 ``ETHTOOL_MSG_EEE_GET`` get EEE settings 218 ``ETHTOOL_MSG_EEE_SET`` set EEE settings 219 ``ETHTOOL_MSG_TSINFO_GET`` get timestamping info 220 ``ETHTOOL_MSG_CABLE_TEST_ACT`` action start cable test 221 ``ETHTOOL_MSG_CABLE_TEST_TDR_ACT`` action start raw TDR cable test 222 ``ETHTOOL_MSG_TUNNEL_INFO_GET`` get tunnel offload info 223 ``ETHTOOL_MSG_FEC_GET`` get FEC settings 224 ``ETHTOOL_MSG_FEC_SET`` set FEC settings 225 ``ETHTOOL_MSG_MODULE_EEPROM_GET`` read SFP module EEPROM 226 ``ETHTOOL_MSG_STATS_GET`` get standard statistics 227 ``ETHTOOL_MSG_PHC_VCLOCKS_GET`` get PHC virtual clocks info 228 ``ETHTOOL_MSG_MODULE_SET`` set transceiver module parameters 229 ``ETHTOOL_MSG_MODULE_GET`` get transceiver module parameters 230 ``ETHTOOL_MSG_PSE_SET`` set PSE parameters 231 ``ETHTOOL_MSG_PSE_GET`` get PSE parameters 232 ``ETHTOOL_MSG_RSS_GET`` get RSS settings 233 ``ETHTOOL_MSG_PLCA_GET_CFG`` get PLCA RS parameters 234 ``ETHTOOL_MSG_PLCA_SET_CFG`` set PLCA RS parameters 235 ``ETHTOOL_MSG_PLCA_GET_STATUS`` get PLCA RS status 236 ``ETHTOOL_MSG_MM_GET`` get MAC merge layer state 237 ``ETHTOOL_MSG_MM_SET`` set MAC merge layer parameters 238 ``ETHTOOL_MSG_MODULE_FW_FLASH_ACT`` flash transceiver module firmware 239 ``ETHTOOL_MSG_PHY_GET`` get Ethernet PHY information 240 ``ETHTOOL_MSG_TSCONFIG_GET`` get hw timestamping configuration 241 ``ETHTOOL_MSG_TSCONFIG_SET`` set hw timestamping configuration 242 ``ETHTOOL_MSG_RSS_SET`` set RSS settings 243 ===================================== ================================= 244 245Kernel to userspace: 246 247 ======================================== ================================= 248 ``ETHTOOL_MSG_STRSET_GET_REPLY`` string set contents 249 ``ETHTOOL_MSG_LINKINFO_GET_REPLY`` link settings 250 ``ETHTOOL_MSG_LINKINFO_NTF`` link settings notification 251 ``ETHTOOL_MSG_LINKMODES_GET_REPLY`` link modes info 252 ``ETHTOOL_MSG_LINKMODES_NTF`` link modes notification 253 ``ETHTOOL_MSG_LINKSTATE_GET_REPLY`` link state info 254 ``ETHTOOL_MSG_DEBUG_GET_REPLY`` debugging settings 255 ``ETHTOOL_MSG_DEBUG_NTF`` debugging settings notification 256 ``ETHTOOL_MSG_WOL_GET_REPLY`` wake-on-lan settings 257 ``ETHTOOL_MSG_WOL_NTF`` wake-on-lan settings notification 258 ``ETHTOOL_MSG_FEATURES_GET_REPLY`` device features 259 ``ETHTOOL_MSG_FEATURES_SET_REPLY`` optional reply to FEATURES_SET 260 ``ETHTOOL_MSG_FEATURES_NTF`` netdev features notification 261 ``ETHTOOL_MSG_PRIVFLAGS_GET_REPLY`` private flags 262 ``ETHTOOL_MSG_PRIVFLAGS_NTF`` private flags 263 ``ETHTOOL_MSG_RINGS_GET_REPLY`` ring sizes 264 ``ETHTOOL_MSG_RINGS_NTF`` ring sizes 265 ``ETHTOOL_MSG_CHANNELS_GET_REPLY`` channel counts 266 ``ETHTOOL_MSG_CHANNELS_NTF`` channel counts 267 ``ETHTOOL_MSG_COALESCE_GET_REPLY`` coalescing parameters 268 ``ETHTOOL_MSG_COALESCE_NTF`` coalescing parameters 269 ``ETHTOOL_MSG_PAUSE_GET_REPLY`` pause parameters 270 ``ETHTOOL_MSG_PAUSE_NTF`` pause parameters 271 ``ETHTOOL_MSG_EEE_GET_REPLY`` EEE settings 272 ``ETHTOOL_MSG_EEE_NTF`` EEE settings 273 ``ETHTOOL_MSG_TSINFO_GET_REPLY`` timestamping info 274 ``ETHTOOL_MSG_CABLE_TEST_NTF`` Cable test results 275 ``ETHTOOL_MSG_CABLE_TEST_TDR_NTF`` Cable test TDR results 276 ``ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY`` tunnel offload info 277 ``ETHTOOL_MSG_FEC_GET_REPLY`` FEC settings 278 ``ETHTOOL_MSG_FEC_NTF`` FEC settings 279 ``ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY`` read SFP module EEPROM 280 ``ETHTOOL_MSG_STATS_GET_REPLY`` standard statistics 281 ``ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY`` PHC virtual clocks info 282 ``ETHTOOL_MSG_MODULE_GET_REPLY`` transceiver module parameters 283 ``ETHTOOL_MSG_PSE_GET_REPLY`` PSE parameters 284 ``ETHTOOL_MSG_RSS_GET_REPLY`` RSS settings 285 ``ETHTOOL_MSG_RSS_NTF`` RSS settings 286 ``ETHTOOL_MSG_PLCA_GET_CFG_REPLY`` PLCA RS parameters 287 ``ETHTOOL_MSG_PLCA_GET_STATUS_REPLY`` PLCA RS status 288 ``ETHTOOL_MSG_PLCA_NTF`` PLCA RS parameters 289 ``ETHTOOL_MSG_MM_GET_REPLY`` MAC merge layer status 290 ``ETHTOOL_MSG_MODULE_FW_FLASH_NTF`` transceiver module flash updates 291 ``ETHTOOL_MSG_PHY_GET_REPLY`` Ethernet PHY information 292 ``ETHTOOL_MSG_PHY_NTF`` Ethernet PHY information change 293 ``ETHTOOL_MSG_TSCONFIG_GET_REPLY`` hw timestamping configuration 294 ``ETHTOOL_MSG_TSCONFIG_SET_REPLY`` new hw timestamping configuration 295 ``ETHTOOL_MSG_PSE_NTF`` PSE events notification 296 ``ETHTOOL_MSG_RSS_NTF`` RSS settings notification 297 ======================================== ================================= 298 299``GET`` requests are sent by userspace applications to retrieve device 300information. They usually do not contain any message specific attributes. 301Kernel replies with corresponding "GET_REPLY" message. For most types, ``GET`` 302request with ``NLM_F_DUMP`` and no device identification can be used to query 303the information for all devices supporting the request. 304 305If the data can be also modified, corresponding ``SET`` message with the same 306layout as corresponding ``GET_REPLY`` is used to request changes. Only 307attributes where a change is requested are included in such request (also, not 308all attributes may be changed). Replies to most ``SET`` request consist only 309of error code and extack; if kernel provides additional data, it is sent in 310the form of corresponding ``SET_REPLY`` message which can be suppressed by 311setting ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header. 312 313Data modification also triggers sending a ``NTF`` message with a notification. 314These usually bear only a subset of attributes which was affected by the 315change. The same notification is issued if the data is modified using other 316means (mostly ioctl ethtool interface). Unlike notifications from ethtool 317netlink code which are only sent if something actually changed, notifications 318triggered by ioctl interface may be sent even if the request did not actually 319change any data. 320 321``ACT`` messages request kernel (driver) to perform a specific action. If some 322information is reported by kernel (which can be suppressed by setting 323``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header), the reply takes form of 324an ``ACT_REPLY`` message. Performing an action also triggers a notification 325(``NTF`` message). 326 327Later sections describe the format and semantics of these messages. 328 329 330STRSET_GET 331========== 332 333Requests contents of a string set as provided by ioctl commands 334``ETHTOOL_GSSET_INFO`` and ``ETHTOOL_GSTRINGS.`` String sets are not user 335writeable so that the corresponding ``STRSET_SET`` message is only used in 336kernel replies. There are two types of string sets: global (independent of 337a device, e.g. device feature names) and device specific (e.g. device private 338flags). 339 340Request contents: 341 342 +---------------------------------------+--------+------------------------+ 343 | ``ETHTOOL_A_STRSET_HEADER`` | nested | request header | 344 +---------------------------------------+--------+------------------------+ 345 | ``ETHTOOL_A_STRSET_STRINGSETS`` | nested | string set to request | 346 +-+-------------------------------------+--------+------------------------+ 347 | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set | 348 +-+-+-----------------------------------+--------+------------------------+ 349 | | | ``ETHTOOL_A_STRINGSET_ID`` | u32 | set id | 350 +-+-+-----------------------------------+--------+------------------------+ 351 352Kernel response contents: 353 354 +---------------------------------------+--------+-----------------------+ 355 | ``ETHTOOL_A_STRSET_HEADER`` | nested | reply header | 356 +---------------------------------------+--------+-----------------------+ 357 | ``ETHTOOL_A_STRSET_STRINGSETS`` | nested | array of string sets | 358 +-+-------------------------------------+--------+-----------------------+ 359 | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set | 360 +-+-+-----------------------------------+--------+-----------------------+ 361 | | | ``ETHTOOL_A_STRINGSET_ID`` | u32 | set id | 362 +-+-+-----------------------------------+--------+-----------------------+ 363 | | | ``ETHTOOL_A_STRINGSET_COUNT`` | u32 | number of strings | 364 +-+-+-----------------------------------+--------+-----------------------+ 365 | | | ``ETHTOOL_A_STRINGSET_STRINGS`` | nested | array of strings | 366 +-+-+-+---------------------------------+--------+-----------------------+ 367 | | | | ``ETHTOOL_A_STRINGS_STRING+`` | nested | one string | 368 +-+-+-+-+-------------------------------+--------+-----------------------+ 369 | | | | | ``ETHTOOL_A_STRING_INDEX`` | u32 | string index | 370 +-+-+-+-+-------------------------------+--------+-----------------------+ 371 | | | | | ``ETHTOOL_A_STRING_VALUE`` | string | string value | 372 +-+-+-+-+-------------------------------+--------+-----------------------+ 373 | ``ETHTOOL_A_STRSET_COUNTS_ONLY`` | flag | return only counts | 374 +---------------------------------------+--------+-----------------------+ 375 376Device identification in request header is optional. Depending on its presence 377a and ``NLM_F_DUMP`` flag, there are three type of ``STRSET_GET`` requests: 378 379 - no ``NLM_F_DUMP,`` no device: get "global" stringsets 380 - no ``NLM_F_DUMP``, with device: get string sets related to the device 381 - ``NLM_F_DUMP``, no device: get device related string sets for all devices 382 383If there is no ``ETHTOOL_A_STRSET_STRINGSETS`` array, all string sets of 384requested type are returned, otherwise only those specified in the request. 385Flag ``ETHTOOL_A_STRSET_COUNTS_ONLY`` tells kernel to only return string 386counts of the sets, not the actual strings. 387 388 389LINKINFO_GET 390============ 391 392Requests link settings as provided by ``ETHTOOL_GLINKSETTINGS`` except for 393link modes and autonegotiation related information. The request does not use 394any attributes. 395 396Request contents: 397 398 ==================================== ====== ========================== 399 ``ETHTOOL_A_LINKINFO_HEADER`` nested request header 400 ==================================== ====== ========================== 401 402Kernel response contents: 403 404 ==================================== ====== ========================== 405 ``ETHTOOL_A_LINKINFO_HEADER`` nested reply header 406 ``ETHTOOL_A_LINKINFO_PORT`` u8 physical port 407 ``ETHTOOL_A_LINKINFO_PHYADDR`` u8 phy MDIO address 408 ``ETHTOOL_A_LINKINFO_TP_MDIX`` u8 MDI(-X) status 409 ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL`` u8 MDI(-X) control 410 ``ETHTOOL_A_LINKINFO_TRANSCEIVER`` u8 transceiver 411 ==================================== ====== ========================== 412 413Attributes and their values have the same meaning as matching members of the 414corresponding ioctl structures. 415 416``LINKINFO_GET`` allows dump requests (kernel returns reply message for all 417devices supporting the request). 418 419 420LINKINFO_SET 421============ 422 423``LINKINFO_SET`` request allows setting some of the attributes reported by 424``LINKINFO_GET``. 425 426Request contents: 427 428 ==================================== ====== ========================== 429 ``ETHTOOL_A_LINKINFO_HEADER`` nested request header 430 ``ETHTOOL_A_LINKINFO_PORT`` u8 physical port 431 ``ETHTOOL_A_LINKINFO_PHYADDR`` u8 phy MDIO address 432 ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL`` u8 MDI(-X) control 433 ==================================== ====== ========================== 434 435MDI(-X) status and transceiver cannot be set, request with the corresponding 436attributes is rejected. 437 438 439LINKMODES_GET 440============= 441 442Requests link modes (supported, advertised and peer advertised) and related 443information (autonegotiation status, link speed and duplex) as provided by 444``ETHTOOL_GLINKSETTINGS``. The request does not use any attributes. 445 446Request contents: 447 448 ==================================== ====== ========================== 449 ``ETHTOOL_A_LINKMODES_HEADER`` nested request header 450 ==================================== ====== ========================== 451 452Kernel response contents: 453 454 ========================================== ====== ========================== 455 ``ETHTOOL_A_LINKMODES_HEADER`` nested reply header 456 ``ETHTOOL_A_LINKMODES_AUTONEG`` u8 autonegotiation status 457 ``ETHTOOL_A_LINKMODES_OURS`` bitset advertised link modes 458 ``ETHTOOL_A_LINKMODES_PEER`` bitset partner link modes 459 ``ETHTOOL_A_LINKMODES_SPEED`` u32 link speed (Mb/s) 460 ``ETHTOOL_A_LINKMODES_DUPLEX`` u8 duplex mode 461 ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG`` u8 Master/slave port mode 462 ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE`` u8 Master/slave port state 463 ``ETHTOOL_A_LINKMODES_RATE_MATCHING`` u8 PHY rate matching 464 ========================================== ====== ========================== 465 466For ``ETHTOOL_A_LINKMODES_OURS``, value represents advertised modes and mask 467represents supported modes. ``ETHTOOL_A_LINKMODES_PEER`` in the reply is a bit 468list. 469 470``LINKMODES_GET`` allows dump requests (kernel returns reply messages for all 471devices supporting the request). 472 473 474LINKMODES_SET 475============= 476 477Request contents: 478 479 ========================================== ====== ========================== 480 ``ETHTOOL_A_LINKMODES_HEADER`` nested request header 481 ``ETHTOOL_A_LINKMODES_AUTONEG`` u8 autonegotiation status 482 ``ETHTOOL_A_LINKMODES_OURS`` bitset advertised link modes 483 ``ETHTOOL_A_LINKMODES_PEER`` bitset partner link modes 484 ``ETHTOOL_A_LINKMODES_SPEED`` u32 link speed (Mb/s) 485 ``ETHTOOL_A_LINKMODES_DUPLEX`` u8 duplex mode 486 ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG`` u8 Master/slave port mode 487 ``ETHTOOL_A_LINKMODES_RATE_MATCHING`` u8 PHY rate matching 488 ``ETHTOOL_A_LINKMODES_LANES`` u32 lanes 489 ========================================== ====== ========================== 490 491``ETHTOOL_A_LINKMODES_OURS`` bit set allows setting advertised link modes. If 492autonegotiation is on (either set now or kept from before), advertised modes 493are not changed (no ``ETHTOOL_A_LINKMODES_OURS`` attribute) and at least one 494of speed, duplex and lanes is specified, kernel adjusts advertised modes to all 495supported modes matching speed, duplex, lanes or all (whatever is specified). 496This autoselection is done on ethtool side with ioctl interface, netlink 497interface is supposed to allow requesting changes without knowing what exactly 498kernel supports. 499 500 501LINKSTATE_GET 502============= 503 504Requests link state information. Link up/down flag (as provided by 505``ETHTOOL_GLINK`` ioctl command) is provided. Optionally, extended state might 506be provided as well. In general, extended state describes reasons for why a port 507is down, or why it operates in some non-obvious mode. This request does not have 508any attributes. 509 510Request contents: 511 512 ==================================== ====== ========================== 513 ``ETHTOOL_A_LINKSTATE_HEADER`` nested request header 514 ==================================== ====== ========================== 515 516Kernel response contents: 517 518 ==================================== ====== ============================ 519 ``ETHTOOL_A_LINKSTATE_HEADER`` nested reply header 520 ``ETHTOOL_A_LINKSTATE_LINK`` bool link state (up/down) 521 ``ETHTOOL_A_LINKSTATE_SQI`` u32 Current Signal Quality Index 522 ``ETHTOOL_A_LINKSTATE_SQI_MAX`` u32 Max support SQI value 523 ``ETHTOOL_A_LINKSTATE_EXT_STATE`` u8 link extended state 524 ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE`` u8 link extended substate 525 ``ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT`` u32 count of link down events 526 ==================================== ====== ============================ 527 528For most NIC drivers, the value of ``ETHTOOL_A_LINKSTATE_LINK`` returns 529carrier flag provided by ``netif_carrier_ok()`` but there are drivers which 530define their own handler. 531 532``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE`` are 533optional values. ethtool core can provide either both 534``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``, 535or only ``ETHTOOL_A_LINKSTATE_EXT_STATE``, or none of them. 536 537``LINKSTATE_GET`` allows dump requests (kernel returns reply messages for all 538devices supporting the request). 539 540 541Link extended states: 542 543 ================================================ ============================================ 544 ``ETHTOOL_LINK_EXT_STATE_AUTONEG`` States relating to the autonegotiation or 545 issues therein 546 547 ``ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE`` Failure during link training 548 549 ``ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH`` Logical mismatch in physical coding sublayer 550 or forward error correction sublayer 551 552 ``ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY`` Signal integrity issues 553 554 ``ETHTOOL_LINK_EXT_STATE_NO_CABLE`` No cable connected 555 556 ``ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE`` Failure is related to cable, 557 e.g., unsupported cable 558 559 ``ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE`` Failure is related to EEPROM, e.g., failure 560 during reading or parsing the data 561 562 ``ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE`` Failure during calibration algorithm 563 564 ``ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED`` The hardware is not able to provide the 565 power required from cable or module 566 567 ``ETHTOOL_LINK_EXT_STATE_OVERHEAT`` The module is overheated 568 569 ``ETHTOOL_LINK_EXT_STATE_MODULE`` Transceiver module issue 570 ================================================ ============================================ 571 572Link extended substates: 573 574 Autoneg substates: 575 576 =============================================================== ================================ 577 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED`` Peer side is down 578 579 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED`` Ack not received from peer side 580 581 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED`` Next page exchange failed 582 583 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE`` Peer side is down during force 584 mode or there is no agreement of 585 speed 586 587 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE`` Forward error correction modes 588 in both sides are mismatched 589 590 ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD`` No Highest Common Denominator 591 =============================================================== ================================ 592 593 Link training substates: 594 595 =========================================================================== ==================== 596 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED`` Frames were not 597 recognized, the 598 lock failed 599 600 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT`` The lock did not 601 occur before 602 timeout 603 604 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY`` Peer side did not 605 send ready signal 606 after training 607 process 608 609 ``ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT`` Remote side is not 610 ready yet 611 =========================================================================== ==================== 612 613 Link logical mismatch substates: 614 615 ================================================================ =============================== 616 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK`` Physical coding sublayer was 617 not locked in first phase - 618 block lock 619 620 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK`` Physical coding sublayer was 621 not locked in second phase - 622 alignment markers lock 623 624 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS`` Physical coding sublayer did 625 not get align status 626 627 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED`` FC forward error correction is 628 not locked 629 630 ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED`` RS forward error correction is 631 not locked 632 ================================================================ =============================== 633 634 Bad signal integrity substates: 635 636 ================================================================= ============================= 637 ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS`` Large number of physical 638 errors 639 640 ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE`` The system attempted to 641 operate the cable at a rate 642 that is not formally 643 supported, which led to 644 signal integrity issues 645 646 ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_REFERENCE_CLOCK_LOST`` The external clock signal for 647 SerDes is too weak or 648 unavailable. 649 650 ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_ALOS`` The received signal for 651 SerDes is too weak because 652 analog loss of signal. 653 ================================================================= ============================= 654 655 Cable issue substates: 656 657 =================================================== ============================================ 658 ``ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE`` Unsupported cable 659 660 ``ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE`` Cable test failure 661 =================================================== ============================================ 662 663 Transceiver module issue substates: 664 665 =================================================== ============================================ 666 ``ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READY`` The CMIS Module State Machine did not reach 667 the ModuleReady state. For example, if the 668 module is stuck at ModuleFault state 669 =================================================== ============================================ 670 671DEBUG_GET 672========= 673 674Requests debugging settings of a device. At the moment, only message mask is 675provided. 676 677Request contents: 678 679 ==================================== ====== ========================== 680 ``ETHTOOL_A_DEBUG_HEADER`` nested request header 681 ==================================== ====== ========================== 682 683Kernel response contents: 684 685 ==================================== ====== ========================== 686 ``ETHTOOL_A_DEBUG_HEADER`` nested reply header 687 ``ETHTOOL_A_DEBUG_MSGMASK`` bitset message mask 688 ==================================== ====== ========================== 689 690The message mask (``ETHTOOL_A_DEBUG_MSGMASK``) is equal to message level as 691provided by ``ETHTOOL_GMSGLVL`` and set by ``ETHTOOL_SMSGLVL`` in ioctl 692interface. While it is called message level there for historical reasons, most 693drivers and almost all newer drivers use it as a mask of enabled message 694classes (represented by ``NETIF_MSG_*`` constants); therefore netlink 695interface follows its actual use in practice. 696 697``DEBUG_GET`` allows dump requests (kernel returns reply messages for all 698devices supporting the request). 699 700 701DEBUG_SET 702========= 703 704Set or update debugging settings of a device. At the moment, only message mask 705is supported. 706 707Request contents: 708 709 ==================================== ====== ========================== 710 ``ETHTOOL_A_DEBUG_HEADER`` nested request header 711 ``ETHTOOL_A_DEBUG_MSGMASK`` bitset message mask 712 ==================================== ====== ========================== 713 714``ETHTOOL_A_DEBUG_MSGMASK`` bit set allows setting or modifying mask of 715enabled debugging message types for the device. 716 717 718WOL_GET 719======= 720 721Query device wake-on-lan settings. Unlike most "GET" type requests, 722``ETHTOOL_MSG_WOL_GET`` requires (netns) ``CAP_NET_ADMIN`` privileges as it 723(potentially) provides SecureOn(tm) password which is confidential. 724 725Request contents: 726 727 ==================================== ====== ========================== 728 ``ETHTOOL_A_WOL_HEADER`` nested request header 729 ==================================== ====== ========================== 730 731Kernel response contents: 732 733 ==================================== ====== ========================== 734 ``ETHTOOL_A_WOL_HEADER`` nested reply header 735 ``ETHTOOL_A_WOL_MODES`` bitset mask of enabled WoL modes 736 ``ETHTOOL_A_WOL_SOPASS`` binary SecureOn(tm) password 737 ==================================== ====== ========================== 738 739In reply, ``ETHTOOL_A_WOL_MODES`` mask consists of modes supported by the 740device, value of modes which are enabled. ``ETHTOOL_A_WOL_SOPASS`` is only 741included in reply if ``WAKE_MAGICSECURE`` mode is supported. 742 743 744WOL_SET 745======= 746 747Set or update wake-on-lan settings. 748 749Request contents: 750 751 ==================================== ====== ========================== 752 ``ETHTOOL_A_WOL_HEADER`` nested request header 753 ``ETHTOOL_A_WOL_MODES`` bitset enabled WoL modes 754 ``ETHTOOL_A_WOL_SOPASS`` binary SecureOn(tm) password 755 ==================================== ====== ========================== 756 757``ETHTOOL_A_WOL_SOPASS`` is only allowed for devices supporting 758``WAKE_MAGICSECURE`` mode. 759 760 761FEATURES_GET 762============ 763 764Gets netdev features like ``ETHTOOL_GFEATURES`` ioctl request. 765 766Request contents: 767 768 ==================================== ====== ========================== 769 ``ETHTOOL_A_FEATURES_HEADER`` nested request header 770 ==================================== ====== ========================== 771 772Kernel response contents: 773 774 ==================================== ====== ========================== 775 ``ETHTOOL_A_FEATURES_HEADER`` nested reply header 776 ``ETHTOOL_A_FEATURES_HW`` bitset dev->hw_features 777 ``ETHTOOL_A_FEATURES_WANTED`` bitset dev->wanted_features 778 ``ETHTOOL_A_FEATURES_ACTIVE`` bitset dev->features 779 ``ETHTOOL_A_FEATURES_NOCHANGE`` bitset NETIF_F_NEVER_CHANGE 780 ==================================== ====== ========================== 781 782Bitmaps in kernel response have the same meaning as bitmaps used in ioctl 783interference but attribute names are different (they are based on 784corresponding members of struct net_device). Legacy "flags" are not provided, 785if userspace needs them (most likely only ethtool for backward compatibility), 786it can calculate their values from related feature bits itself. 787ETHA_FEATURES_HW uses mask consisting of all features recognized by kernel (to 788provide all names when using verbose bitmap format), the other three use no 789mask (simple bit lists). 790 791 792FEATURES_SET 793============ 794 795Request to set netdev features like ``ETHTOOL_SFEATURES`` ioctl request. 796 797Request contents: 798 799 ==================================== ====== ========================== 800 ``ETHTOOL_A_FEATURES_HEADER`` nested request header 801 ``ETHTOOL_A_FEATURES_WANTED`` bitset requested features 802 ==================================== ====== ========================== 803 804Kernel response contents: 805 806 ==================================== ====== ========================== 807 ``ETHTOOL_A_FEATURES_HEADER`` nested reply header 808 ``ETHTOOL_A_FEATURES_WANTED`` bitset diff wanted vs. result 809 ``ETHTOOL_A_FEATURES_ACTIVE`` bitset diff old vs. new active 810 ==================================== ====== ========================== 811 812Request contains only one bitset which can be either value/mask pair (request 813to change specific feature bits and leave the rest) or only a value (request 814to set all features to specified set). 815 816As request is subject to netdev_change_features() sanity checks, optional 817kernel reply (can be suppressed by ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request 818header) informs client about the actual result. ``ETHTOOL_A_FEATURES_WANTED`` 819reports the difference between client request and actual result: mask consists 820of bits which differ between requested features and result (dev->features 821after the operation), value consists of values of these bits in the request 822(i.e. negated values from resulting features). ``ETHTOOL_A_FEATURES_ACTIVE`` 823reports the difference between old and new dev->features: mask consists of 824bits which have changed, values are their values in new dev->features (after 825the operation). 826 827``ETHTOOL_MSG_FEATURES_NTF`` notification is sent not only if device features 828are modified using ``ETHTOOL_MSG_FEATURES_SET`` request or on of ethtool ioctl 829request but also each time features are modified with netdev_update_features() 830or netdev_change_features(). 831 832 833PRIVFLAGS_GET 834============= 835 836Gets private flags like ``ETHTOOL_GPFLAGS`` ioctl request. 837 838Request contents: 839 840 ==================================== ====== ========================== 841 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested request header 842 ==================================== ====== ========================== 843 844Kernel response contents: 845 846 ==================================== ====== ========================== 847 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested reply header 848 ``ETHTOOL_A_PRIVFLAGS_FLAGS`` bitset private flags 849 ==================================== ====== ========================== 850 851``ETHTOOL_A_PRIVFLAGS_FLAGS`` is a bitset with values of device private flags. 852These flags are defined by driver, their number and names (and also meaning) 853are device dependent. For compact bitset format, names can be retrieved as 854``ETH_SS_PRIV_FLAGS`` string set. If verbose bitset format is requested, 855response uses all private flags supported by the device as mask so that client 856gets the full information without having to fetch the string set with names. 857 858 859PRIVFLAGS_SET 860============= 861 862Sets or modifies values of device private flags like ``ETHTOOL_SPFLAGS`` 863ioctl request. 864 865Request contents: 866 867 ==================================== ====== ========================== 868 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested request header 869 ``ETHTOOL_A_PRIVFLAGS_FLAGS`` bitset private flags 870 ==================================== ====== ========================== 871 872``ETHTOOL_A_PRIVFLAGS_FLAGS`` can either set the whole set of private flags or 873modify only values of some of them. 874 875 876RINGS_GET 877========= 878 879Gets ring sizes like ``ETHTOOL_GRINGPARAM`` ioctl request. 880 881Request contents: 882 883 ==================================== ====== ========================== 884 ``ETHTOOL_A_RINGS_HEADER`` nested request header 885 ==================================== ====== ========================== 886 887Kernel response contents: 888 889 ======================================= ====== =========================== 890 ``ETHTOOL_A_RINGS_HEADER`` nested reply header 891 ``ETHTOOL_A_RINGS_RX_MAX`` u32 max size of RX ring 892 ``ETHTOOL_A_RINGS_RX_MINI_MAX`` u32 max size of RX mini ring 893 ``ETHTOOL_A_RINGS_RX_JUMBO_MAX`` u32 max size of RX jumbo ring 894 ``ETHTOOL_A_RINGS_TX_MAX`` u32 max size of TX ring 895 ``ETHTOOL_A_RINGS_RX`` u32 size of RX ring 896 ``ETHTOOL_A_RINGS_RX_MINI`` u32 size of RX mini ring 897 ``ETHTOOL_A_RINGS_RX_JUMBO`` u32 size of RX jumbo ring 898 ``ETHTOOL_A_RINGS_TX`` u32 size of TX ring 899 ``ETHTOOL_A_RINGS_RX_BUF_LEN`` u32 size of buffers on the ring 900 ``ETHTOOL_A_RINGS_TCP_DATA_SPLIT`` u8 TCP header / data split 901 ``ETHTOOL_A_RINGS_CQE_SIZE`` u32 Size of TX/RX CQE 902 ``ETHTOOL_A_RINGS_TX_PUSH`` u8 flag of TX Push mode 903 ``ETHTOOL_A_RINGS_RX_PUSH`` u8 flag of RX Push mode 904 ``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN`` u32 size of TX push buffer 905 ``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX`` u32 max size of TX push buffer 906 ``ETHTOOL_A_RINGS_HDS_THRESH`` u32 threshold of 907 header / data split 908 ``ETHTOOL_A_RINGS_HDS_THRESH_MAX`` u32 max threshold of 909 header / data split 910 ======================================= ====== =========================== 911 912``ETHTOOL_A_RINGS_TCP_DATA_SPLIT`` indicates whether the device is usable with 913page-flipping TCP zero-copy receive (``getsockopt(TCP_ZEROCOPY_RECEIVE)``). 914If enabled the device is configured to place frame headers and data into 915separate buffers. The device configuration must make it possible to receive 916full memory pages of data, for example because MTU is high enough or through 917HW-GRO. 918 919``ETHTOOL_A_RINGS_[RX|TX]_PUSH`` flag is used to enable descriptor fast 920path to send or receive packets. In ordinary path, driver fills descriptors in DRAM and 921notifies NIC hardware. In fast path, driver pushes descriptors to the device 922through MMIO writes, thus reducing the latency. However, enabling this feature 923may increase the CPU cost. Drivers may enforce additional per-packet 924eligibility checks (e.g. on packet size). 925 926``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN`` specifies the maximum number of bytes of a 927transmitted packet a driver can push directly to the underlying device 928('push' mode). Pushing some of the payload bytes to the device has the 929advantages of reducing latency for small packets by avoiding DMA mapping (same 930as ``ETHTOOL_A_RINGS_TX_PUSH`` parameter) as well as allowing the underlying 931device to process packet headers ahead of fetching its payload. 932This can help the device to make fast actions based on the packet's headers. 933This is similar to the "tx-copybreak" parameter, which copies the packet to a 934preallocated DMA memory area instead of mapping new memory. However, 935tx-push-buff parameter copies the packet directly to the device to allow the 936device to take faster actions on the packet. 937 938RINGS_SET 939========= 940 941Sets ring sizes like ``ETHTOOL_SRINGPARAM`` ioctl request. 942 943Request contents: 944 945 ==================================== ====== =========================== 946 ``ETHTOOL_A_RINGS_HEADER`` nested reply header 947 ``ETHTOOL_A_RINGS_RX`` u32 size of RX ring 948 ``ETHTOOL_A_RINGS_RX_MINI`` u32 size of RX mini ring 949 ``ETHTOOL_A_RINGS_RX_JUMBO`` u32 size of RX jumbo ring 950 ``ETHTOOL_A_RINGS_TX`` u32 size of TX ring 951 ``ETHTOOL_A_RINGS_RX_BUF_LEN`` u32 size of buffers on the ring 952 ``ETHTOOL_A_RINGS_TCP_DATA_SPLIT`` u8 TCP header / data split 953 ``ETHTOOL_A_RINGS_CQE_SIZE`` u32 Size of TX/RX CQE 954 ``ETHTOOL_A_RINGS_TX_PUSH`` u8 flag of TX Push mode 955 ``ETHTOOL_A_RINGS_RX_PUSH`` u8 flag of RX Push mode 956 ``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN`` u32 size of TX push buffer 957 ``ETHTOOL_A_RINGS_HDS_THRESH`` u32 threshold of header / data split 958 ==================================== ====== =========================== 959 960Kernel checks that requested ring sizes do not exceed limits reported by 961driver. Driver may impose additional constraints and may not support all 962attributes. 963 964 965``ETHTOOL_A_RINGS_CQE_SIZE`` specifies the completion queue event size. 966Completion queue events (CQE) are the events posted by NIC to indicate the 967completion status of a packet when the packet is sent (like send success or 968error) or received (like pointers to packet fragments). The CQE size parameter 969enables to modify the CQE size other than default size if NIC supports it. 970A bigger CQE can have more receive buffer pointers, and in turn the NIC can 971transfer a bigger frame from wire. Based on the NIC hardware, the overall 972completion queue size can be adjusted in the driver if CQE size is modified. 973 974``ETHTOOL_A_RINGS_HDS_THRESH`` specifies the threshold value of 975header / data split feature. If a received packet size is larger than this 976threshold value, header and data will be split. 977 978CHANNELS_GET 979============ 980 981Gets channel counts like ``ETHTOOL_GCHANNELS`` ioctl request. 982 983Request contents: 984 985 ==================================== ====== ========================== 986 ``ETHTOOL_A_CHANNELS_HEADER`` nested request header 987 ==================================== ====== ========================== 988 989Kernel response contents: 990 991 ===================================== ====== ========================== 992 ``ETHTOOL_A_CHANNELS_HEADER`` nested reply header 993 ``ETHTOOL_A_CHANNELS_RX_MAX`` u32 max receive channels 994 ``ETHTOOL_A_CHANNELS_TX_MAX`` u32 max transmit channels 995 ``ETHTOOL_A_CHANNELS_OTHER_MAX`` u32 max other channels 996 ``ETHTOOL_A_CHANNELS_COMBINED_MAX`` u32 max combined channels 997 ``ETHTOOL_A_CHANNELS_RX_COUNT`` u32 receive channel count 998 ``ETHTOOL_A_CHANNELS_TX_COUNT`` u32 transmit channel count 999 ``ETHTOOL_A_CHANNELS_OTHER_COUNT`` u32 other channel count 1000 ``ETHTOOL_A_CHANNELS_COMBINED_COUNT`` u32 combined channel count 1001 ===================================== ====== ========================== 1002 1003 1004CHANNELS_SET 1005============ 1006 1007Sets channel counts like ``ETHTOOL_SCHANNELS`` ioctl request. 1008 1009Request contents: 1010 1011 ===================================== ====== ========================== 1012 ``ETHTOOL_A_CHANNELS_HEADER`` nested request header 1013 ``ETHTOOL_A_CHANNELS_RX_COUNT`` u32 receive channel count 1014 ``ETHTOOL_A_CHANNELS_TX_COUNT`` u32 transmit channel count 1015 ``ETHTOOL_A_CHANNELS_OTHER_COUNT`` u32 other channel count 1016 ``ETHTOOL_A_CHANNELS_COMBINED_COUNT`` u32 combined channel count 1017 ===================================== ====== ========================== 1018 1019Kernel checks that requested channel counts do not exceed limits reported by 1020driver. Driver may impose additional constraints and may not support all 1021attributes. 1022 1023 1024COALESCE_GET 1025============ 1026 1027Gets coalescing parameters like ``ETHTOOL_GCOALESCE`` ioctl request. 1028 1029Request contents: 1030 1031 ==================================== ====== ========================== 1032 ``ETHTOOL_A_COALESCE_HEADER`` nested request header 1033 ==================================== ====== ========================== 1034 1035Kernel response contents: 1036 1037 =========================================== ====== ======================= 1038 ``ETHTOOL_A_COALESCE_HEADER`` nested reply header 1039 ``ETHTOOL_A_COALESCE_RX_USECS`` u32 delay (us), normal Rx 1040 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES`` u32 max packets, normal Rx 1041 ``ETHTOOL_A_COALESCE_RX_USECS_IRQ`` u32 delay (us), Rx in IRQ 1042 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ`` u32 max packets, Rx in IRQ 1043 ``ETHTOOL_A_COALESCE_TX_USECS`` u32 delay (us), normal Tx 1044 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES`` u32 max packets, normal Tx 1045 ``ETHTOOL_A_COALESCE_TX_USECS_IRQ`` u32 delay (us), Tx in IRQ 1046 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ`` u32 IRQ packets, Tx in IRQ 1047 ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS`` u32 delay of stats update 1048 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX`` bool adaptive Rx coalesce 1049 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX`` bool adaptive Tx coalesce 1050 ``ETHTOOL_A_COALESCE_PKT_RATE_LOW`` u32 threshold for low rate 1051 ``ETHTOOL_A_COALESCE_RX_USECS_LOW`` u32 delay (us), low Rx 1052 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW`` u32 max packets, low Rx 1053 ``ETHTOOL_A_COALESCE_TX_USECS_LOW`` u32 delay (us), low Tx 1054 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW`` u32 max packets, low Tx 1055 ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH`` u32 threshold for high rate 1056 ``ETHTOOL_A_COALESCE_RX_USECS_HIGH`` u32 delay (us), high Rx 1057 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH`` u32 max packets, high Rx 1058 ``ETHTOOL_A_COALESCE_TX_USECS_HIGH`` u32 delay (us), high Tx 1059 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH`` u32 max packets, high Tx 1060 ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL`` u32 rate sampling interval 1061 ``ETHTOOL_A_COALESCE_USE_CQE_TX`` bool timer reset mode, Tx 1062 ``ETHTOOL_A_COALESCE_USE_CQE_RX`` bool timer reset mode, Rx 1063 ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES`` u32 max aggr size, Tx 1064 ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES`` u32 max aggr packets, Tx 1065 ``ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS`` u32 time (us), aggr, Tx 1066 ``ETHTOOL_A_COALESCE_RX_PROFILE`` nested profile of DIM, Rx 1067 ``ETHTOOL_A_COALESCE_TX_PROFILE`` nested profile of DIM, Tx 1068 =========================================== ====== ======================= 1069 1070Attributes are only included in reply if their value is not zero or the 1071corresponding bit in ``ethtool_ops::supported_coalesce_params`` is set (i.e. 1072they are declared as supported by driver). 1073 1074Timer reset mode (``ETHTOOL_A_COALESCE_USE_CQE_TX`` and 1075``ETHTOOL_A_COALESCE_USE_CQE_RX``) controls the interaction between packet 1076arrival and the various time based delay parameters. By default timers are 1077expected to limit the max delay between any packet arrival/departure and a 1078corresponding interrupt. In this mode timer should be started by packet 1079arrival (sometimes delivery of previous interrupt) and reset when interrupt 1080is delivered. 1081Setting the appropriate attribute to 1 will enable ``CQE`` mode, where 1082each packet event resets the timer. In this mode timer is used to force 1083the interrupt if queue goes idle, while busy queues depend on the packet 1084limit to trigger interrupts. 1085 1086Tx aggregation consists of copying frames into a contiguous buffer so that they 1087can be submitted as a single IO operation. ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES`` 1088describes the maximum size in bytes for the submitted buffer. 1089``ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES`` describes the maximum number of frames 1090that can be aggregated into a single buffer. 1091``ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS`` describes the amount of time in usecs, 1092counted since the first packet arrival in an aggregated block, after which the 1093block should be sent. 1094This feature is mainly of interest for specific USB devices which does not cope 1095well with frequent small-sized URBs transmissions. 1096 1097``ETHTOOL_A_COALESCE_RX_PROFILE`` and ``ETHTOOL_A_COALESCE_TX_PROFILE`` refer 1098to DIM parameters, see `Generic Network Dynamic Interrupt Moderation (Net DIM) 1099<https://www.kernel.org/doc/Documentation/networking/net_dim.rst>`_. 1100 1101COALESCE_SET 1102============ 1103 1104Sets coalescing parameters like ``ETHTOOL_SCOALESCE`` ioctl request. 1105 1106Request contents: 1107 1108 =========================================== ====== ======================= 1109 ``ETHTOOL_A_COALESCE_HEADER`` nested request header 1110 ``ETHTOOL_A_COALESCE_RX_USECS`` u32 delay (us), normal Rx 1111 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES`` u32 max packets, normal Rx 1112 ``ETHTOOL_A_COALESCE_RX_USECS_IRQ`` u32 delay (us), Rx in IRQ 1113 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ`` u32 max packets, Rx in IRQ 1114 ``ETHTOOL_A_COALESCE_TX_USECS`` u32 delay (us), normal Tx 1115 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES`` u32 max packets, normal Tx 1116 ``ETHTOOL_A_COALESCE_TX_USECS_IRQ`` u32 delay (us), Tx in IRQ 1117 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ`` u32 IRQ packets, Tx in IRQ 1118 ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS`` u32 delay of stats update 1119 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX`` bool adaptive Rx coalesce 1120 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX`` bool adaptive Tx coalesce 1121 ``ETHTOOL_A_COALESCE_PKT_RATE_LOW`` u32 threshold for low rate 1122 ``ETHTOOL_A_COALESCE_RX_USECS_LOW`` u32 delay (us), low Rx 1123 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW`` u32 max packets, low Rx 1124 ``ETHTOOL_A_COALESCE_TX_USECS_LOW`` u32 delay (us), low Tx 1125 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW`` u32 max packets, low Tx 1126 ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH`` u32 threshold for high rate 1127 ``ETHTOOL_A_COALESCE_RX_USECS_HIGH`` u32 delay (us), high Rx 1128 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH`` u32 max packets, high Rx 1129 ``ETHTOOL_A_COALESCE_TX_USECS_HIGH`` u32 delay (us), high Tx 1130 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH`` u32 max packets, high Tx 1131 ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL`` u32 rate sampling interval 1132 ``ETHTOOL_A_COALESCE_USE_CQE_TX`` bool timer reset mode, Tx 1133 ``ETHTOOL_A_COALESCE_USE_CQE_RX`` bool timer reset mode, Rx 1134 ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES`` u32 max aggr size, Tx 1135 ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES`` u32 max aggr packets, Tx 1136 ``ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS`` u32 time (us), aggr, Tx 1137 ``ETHTOOL_A_COALESCE_RX_PROFILE`` nested profile of DIM, Rx 1138 ``ETHTOOL_A_COALESCE_TX_PROFILE`` nested profile of DIM, Tx 1139 =========================================== ====== ======================= 1140 1141Request is rejected if it attributes declared as unsupported by driver (i.e. 1142such that the corresponding bit in ``ethtool_ops::supported_coalesce_params`` 1143is not set), regardless of their values. Driver may impose additional 1144constraints on coalescing parameters and their values. 1145 1146Compared to requests issued via the ``ioctl()`` netlink version of this request 1147will try harder to make sure that values specified by the user have been applied 1148and may call the driver twice. 1149 1150 1151PAUSE_GET 1152========= 1153 1154Gets pause frame settings like ``ETHTOOL_GPAUSEPARAM`` ioctl request. 1155 1156Request contents: 1157 1158 ===================================== ====== ========================== 1159 ``ETHTOOL_A_PAUSE_HEADER`` nested request header 1160 ``ETHTOOL_A_PAUSE_STATS_SRC`` u32 source of statistics 1161 ===================================== ====== ========================== 1162 1163``ETHTOOL_A_PAUSE_STATS_SRC`` is optional. It takes values from: 1164 1165.. kernel-doc:: include/uapi/linux/ethtool.h 1166 :identifiers: ethtool_mac_stats_src 1167 1168If absent from the request, stats will be provided with 1169an ``ETHTOOL_A_PAUSE_STATS_SRC`` attribute in the response equal to 1170``ETHTOOL_MAC_STATS_SRC_AGGREGATE``. 1171 1172Kernel response contents: 1173 1174 ===================================== ====== ========================== 1175 ``ETHTOOL_A_PAUSE_HEADER`` nested request header 1176 ``ETHTOOL_A_PAUSE_AUTONEG`` bool pause autonegotiation 1177 ``ETHTOOL_A_PAUSE_RX`` bool receive pause frames 1178 ``ETHTOOL_A_PAUSE_TX`` bool transmit pause frames 1179 ``ETHTOOL_A_PAUSE_STATS`` nested pause statistics 1180 ===================================== ====== ========================== 1181 1182``ETHTOOL_A_PAUSE_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set 1183in ``ETHTOOL_A_HEADER_FLAGS``. 1184It will be empty if driver did not report any statistics. Drivers fill in 1185the statistics in the following structure: 1186 1187.. kernel-doc:: include/linux/ethtool.h 1188 :identifiers: ethtool_pause_stats 1189 1190Each member has a corresponding attribute defined. 1191 1192PAUSE_SET 1193========= 1194 1195Sets pause parameters like ``ETHTOOL_GPAUSEPARAM`` ioctl request. 1196 1197Request contents: 1198 1199 ===================================== ====== ========================== 1200 ``ETHTOOL_A_PAUSE_HEADER`` nested request header 1201 ``ETHTOOL_A_PAUSE_AUTONEG`` bool pause autonegotiation 1202 ``ETHTOOL_A_PAUSE_RX`` bool receive pause frames 1203 ``ETHTOOL_A_PAUSE_TX`` bool transmit pause frames 1204 ===================================== ====== ========================== 1205 1206 1207EEE_GET 1208======= 1209 1210Gets Energy Efficient Ethernet settings like ``ETHTOOL_GEEE`` ioctl request. 1211 1212Request contents: 1213 1214 ===================================== ====== ========================== 1215 ``ETHTOOL_A_EEE_HEADER`` nested request header 1216 ===================================== ====== ========================== 1217 1218Kernel response contents: 1219 1220 ===================================== ====== ========================== 1221 ``ETHTOOL_A_EEE_HEADER`` nested request header 1222 ``ETHTOOL_A_EEE_MODES_OURS`` bool supported/advertised modes 1223 ``ETHTOOL_A_EEE_MODES_PEER`` bool peer advertised link modes 1224 ``ETHTOOL_A_EEE_ACTIVE`` bool EEE is actively used 1225 ``ETHTOOL_A_EEE_ENABLED`` bool EEE is enabled 1226 ``ETHTOOL_A_EEE_TX_LPI_ENABLED`` bool Tx lpi enabled 1227 ``ETHTOOL_A_EEE_TX_LPI_TIMER`` u32 Tx lpi timeout (in us) 1228 ===================================== ====== ========================== 1229 1230In ``ETHTOOL_A_EEE_MODES_OURS``, mask consists of link modes for which EEE is 1231enabled, value of link modes for which EEE is advertised. Link modes for which 1232peer advertises EEE are listed in ``ETHTOOL_A_EEE_MODES_PEER`` (no mask). The 1233netlink interface allows reporting EEE status for all link modes but only 1234first 32 are provided by the ``ethtool_ops`` callback. 1235 1236 1237EEE_SET 1238======= 1239 1240Sets Energy Efficient Ethernet parameters like ``ETHTOOL_SEEE`` ioctl request. 1241 1242Request contents: 1243 1244 ===================================== ====== ========================== 1245 ``ETHTOOL_A_EEE_HEADER`` nested request header 1246 ``ETHTOOL_A_EEE_MODES_OURS`` bool advertised modes 1247 ``ETHTOOL_A_EEE_ENABLED`` bool EEE is enabled 1248 ``ETHTOOL_A_EEE_TX_LPI_ENABLED`` bool Tx lpi enabled 1249 ``ETHTOOL_A_EEE_TX_LPI_TIMER`` u32 Tx lpi timeout (in us) 1250 ===================================== ====== ========================== 1251 1252``ETHTOOL_A_EEE_MODES_OURS`` is used to either list link modes to advertise 1253EEE for (if there is no mask) or specify changes to the list (if there is 1254a mask). The netlink interface allows reporting EEE status for all link modes 1255but only first 32 can be set at the moment as that is what the ``ethtool_ops`` 1256callback supports. 1257 1258 1259TSINFO_GET 1260========== 1261 1262Gets timestamping information like ``ETHTOOL_GET_TS_INFO`` ioctl request. 1263 1264Request contents: 1265 1266 ======================================== ====== ============================ 1267 ``ETHTOOL_A_TSINFO_HEADER`` nested request header 1268 ``ETHTOOL_A_TSINFO_HWTSTAMP_PROVIDER`` nested PTP hw clock provider 1269 ======================================== ====== ============================ 1270 1271Kernel response contents: 1272 1273 ===================================== ====== ========================== 1274 ``ETHTOOL_A_TSINFO_HEADER`` nested request header 1275 ``ETHTOOL_A_TSINFO_TIMESTAMPING`` bitset SO_TIMESTAMPING flags 1276 ``ETHTOOL_A_TSINFO_TX_TYPES`` bitset supported Tx types 1277 ``ETHTOOL_A_TSINFO_RX_FILTERS`` bitset supported Rx filters 1278 ``ETHTOOL_A_TSINFO_PHC_INDEX`` u32 PTP hw clock index 1279 ``ETHTOOL_A_TSINFO_STATS`` nested HW timestamping statistics 1280 ===================================== ====== ========================== 1281 1282``ETHTOOL_A_TSINFO_PHC_INDEX`` is absent if there is no associated PHC (there 1283is no special value for this case). The bitset attributes are omitted if they 1284would be empty (no bit set). 1285 1286Additional hardware timestamping statistics response contents: 1287 1288 ================================================== ====== ===================== 1289 ``ETHTOOL_A_TS_STAT_TX_PKTS`` uint Packets with Tx 1290 HW timestamps 1291 ``ETHTOOL_A_TS_STAT_TX_LOST`` uint Tx HW timestamp 1292 not arrived count 1293 ``ETHTOOL_A_TS_STAT_TX_ERR`` uint HW error request 1294 Tx timestamp count 1295 ``ETHTOOL_A_TS_STAT_TX_ONESTEP_PKTS_UNCONFIRMED`` uint Packets with one-step 1296 HW TX timestamps with 1297 unconfirmed delivery 1298 ================================================== ====== ===================== 1299 1300CABLE_TEST 1301========== 1302 1303Start a cable test. 1304 1305Request contents: 1306 1307 ==================================== ====== ========================== 1308 ``ETHTOOL_A_CABLE_TEST_HEADER`` nested request header 1309 ==================================== ====== ========================== 1310 1311Notification contents: 1312 1313An Ethernet cable typically contains 1, 2 or 4 pairs. The length of 1314the pair can only be measured when there is a fault in the pair and 1315hence a reflection. Information about the fault may not be available, 1316depending on the specific hardware. Hence the contents of the notify 1317message are mostly optional. The attributes can be repeated an 1318arbitrary number of times, in an arbitrary order, for an arbitrary 1319number of pairs. 1320 1321The example shows the notification sent when the test is completed for 1322a T2 cable, i.e. two pairs. One pair is OK and hence has no length 1323information. The second pair has a fault and does have length 1324information. 1325 1326 +---------------------------------------------+--------+---------------------+ 1327 | ``ETHTOOL_A_CABLE_TEST_HEADER`` | nested | reply header | 1328 +---------------------------------------------+--------+---------------------+ 1329 | ``ETHTOOL_A_CABLE_TEST_STATUS`` | u8 | completed | 1330 +---------------------------------------------+--------+---------------------+ 1331 | ``ETHTOOL_A_CABLE_TEST_NTF_NEST`` | nested | all the results | 1332 +-+-------------------------------------------+--------+---------------------+ 1333 | | ``ETHTOOL_A_CABLE_NEST_RESULT`` | nested | cable test result | 1334 +-+-+-----------------------------------------+--------+---------------------+ 1335 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1336 +-+-+-----------------------------------------+--------+---------------------+ 1337 | | | ``ETHTOOL_A_CABLE_RESULTS_CODE`` | u8 | result code | 1338 +-+-+-----------------------------------------+--------+---------------------+ 1339 | | ``ETHTOOL_A_CABLE_NEST_RESULT`` | nested | cable test results | 1340 +-+-+-----------------------------------------+--------+---------------------+ 1341 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1342 +-+-+-----------------------------------------+--------+---------------------+ 1343 | | | ``ETHTOOL_A_CABLE_RESULTS_CODE`` | u8 | result code | 1344 +-+-+-----------------------------------------+--------+---------------------+ 1345 | | | ``ETHTOOL_A_CABLE_RESULT_SRC`` | u32 | information source | 1346 +-+-+-----------------------------------------+--------+---------------------+ 1347 | | ``ETHTOOL_A_CABLE_NEST_FAULT_LENGTH`` | nested | cable length | 1348 +-+-+-----------------------------------------+--------+---------------------+ 1349 | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR`` | u8 | pair number | 1350 +-+-+-----------------------------------------+--------+---------------------+ 1351 | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_CM`` | u32 | length in cm | 1352 +-+-+-----------------------------------------+--------+---------------------+ 1353 | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_SRC`` | u32 | information source | 1354 +-+-+-----------------------------------------+--------+---------------------+ 1355 1356 1357CABLE_TEST TDR 1358============== 1359 1360Start a cable test and report raw TDR data 1361 1362Request contents: 1363 1364 +--------------------------------------------+--------+-----------------------+ 1365 | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER`` | nested | reply header | 1366 +--------------------------------------------+--------+-----------------------+ 1367 | ``ETHTOOL_A_CABLE_TEST_TDR_CFG`` | nested | test configuration | 1368 +-+------------------------------------------+--------+-----------------------+ 1369 | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE`` | u32 | first data distance | 1370 +-+-+----------------------------------------+--------+-----------------------+ 1371 | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE`` | u32 | last data distance | 1372 +-+-+----------------------------------------+--------+-----------------------+ 1373 | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE`` | u32 | distance of each step | 1374 +-+-+----------------------------------------+--------+-----------------------+ 1375 | | ``ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR`` | u8 | pair to test | 1376 +-+-+----------------------------------------+--------+-----------------------+ 1377 1378The ETHTOOL_A_CABLE_TEST_TDR_CFG is optional, as well as all members 1379of the nest. All distances are expressed in centimeters. The PHY takes 1380the distances as a guide, and rounds to the nearest distance it 1381actually supports. If a pair is passed, only that one pair will be 1382tested. Otherwise all pairs are tested. 1383 1384Notification contents: 1385 1386Raw TDR data is gathered by sending a pulse down the cable and 1387recording the amplitude of the reflected pulse for a given distance. 1388 1389It can take a number of seconds to collect TDR data, especial if the 1390full 100 meters is probed at 1 meter intervals. When the test is 1391started a notification will be sent containing just 1392ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value 1393ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED. 1394 1395When the test has completed a second notification will be sent 1396containing ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value 1397ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED and the TDR data. 1398 1399The message may optionally contain the amplitude of the pulse send 1400down the cable. This is measured in mV. A reflection should not be 1401bigger than transmitted pulse. 1402 1403Before the raw TDR data should be an ETHTOOL_A_CABLE_TDR_NEST_STEP 1404nest containing information about the distance along the cable for the 1405first reading, the last reading, and the step between each 1406reading. Distances are measured in centimeters. These should be the 1407exact values the PHY used. These may be different to what the user 1408requested, if the native measurement resolution is greater than 1 cm. 1409 1410For each step along the cable, a ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE is 1411used to report the amplitude of the reflection for a given pair. 1412 1413 +---------------------------------------------+--------+----------------------+ 1414 | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER`` | nested | reply header | 1415 +---------------------------------------------+--------+----------------------+ 1416 | ``ETHTOOL_A_CABLE_TEST_TDR_STATUS`` | u8 | completed | 1417 +---------------------------------------------+--------+----------------------+ 1418 | ``ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST`` | nested | all the results | 1419 +-+-------------------------------------------+--------+----------------------+ 1420 | | ``ETHTOOL_A_CABLE_TDR_NEST_PULSE`` | nested | TX Pulse amplitude | 1421 +-+-+-----------------------------------------+--------+----------------------+ 1422 | | | ``ETHTOOL_A_CABLE_PULSE_mV`` | s16 | Pulse amplitude | 1423 +-+-+-----------------------------------------+--------+----------------------+ 1424 | | ``ETHTOOL_A_CABLE_NEST_STEP`` | nested | TDR step info | 1425 +-+-+-----------------------------------------+--------+----------------------+ 1426 | | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE`` | u32 | First data distance | 1427 +-+-+-----------------------------------------+--------+----------------------+ 1428 | | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE`` | u32 | Last data distance | 1429 +-+-+-----------------------------------------+--------+----------------------+ 1430 | | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE`` | u32 | distance of each step| 1431 +-+-+-----------------------------------------+--------+----------------------+ 1432 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE`` | nested | Reflection amplitude | 1433 +-+-+-----------------------------------------+--------+----------------------+ 1434 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1435 +-+-+-----------------------------------------+--------+----------------------+ 1436 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV`` | s16 | Reflection amplitude | 1437 +-+-+-----------------------------------------+--------+----------------------+ 1438 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE`` | nested | Reflection amplitude | 1439 +-+-+-----------------------------------------+--------+----------------------+ 1440 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1441 +-+-+-----------------------------------------+--------+----------------------+ 1442 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV`` | s16 | Reflection amplitude | 1443 +-+-+-----------------------------------------+--------+----------------------+ 1444 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE`` | nested | Reflection amplitude | 1445 +-+-+-----------------------------------------+--------+----------------------+ 1446 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR`` | u8 | pair number | 1447 +-+-+-----------------------------------------+--------+----------------------+ 1448 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV`` | s16 | Reflection amplitude | 1449 +-+-+-----------------------------------------+--------+----------------------+ 1450 1451TUNNEL_INFO 1452=========== 1453 1454Gets information about the tunnel state NIC is aware of. 1455 1456Request contents: 1457 1458 ===================================== ====== ========================== 1459 ``ETHTOOL_A_TUNNEL_INFO_HEADER`` nested request header 1460 ===================================== ====== ========================== 1461 1462Kernel response contents: 1463 1464 +---------------------------------------------+--------+---------------------+ 1465 | ``ETHTOOL_A_TUNNEL_INFO_HEADER`` | nested | reply header | 1466 +---------------------------------------------+--------+---------------------+ 1467 | ``ETHTOOL_A_TUNNEL_INFO_UDP_PORTS`` | nested | all UDP port tables | 1468 +-+-------------------------------------------+--------+---------------------+ 1469 | | ``ETHTOOL_A_TUNNEL_UDP_TABLE`` | nested | one UDP port table | 1470 +-+-+-----------------------------------------+--------+---------------------+ 1471 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE`` | u32 | max size of the | 1472 | | | | | table | 1473 +-+-+-----------------------------------------+--------+---------------------+ 1474 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES`` | bitset | tunnel types which | 1475 | | | | | table can hold | 1476 +-+-+-----------------------------------------+--------+---------------------+ 1477 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY`` | nested | offloaded UDP port | 1478 +-+-+-+---------------------------------------+--------+---------------------+ 1479 | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT`` | be16 | UDP port | 1480 +-+-+-+---------------------------------------+--------+---------------------+ 1481 | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE`` | u32 | tunnel type | 1482 +-+-+-+---------------------------------------+--------+---------------------+ 1483 1484For UDP tunnel table empty ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES`` indicates that 1485the table contains static entries, hard-coded by the NIC. 1486 1487FEC_GET 1488======= 1489 1490Gets FEC configuration and state like ``ETHTOOL_GFECPARAM`` ioctl request. 1491 1492Request contents: 1493 1494 ===================================== ====== ========================== 1495 ``ETHTOOL_A_FEC_HEADER`` nested request header 1496 ===================================== ====== ========================== 1497 1498Kernel response contents: 1499 1500 ===================================== ====== ========================== 1501 ``ETHTOOL_A_FEC_HEADER`` nested request header 1502 ``ETHTOOL_A_FEC_MODES`` bitset configured modes 1503 ``ETHTOOL_A_FEC_AUTO`` bool FEC mode auto selection 1504 ``ETHTOOL_A_FEC_ACTIVE`` u32 index of active FEC mode 1505 ``ETHTOOL_A_FEC_STATS`` nested FEC statistics 1506 ===================================== ====== ========================== 1507 1508``ETHTOOL_A_FEC_ACTIVE`` is the bit index of the FEC link mode currently 1509active on the interface. This attribute may not be present if device does 1510not support FEC. 1511 1512``ETHTOOL_A_FEC_MODES`` and ``ETHTOOL_A_FEC_AUTO`` are only meaningful when 1513autonegotiation is disabled. If ``ETHTOOL_A_FEC_AUTO`` is non-zero driver will 1514select the FEC mode automatically based on the parameters of the SFP module. 1515This is equivalent to the ``ETHTOOL_FEC_AUTO`` bit of the ioctl interface. 1516``ETHTOOL_A_FEC_MODES`` carry the current FEC configuration using link mode 1517bits (rather than old ``ETHTOOL_FEC_*`` bits). 1518 1519``ETHTOOL_A_FEC_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set in 1520``ETHTOOL_A_HEADER_FLAGS``. 1521Each attribute carries an array of 64bit statistics. First entry in the array 1522contains the total number of events on the port, while the following entries 1523are counters corresponding to lanes/PCS instances. The number of entries in 1524the array will be: 1525 1526+--------------+---------------------------------------------+ 1527| `0` | device does not support FEC statistics | 1528+--------------+---------------------------------------------+ 1529| `1` | device does not support per-lane break down | 1530+--------------+---------------------------------------------+ 1531| `1 + #lanes` | device has full support for FEC stats | 1532+--------------+---------------------------------------------+ 1533 1534Drivers fill in the statistics in the following structure: 1535 1536.. kernel-doc:: include/linux/ethtool.h 1537 :identifiers: ethtool_fec_stats 1538 1539FEC_SET 1540======= 1541 1542Sets FEC parameters like ``ETHTOOL_SFECPARAM`` ioctl request. 1543 1544Request contents: 1545 1546 ===================================== ====== ========================== 1547 ``ETHTOOL_A_FEC_HEADER`` nested request header 1548 ``ETHTOOL_A_FEC_MODES`` bitset configured modes 1549 ``ETHTOOL_A_FEC_AUTO`` bool FEC mode auto selection 1550 ===================================== ====== ========================== 1551 1552``FEC_SET`` is only meaningful when autonegotiation is disabled. Otherwise 1553FEC mode is selected as part of autonegotiation. 1554 1555``ETHTOOL_A_FEC_MODES`` selects which FEC mode should be used. It's recommended 1556to set only one bit, if multiple bits are set driver may choose between them 1557in an implementation specific way. 1558 1559``ETHTOOL_A_FEC_AUTO`` requests the driver to choose FEC mode based on SFP 1560module parameters. This does not mean autonegotiation. 1561 1562MODULE_EEPROM_GET 1563================= 1564 1565Fetch module EEPROM data dump. 1566This interface is designed to allow dumps of at most 1/2 page at once. This 1567means only dumps of 128 (or less) bytes are allowed, without crossing half page 1568boundary located at offset 128. For pages other than 0 only high 128 bytes are 1569accessible. 1570 1571Request contents: 1572 1573 ======================================= ====== ========================== 1574 ``ETHTOOL_A_MODULE_EEPROM_HEADER`` nested request header 1575 ``ETHTOOL_A_MODULE_EEPROM_OFFSET`` u32 offset within a page 1576 ``ETHTOOL_A_MODULE_EEPROM_LENGTH`` u32 amount of bytes to read 1577 ``ETHTOOL_A_MODULE_EEPROM_PAGE`` u8 page number 1578 ``ETHTOOL_A_MODULE_EEPROM_BANK`` u8 bank number 1579 ``ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS`` u8 page I2C address 1580 ======================================= ====== ========================== 1581 1582If ``ETHTOOL_A_MODULE_EEPROM_BANK`` is not specified, bank 0 is assumed. 1583 1584Kernel response contents: 1585 1586 +---------------------------------------------+--------+---------------------+ 1587 | ``ETHTOOL_A_MODULE_EEPROM_HEADER`` | nested | reply header | 1588 +---------------------------------------------+--------+---------------------+ 1589 | ``ETHTOOL_A_MODULE_EEPROM_DATA`` | binary | array of bytes from | 1590 | | | module EEPROM | 1591 +---------------------------------------------+--------+---------------------+ 1592 1593``ETHTOOL_A_MODULE_EEPROM_DATA`` has an attribute length equal to the amount of 1594bytes driver actually read. 1595 1596STATS_GET 1597========= 1598 1599Get standard statistics for the interface. Note that this is not 1600a re-implementation of ``ETHTOOL_GSTATS`` which exposed driver-defined 1601stats. 1602 1603Request contents: 1604 1605 ======================================= ====== ========================== 1606 ``ETHTOOL_A_STATS_HEADER`` nested request header 1607 ``ETHTOOL_A_STATS_SRC`` u32 source of statistics 1608 ``ETHTOOL_A_STATS_GROUPS`` bitset requested groups of stats 1609 ======================================= ====== ========================== 1610 1611Kernel response contents: 1612 1613 +-----------------------------------+--------+--------------------------------+ 1614 | ``ETHTOOL_A_STATS_HEADER`` | nested | reply header | 1615 +-----------------------------------+--------+--------------------------------+ 1616 | ``ETHTOOL_A_STATS_SRC`` | u32 | source of statistics | 1617 +-----------------------------------+--------+--------------------------------+ 1618 | ``ETHTOOL_A_STATS_GRP`` | nested | one or more group of stats | 1619 +-+---------------------------------+--------+--------------------------------+ 1620 | | ``ETHTOOL_A_STATS_GRP_ID`` | u32 | group ID - ``ETHTOOL_STATS_*`` | 1621 +-+---------------------------------+--------+--------------------------------+ 1622 | | ``ETHTOOL_A_STATS_GRP_SS_ID`` | u32 | string set ID for names | 1623 +-+---------------------------------+--------+--------------------------------+ 1624 | | ``ETHTOOL_A_STATS_GRP_STAT`` | nested | nest containing a statistic | 1625 +-+---------------------------------+--------+--------------------------------+ 1626 | | ``ETHTOOL_A_STATS_GRP_HIST_RX`` | nested | histogram statistic (Rx) | 1627 +-+---------------------------------+--------+--------------------------------+ 1628 | | ``ETHTOOL_A_STATS_GRP_HIST_TX`` | nested | histogram statistic (Tx) | 1629 +-+---------------------------------+--------+--------------------------------+ 1630 1631Users specify which groups of statistics they are requesting via 1632the ``ETHTOOL_A_STATS_GROUPS`` bitset. Currently defined values are: 1633 1634 ====================== ======== =============================================== 1635 ETHTOOL_STATS_ETH_MAC eth-mac Basic IEEE 802.3 MAC statistics (30.3.1.1.*) 1636 ETHTOOL_STATS_ETH_PHY eth-phy Basic IEEE 802.3 PHY statistics (30.3.2.1.*) 1637 ETHTOOL_STATS_ETH_CTRL eth-ctrl Basic IEEE 802.3 MAC Ctrl statistics (30.3.3.*) 1638 ETHTOOL_STATS_RMON rmon RMON (RFC 2819) statistics 1639 ETHTOOL_STATS_PHY phy Additional PHY statistics, not defined by IEEE 1640 ====================== ======== =============================================== 1641 1642Each group should have a corresponding ``ETHTOOL_A_STATS_GRP`` in the reply. 1643``ETHTOOL_A_STATS_GRP_ID`` identifies which group's statistics nest contains. 1644``ETHTOOL_A_STATS_GRP_SS_ID`` identifies the string set ID for the names of 1645the statistics in the group, if available. 1646 1647Statistics are added to the ``ETHTOOL_A_STATS_GRP`` nest under 1648``ETHTOOL_A_STATS_GRP_STAT``. ``ETHTOOL_A_STATS_GRP_STAT`` should contain 1649single 8 byte (u64) attribute inside - the type of that attribute is 1650the statistic ID and the value is the value of the statistic. 1651Each group has its own interpretation of statistic IDs. 1652Attribute IDs correspond to strings from the string set identified 1653by ``ETHTOOL_A_STATS_GRP_SS_ID``. Complex statistics (such as RMON histogram 1654entries) are also listed inside ``ETHTOOL_A_STATS_GRP`` and do not have 1655a string defined in the string set. 1656 1657RMON "histogram" counters count number of packets within given size range. 1658Because RFC does not specify the ranges beyond the standard 1518 MTU devices 1659differ in definition of buckets. For this reason the definition of packet ranges 1660is left to each driver. 1661 1662``ETHTOOL_A_STATS_GRP_HIST_RX`` and ``ETHTOOL_A_STATS_GRP_HIST_TX`` nests 1663contain the following attributes: 1664 1665 ================================= ====== =================================== 1666 ETHTOOL_A_STATS_RMON_HIST_BKT_LOW u32 low bound of the packet size bucket 1667 ETHTOOL_A_STATS_RMON_HIST_BKT_HI u32 high bound of the bucket 1668 ETHTOOL_A_STATS_RMON_HIST_VAL u64 packet counter 1669 ================================= ====== =================================== 1670 1671Low and high bounds are inclusive, for example: 1672 1673 ============================= ==== ==== 1674 RFC statistic low high 1675 ============================= ==== ==== 1676 etherStatsPkts64Octets 0 64 1677 etherStatsPkts512to1023Octets 512 1023 1678 ============================= ==== ==== 1679 1680``ETHTOOL_A_STATS_SRC`` is optional. Similar to ``PAUSE_GET``, it takes values 1681from ``enum ethtool_mac_stats_src``. If absent from the request, stats will be 1682provided with an ``ETHTOOL_A_STATS_SRC`` attribute in the response equal to 1683``ETHTOOL_MAC_STATS_SRC_AGGREGATE``. 1684 1685PHC_VCLOCKS_GET 1686=============== 1687 1688Query device PHC virtual clocks information. 1689 1690Request contents: 1691 1692 ==================================== ====== ========================== 1693 ``ETHTOOL_A_PHC_VCLOCKS_HEADER`` nested request header 1694 ==================================== ====== ========================== 1695 1696Kernel response contents: 1697 1698 ==================================== ====== ========================== 1699 ``ETHTOOL_A_PHC_VCLOCKS_HEADER`` nested reply header 1700 ``ETHTOOL_A_PHC_VCLOCKS_NUM`` u32 PHC virtual clocks number 1701 ``ETHTOOL_A_PHC_VCLOCKS_INDEX`` s32 PHC index array 1702 ==================================== ====== ========================== 1703 1704MODULE_GET 1705========== 1706 1707Gets transceiver module parameters. 1708 1709Request contents: 1710 1711 ===================================== ====== ========================== 1712 ``ETHTOOL_A_MODULE_HEADER`` nested request header 1713 ===================================== ====== ========================== 1714 1715Kernel response contents: 1716 1717 ====================================== ====== ========================== 1718 ``ETHTOOL_A_MODULE_HEADER`` nested reply header 1719 ``ETHTOOL_A_MODULE_POWER_MODE_POLICY`` u8 power mode policy 1720 ``ETHTOOL_A_MODULE_POWER_MODE`` u8 operational power mode 1721 ====================================== ====== ========================== 1722 1723The optional ``ETHTOOL_A_MODULE_POWER_MODE_POLICY`` attribute encodes the 1724transceiver module power mode policy enforced by the host. The default policy 1725is driver-dependent, but "auto" is the recommended default and it should be 1726implemented by new drivers and drivers where conformance to a legacy behavior 1727is not critical. 1728 1729The optional ``ETHTHOOL_A_MODULE_POWER_MODE`` attribute encodes the operational 1730power mode policy of the transceiver module. It is only reported when a module 1731is plugged-in. Possible values are: 1732 1733.. kernel-doc:: include/uapi/linux/ethtool.h 1734 :identifiers: ethtool_module_power_mode 1735 1736MODULE_SET 1737========== 1738 1739Sets transceiver module parameters. 1740 1741Request contents: 1742 1743 ====================================== ====== ========================== 1744 ``ETHTOOL_A_MODULE_HEADER`` nested request header 1745 ``ETHTOOL_A_MODULE_POWER_MODE_POLICY`` u8 power mode policy 1746 ====================================== ====== ========================== 1747 1748When set, the optional ``ETHTOOL_A_MODULE_POWER_MODE_POLICY`` attribute is used 1749to set the transceiver module power policy enforced by the host. Possible 1750values are: 1751 1752.. kernel-doc:: include/uapi/linux/ethtool.h 1753 :identifiers: ethtool_module_power_mode_policy 1754 1755For SFF-8636 modules, low power mode is forced by the host according to table 17566-10 in revision 2.10a of the specification. 1757 1758For CMIS modules, low power mode is forced by the host according to table 6-12 1759in revision 5.0 of the specification. 1760 1761PSE_GET 1762======= 1763 1764Gets PSE attributes. 1765 1766Request contents: 1767 1768 ===================================== ====== ========================== 1769 ``ETHTOOL_A_PSE_HEADER`` nested request header 1770 ===================================== ====== ========================== 1771 1772Kernel response contents: 1773 1774 ========================================== ====== ============================= 1775 ``ETHTOOL_A_PSE_HEADER`` nested reply header 1776 ``ETHTOOL_A_PODL_PSE_ADMIN_STATE`` u32 Operational state of the PoDL 1777 PSE functions 1778 ``ETHTOOL_A_PODL_PSE_PW_D_STATUS`` u32 power detection status of the 1779 PoDL PSE. 1780 ``ETHTOOL_A_C33_PSE_ADMIN_STATE`` u32 Operational state of the PoE 1781 PSE functions. 1782 ``ETHTOOL_A_C33_PSE_PW_D_STATUS`` u32 power detection status of the 1783 PoE PSE. 1784 ``ETHTOOL_A_C33_PSE_PW_CLASS`` u32 power class of the PoE PSE. 1785 ``ETHTOOL_A_C33_PSE_ACTUAL_PW`` u32 actual power drawn on the 1786 PoE PSE. 1787 ``ETHTOOL_A_C33_PSE_EXT_STATE`` u32 power extended state of the 1788 PoE PSE. 1789 ``ETHTOOL_A_C33_PSE_EXT_SUBSTATE`` u32 power extended substatus of 1790 the PoE PSE. 1791 ``ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT`` u32 currently configured power 1792 limit of the PoE PSE. 1793 ``ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES`` nested Supported power limit 1794 configuration ranges. 1795 ``ETHTOOL_A_PSE_PW_D_ID`` u32 Index of the PSE power domain 1796 ``ETHTOOL_A_PSE_PRIO_MAX`` u32 Priority maximum configurable 1797 on the PoE PSE 1798 ``ETHTOOL_A_PSE_PRIO`` u32 Priority of the PoE PSE 1799 currently configured 1800 ========================================== ====== ============================= 1801 1802When set, the optional ``ETHTOOL_A_PODL_PSE_ADMIN_STATE`` attribute identifies 1803the operational state of the PoDL PSE functions. The operational state of the 1804PSE function can be changed using the ``ETHTOOL_A_PODL_PSE_ADMIN_CONTROL`` 1805action. This attribute corresponds to ``IEEE 802.3-2018`` 30.15.1.1.2 1806aPoDLPSEAdminState. Possible values are: 1807 1808.. kernel-doc:: include/uapi/linux/ethtool.h 1809 :identifiers: ethtool_podl_pse_admin_state 1810 1811The same goes for ``ETHTOOL_A_C33_PSE_ADMIN_STATE`` implementing 1812``IEEE 802.3-2022`` 30.9.1.1.2 aPSEAdminState. 1813 1814.. kernel-doc:: include/uapi/linux/ethtool.h 1815 :identifiers: ethtool_c33_pse_admin_state 1816 1817When set, the optional ``ETHTOOL_A_PODL_PSE_PW_D_STATUS`` attribute identifies 1818the power detection status of the PoDL PSE. The status depend on internal PSE 1819state machine and automatic PD classification support. This attribute 1820corresponds to ``IEEE 802.3-2018`` 30.15.1.1.3 aPoDLPSEPowerDetectionStatus. 1821Possible values are: 1822 1823.. kernel-doc:: include/uapi/linux/ethtool.h 1824 :identifiers: ethtool_podl_pse_pw_d_status 1825 1826The same goes for ``ETHTOOL_A_C33_PSE_ADMIN_PW_D_STATUS`` implementing 1827``IEEE 802.3-2022`` 30.9.1.1.5 aPSEPowerDetectionStatus. 1828 1829.. kernel-doc:: include/uapi/linux/ethtool.h 1830 :identifiers: ethtool_c33_pse_pw_d_status 1831 1832When set, the optional ``ETHTOOL_A_C33_PSE_PW_CLASS`` attribute identifies 1833the power class of the C33 PSE. It depends on the class negotiated between 1834the PSE and the PD. This attribute corresponds to ``IEEE 802.3-2022`` 183530.9.1.1.8 aPSEPowerClassification. 1836 1837When set, the optional ``ETHTOOL_A_C33_PSE_ACTUAL_PW`` attribute identifies 1838the actual power drawn by the C33 PSE. This attribute corresponds to 1839``IEEE 802.3-2022`` 30.9.1.1.23 aPSEActualPower. Actual power is reported 1840in mW. 1841 1842When set, the optional ``ETHTOOL_A_C33_PSE_EXT_STATE`` attribute identifies 1843the extended error state of the C33 PSE. Possible values are: 1844 1845.. kernel-doc:: include/uapi/linux/ethtool.h 1846 :identifiers: ethtool_c33_pse_ext_state 1847 1848When set, the optional ``ETHTOOL_A_C33_PSE_EXT_SUBSTATE`` attribute identifies 1849the extended error state of the C33 PSE. Possible values are: 1850Possible values are: 1851 1852.. kernel-doc:: include/uapi/linux/ethtool.h 1853 :identifiers: ethtool_c33_pse_ext_substate_class_num_events 1854 ethtool_c33_pse_ext_substate_error_condition 1855 ethtool_c33_pse_ext_substate_mr_pse_enable 1856 ethtool_c33_pse_ext_substate_option_detect_ted 1857 ethtool_c33_pse_ext_substate_option_vport_lim 1858 ethtool_c33_pse_ext_substate_ovld_detected 1859 ethtool_c33_pse_ext_substate_pd_dll_power_type 1860 ethtool_c33_pse_ext_substate_power_not_available 1861 ethtool_c33_pse_ext_substate_short_detected 1862 1863When set, the optional ``ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT`` attribute 1864identifies the C33 PSE power limit in mW. 1865 1866When set the optional ``ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES`` nested attribute 1867identifies the C33 PSE power limit ranges through 1868``ETHTOOL_A_C33_PSE_PWR_VAL_LIMIT_RANGE_MIN`` and 1869``ETHTOOL_A_C33_PSE_PWR_VAL_LIMIT_RANGE_MAX``. 1870If the controller works with fixed classes, the min and max values will be 1871equal. 1872 1873The ``ETHTOOL_A_PSE_PW_D_ID`` attribute identifies the index of PSE power 1874domain. 1875 1876When set, the optional ``ETHTOOL_A_PSE_PRIO_MAX`` attribute identifies 1877the PSE maximum priority value. 1878When set, the optional ``ETHTOOL_A_PSE_PRIO`` attributes is used to 1879identifies the currently configured PSE priority. 1880For a description of PSE priority attributes, see ``PSE_SET``. 1881 1882PSE_SET 1883======= 1884 1885Sets PSE parameters. 1886 1887Request contents: 1888 1889 ====================================== ====== ============================= 1890 ``ETHTOOL_A_PSE_HEADER`` nested request header 1891 ``ETHTOOL_A_PODL_PSE_ADMIN_CONTROL`` u32 Control PoDL PSE Admin state 1892 ``ETHTOOL_A_C33_PSE_ADMIN_CONTROL`` u32 Control PSE Admin state 1893 ``ETHTOOL_A_C33_PSE_AVAIL_PWR_LIMIT`` u32 Control PoE PSE available 1894 power limit 1895 ``ETHTOOL_A_PSE_PRIO`` u32 Control priority of the 1896 PoE PSE 1897 ====================================== ====== ============================= 1898 1899When set, the optional ``ETHTOOL_A_PODL_PSE_ADMIN_CONTROL`` attribute is used 1900to control PoDL PSE Admin functions. This option implements 1901``IEEE 802.3-2018`` 30.15.1.2.1 acPoDLPSEAdminControl. See 1902``ETHTOOL_A_PODL_PSE_ADMIN_STATE`` for supported values. 1903 1904The same goes for ``ETHTOOL_A_C33_PSE_ADMIN_CONTROL`` implementing 1905``IEEE 802.3-2022`` 30.9.1.2.1 acPSEAdminControl. 1906 1907When set, the optional ``ETHTOOL_A_C33_PSE_AVAIL_PWR_LIMIT`` attribute is 1908used to control the available power value limit for C33 PSE in milliwatts. 1909This attribute corresponds to the `pse_available_power` variable described in 1910``IEEE 802.3-2022`` 33.2.4.4 Variables and `pse_avail_pwr` in 145.2.5.4 1911Variables, which are described in power classes. 1912 1913It was decided to use milliwatts for this interface to unify it with other 1914power monitoring interfaces, which also use milliwatts, and to align with 1915various existing products that document power consumption in watts rather than 1916classes. If power limit configuration based on classes is needed, the 1917conversion can be done in user space, for example by ethtool. 1918 1919When set, the optional ``ETHTOOL_A_PSE_PRIO`` attributes is used to 1920control the PSE priority. Allowed priority value are between zero and 1921the value of ``ETHTOOL_A_PSE_PRIO_MAX`` attribute. 1922 1923A lower value indicates a higher priority, meaning that a priority value 1924of 0 corresponds to the highest port priority. 1925Port priority serves two functions: 1926 1927 - Power-up Order: After a reset, ports are powered up in order of their 1928 priority from highest to lowest. Ports with higher priority 1929 (lower values) power up first. 1930 - Shutdown Order: When the power budget is exceeded, ports with lower 1931 priority (higher values) are turned off first. 1932 1933PSE_NTF 1934======= 1935 1936Notify PSE events. 1937 1938Notification contents: 1939 1940 =============================== ====== ======================== 1941 ``ETHTOOL_A_PSE_HEADER`` nested request header 1942 ``ETHTOOL_A_PSE_EVENTS`` bitset PSE events 1943 =============================== ====== ======================== 1944 1945When set, the optional ``ETHTOOL_A_PSE_EVENTS`` attribute identifies the 1946PSE events. 1947 1948.. kernel-doc:: include/uapi/linux/ethtool_netlink_generated.h 1949 :identifiers: ethtool_pse_event 1950 1951RSS_GET 1952======= 1953 1954Get indirection table, hash key and hash function info associated with a 1955RSS context of an interface similar to ``ETHTOOL_GRSSH`` ioctl request. 1956 1957Request contents: 1958 1959===================================== ====== ============================ 1960 ``ETHTOOL_A_RSS_HEADER`` nested request header 1961 ``ETHTOOL_A_RSS_CONTEXT`` u32 context number 1962 ``ETHTOOL_A_RSS_START_CONTEXT`` u32 start context number (dumps) 1963===================================== ====== ============================ 1964 1965``ETHTOOL_A_RSS_CONTEXT`` specifies which RSS context number to query, 1966if not set context 0 (the main context) is queried. Dumps can be filtered 1967by device (only listing contexts of a given netdev). Filtering single 1968context number is not supported but ``ETHTOOL_A_RSS_START_CONTEXT`` 1969can be used to start dumping context from the given number (primarily 1970used to ignore context 0s and only dump additional contexts). 1971 1972Kernel response contents: 1973 1974===================================== ====== =============================== 1975 ``ETHTOOL_A_RSS_HEADER`` nested reply header 1976 ``ETHTOOL_A_RSS_CONTEXT`` u32 context number 1977 ``ETHTOOL_A_RSS_HFUNC`` u32 RSS hash func 1978 ``ETHTOOL_A_RSS_INDIR`` binary Indir table bytes 1979 ``ETHTOOL_A_RSS_HKEY`` binary Hash key bytes 1980 ``ETHTOOL_A_RSS_INPUT_XFRM`` u32 RSS input data transformation 1981 ``ETHTOOL_A_RSS_FLOW_HASH`` nested Header fields included in hash 1982===================================== ====== =============================== 1983 1984ETHTOOL_A_RSS_HFUNC attribute is bitmap indicating the hash function 1985being used. Current supported options are toeplitz, xor or crc32. 1986ETHTOOL_A_RSS_INDIR attribute returns RSS indirection table where each byte 1987indicates queue number. 1988ETHTOOL_A_RSS_INPUT_XFRM attribute is a bitmap indicating the type of 1989transformation applied to the input protocol fields before given to the RSS 1990hfunc. Current supported options are symmetric-xor and symmetric-or-xor. 1991ETHTOOL_A_RSS_FLOW_HASH carries per-flow type bitmask of which header 1992fields are included in the hash calculation. 1993 1994RSS_SET 1995======= 1996 1997Request contents: 1998 1999===================================== ====== ============================== 2000 ``ETHTOOL_A_RSS_HEADER`` nested request header 2001 ``ETHTOOL_A_RSS_CONTEXT`` u32 context number 2002 ``ETHTOOL_A_RSS_HFUNC`` u32 RSS hash func 2003 ``ETHTOOL_A_RSS_INDIR`` binary Indir table bytes 2004 ``ETHTOOL_A_RSS_HKEY`` binary Hash key bytes 2005 ``ETHTOOL_A_RSS_INPUT_XFRM`` u32 RSS input data transformation 2006 ``ETHTOOL_A_RSS_FLOW_HASH`` nested Header fields included in hash 2007===================================== ====== ============================== 2008 2009``ETHTOOL_A_RSS_INDIR`` is the minimal RSS table the user expects. Kernel and 2010the device driver may replicate the table if its smaller than smallest table 2011size supported by the device. For example if user requests ``[0, 1]`` but the 2012device needs at least 8 entries - the real table in use will end up being 2013``[0, 1, 0, 1, 0, 1, 0, 1]``. Most devices require the table size to be power 2014of 2, so tables which size is not a power of 2 will likely be rejected. 2015Using table of size 0 will reset the indirection table to the default. 2016 2017PLCA_GET_CFG 2018============ 2019 2020Gets the IEEE 802.3cg-2019 Clause 148 Physical Layer Collision Avoidance 2021(PLCA) Reconciliation Sublayer (RS) attributes. 2022 2023Request contents: 2024 2025 ===================================== ====== ========================== 2026 ``ETHTOOL_A_PLCA_HEADER`` nested request header 2027 ===================================== ====== ========================== 2028 2029Kernel response contents: 2030 2031 ====================================== ====== ============================= 2032 ``ETHTOOL_A_PLCA_HEADER`` nested reply header 2033 ``ETHTOOL_A_PLCA_VERSION`` u16 Supported PLCA management 2034 interface standard/version 2035 ``ETHTOOL_A_PLCA_ENABLED`` u8 PLCA Admin State 2036 ``ETHTOOL_A_PLCA_NODE_ID`` u32 PLCA unique local node ID 2037 ``ETHTOOL_A_PLCA_NODE_CNT`` u32 Number of PLCA nodes on the 2038 network, including the 2039 coordinator 2040 ``ETHTOOL_A_PLCA_TO_TMR`` u32 Transmit Opportunity Timer 2041 value in bit-times (BT) 2042 ``ETHTOOL_A_PLCA_BURST_CNT`` u32 Number of additional packets 2043 the node is allowed to send 2044 within a single TO 2045 ``ETHTOOL_A_PLCA_BURST_TMR`` u32 Time to wait for the MAC to 2046 transmit a new frame before 2047 terminating the burst 2048 ====================================== ====== ============================= 2049 2050When set, the optional ``ETHTOOL_A_PLCA_VERSION`` attribute indicates which 2051standard and version the PLCA management interface complies to. When not set, 2052the interface is vendor-specific and (possibly) supplied by the driver. 2053The OPEN Alliance SIG specifies a standard register map for 10BASE-T1S PHYs 2054embedding the PLCA Reconciliation Sublayer. See "10BASE-T1S PLCA Management 2055Registers" at https://www.opensig.org/about/specifications/. 2056 2057When set, the optional ``ETHTOOL_A_PLCA_ENABLED`` attribute indicates the 2058administrative state of the PLCA RS. When not set, the node operates in "plain" 2059CSMA/CD mode. This option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.1 2060aPLCAAdminState / 30.16.1.2.1 acPLCAAdminControl. 2061 2062When set, the optional ``ETHTOOL_A_PLCA_NODE_ID`` attribute indicates the 2063configured local node ID of the PHY. This ID determines which transmit 2064opportunity (TO) is reserved for the node to transmit into. This option is 2065corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.4 aPLCALocalNodeID. The valid 2066range for this attribute is [0 .. 255] where 255 means "not configured". 2067 2068When set, the optional ``ETHTOOL_A_PLCA_NODE_CNT`` attribute indicates the 2069configured maximum number of PLCA nodes on the mixing-segment. This number 2070determines the total number of transmit opportunities generated during a 2071PLCA cycle. This attribute is relevant only for the PLCA coordinator, which is 2072the node with aPLCALocalNodeID set to 0. Follower nodes ignore this setting. 2073This option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.3 2074aPLCANodeCount. The valid range for this attribute is [1 .. 255]. 2075 2076When set, the optional ``ETHTOOL_A_PLCA_TO_TMR`` attribute indicates the 2077configured value of the transmit opportunity timer in bit-times. This value 2078must be set equal across all nodes sharing the medium for PLCA to work 2079correctly. This option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.5 2080aPLCATransmitOpportunityTimer. The valid range for this attribute is 2081[0 .. 255]. 2082 2083When set, the optional ``ETHTOOL_A_PLCA_BURST_CNT`` attribute indicates the 2084configured number of extra packets that the node is allowed to send during a 2085single transmit opportunity. By default, this attribute is 0, meaning that 2086the node can only send a single frame per TO. When greater than 0, the PLCA RS 2087keeps the TO after any transmission, waiting for the MAC to send a new frame 2088for up to aPLCABurstTimer BTs. This can only happen a number of times per PLCA 2089cycle up to the value of this parameter. After that, the burst is over and the 2090normal counting of TOs resumes. This option is corresponding to 2091``IEEE 802.3cg-2019`` 30.16.1.1.6 aPLCAMaxBurstCount. The valid range for this 2092attribute is [0 .. 255]. 2093 2094When set, the optional ``ETHTOOL_A_PLCA_BURST_TMR`` attribute indicates how 2095many bit-times the PLCA RS waits for the MAC to initiate a new transmission 2096when aPLCAMaxBurstCount is greater than 0. If the MAC fails to send a new 2097frame within this time, the burst ends and the counting of TOs resumes. 2098Otherwise, the new frame is sent as part of the current burst. This option 2099is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.7 aPLCABurstTimer. The 2100valid range for this attribute is [0 .. 255]. Although, the value should be 2101set greater than the Inter-Frame-Gap (IFG) time of the MAC (plus some margin) 2102for PLCA burst mode to work as intended. 2103 2104PLCA_SET_CFG 2105============ 2106 2107Sets PLCA RS parameters. 2108 2109Request contents: 2110 2111 ====================================== ====== ============================= 2112 ``ETHTOOL_A_PLCA_HEADER`` nested request header 2113 ``ETHTOOL_A_PLCA_ENABLED`` u8 PLCA Admin State 2114 ``ETHTOOL_A_PLCA_NODE_ID`` u8 PLCA unique local node ID 2115 ``ETHTOOL_A_PLCA_NODE_CNT`` u8 Number of PLCA nodes on the 2116 network, including the 2117 coordinator 2118 ``ETHTOOL_A_PLCA_TO_TMR`` u8 Transmit Opportunity Timer 2119 value in bit-times (BT) 2120 ``ETHTOOL_A_PLCA_BURST_CNT`` u8 Number of additional packets 2121 the node is allowed to send 2122 within a single TO 2123 ``ETHTOOL_A_PLCA_BURST_TMR`` u8 Time to wait for the MAC to 2124 transmit a new frame before 2125 terminating the burst 2126 ====================================== ====== ============================= 2127 2128For a description of each attribute, see ``PLCA_GET_CFG``. 2129 2130PLCA_GET_STATUS 2131=============== 2132 2133Gets PLCA RS status information. 2134 2135Request contents: 2136 2137 ===================================== ====== ========================== 2138 ``ETHTOOL_A_PLCA_HEADER`` nested request header 2139 ===================================== ====== ========================== 2140 2141Kernel response contents: 2142 2143 ====================================== ====== ============================= 2144 ``ETHTOOL_A_PLCA_HEADER`` nested reply header 2145 ``ETHTOOL_A_PLCA_STATUS`` u8 PLCA RS operational status 2146 ====================================== ====== ============================= 2147 2148When set, the ``ETHTOOL_A_PLCA_STATUS`` attribute indicates whether the node is 2149detecting the presence of the BEACON on the network. This flag is 2150corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.2 aPLCAStatus. 2151 2152MM_GET 2153====== 2154 2155Retrieve 802.3 MAC Merge parameters. 2156 2157Request contents: 2158 2159 ==================================== ====== ========================== 2160 ``ETHTOOL_A_MM_HEADER`` nested request header 2161 ==================================== ====== ========================== 2162 2163Kernel response contents: 2164 2165 ================================= ====== =================================== 2166 ``ETHTOOL_A_MM_HEADER`` nested request header 2167 ``ETHTOOL_A_MM_PMAC_ENABLED`` bool set if RX of preemptible and SMD-V 2168 frames is enabled 2169 ``ETHTOOL_A_MM_TX_ENABLED`` bool set if TX of preemptible frames is 2170 administratively enabled (might be 2171 inactive if verification failed) 2172 ``ETHTOOL_A_MM_TX_ACTIVE`` bool set if TX of preemptible frames is 2173 operationally enabled 2174 ``ETHTOOL_A_MM_TX_MIN_FRAG_SIZE`` u32 minimum size of transmitted 2175 non-final fragments, in octets 2176 ``ETHTOOL_A_MM_RX_MIN_FRAG_SIZE`` u32 minimum size of received non-final 2177 fragments, in octets 2178 ``ETHTOOL_A_MM_VERIFY_ENABLED`` bool set if TX of SMD-V frames is 2179 administratively enabled 2180 ``ETHTOOL_A_MM_VERIFY_STATUS`` u8 state of the verification function 2181 ``ETHTOOL_A_MM_VERIFY_TIME`` u32 delay between verification attempts 2182 ``ETHTOOL_A_MM_MAX_VERIFY_TIME``` u32 maximum verification interval 2183 supported by device 2184 ``ETHTOOL_A_MM_STATS`` nested IEEE 802.3-2018 subclause 30.14.1 2185 oMACMergeEntity statistics counters 2186 ================================= ====== =================================== 2187 2188The attributes are populated by the device driver through the following 2189structure: 2190 2191.. kernel-doc:: include/linux/ethtool.h 2192 :identifiers: ethtool_mm_state 2193 2194The ``ETHTOOL_A_MM_VERIFY_STATUS`` will report one of the values from 2195 2196.. kernel-doc:: include/uapi/linux/ethtool.h 2197 :identifiers: ethtool_mm_verify_status 2198 2199If ``ETHTOOL_A_MM_VERIFY_ENABLED`` was passed as false in the ``MM_SET`` 2200command, ``ETHTOOL_A_MM_VERIFY_STATUS`` will report either 2201``ETHTOOL_MM_VERIFY_STATUS_INITIAL`` or ``ETHTOOL_MM_VERIFY_STATUS_DISABLED``, 2202otherwise it should report one of the other states. 2203 2204It is recommended that drivers start with the pMAC disabled, and enable it upon 2205user space request. It is also recommended that user space does not depend upon 2206the default values from ``ETHTOOL_MSG_MM_GET`` requests. 2207 2208``ETHTOOL_A_MM_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set in 2209``ETHTOOL_A_HEADER_FLAGS``. The attribute will be empty if driver did not 2210report any statistics. Drivers fill in the statistics in the following 2211structure: 2212 2213.. kernel-doc:: include/linux/ethtool.h 2214 :identifiers: ethtool_mm_stats 2215 2216MM_SET 2217====== 2218 2219Modifies the configuration of the 802.3 MAC Merge layer. 2220 2221Request contents: 2222 2223 ================================= ====== ========================== 2224 ``ETHTOOL_A_MM_VERIFY_TIME`` u32 see MM_GET description 2225 ``ETHTOOL_A_MM_VERIFY_ENABLED`` bool see MM_GET description 2226 ``ETHTOOL_A_MM_TX_ENABLED`` bool see MM_GET description 2227 ``ETHTOOL_A_MM_PMAC_ENABLED`` bool see MM_GET description 2228 ``ETHTOOL_A_MM_TX_MIN_FRAG_SIZE`` u32 see MM_GET description 2229 ================================= ====== ========================== 2230 2231The attributes are propagated to the driver through the following structure: 2232 2233.. kernel-doc:: include/linux/ethtool.h 2234 :identifiers: ethtool_mm_cfg 2235 2236MODULE_FW_FLASH_ACT 2237=================== 2238 2239Flashes transceiver module firmware. 2240 2241Request contents: 2242 2243 ======================================= ====== =========================== 2244 ``ETHTOOL_A_MODULE_FW_FLASH_HEADER`` nested request header 2245 ``ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME`` string firmware image file name 2246 ``ETHTOOL_A_MODULE_FW_FLASH_PASSWORD`` u32 transceiver module password 2247 ======================================= ====== =========================== 2248 2249The firmware update process consists of three logical steps: 2250 22511. Downloading a firmware image to the transceiver module and validating it. 22522. Running the firmware image. 22533. Committing the firmware image so that it is run upon reset. 2254 2255When flash command is given, those three steps are taken in that order. 2256 2257This message merely schedules the update process and returns immediately 2258without blocking. The process then runs asynchronously. 2259Since it can take several minutes to complete, during the update process 2260notifications are emitted from the kernel to user space updating it about 2261the status and progress. 2262 2263The ``ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME`` attribute encodes the firmware 2264image file name. The firmware image is downloaded to the transceiver module, 2265validated, run and committed. 2266 2267The optional ``ETHTOOL_A_MODULE_FW_FLASH_PASSWORD`` attribute encodes a password 2268that might be required as part of the transceiver module firmware update 2269process. 2270 2271The firmware update process can take several minutes to complete. Therefore, 2272during the update process notifications are emitted from the kernel to user 2273space updating it about the status and progress. 2274 2275 2276 2277Notification contents: 2278 2279 +---------------------------------------------------+--------+----------------+ 2280 | ``ETHTOOL_A_MODULE_FW_FLASH_HEADER`` | nested | reply header | 2281 +---------------------------------------------------+--------+----------------+ 2282 | ``ETHTOOL_A_MODULE_FW_FLASH_STATUS`` | u32 | status | 2283 +---------------------------------------------------+--------+----------------+ 2284 | ``ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG`` | string | status message | 2285 +---------------------------------------------------+--------+----------------+ 2286 | ``ETHTOOL_A_MODULE_FW_FLASH_DONE`` | uint | progress | 2287 +---------------------------------------------------+--------+----------------+ 2288 | ``ETHTOOL_A_MODULE_FW_FLASH_TOTAL`` | uint | total | 2289 +---------------------------------------------------+--------+----------------+ 2290 2291The ``ETHTOOL_A_MODULE_FW_FLASH_STATUS`` attribute encodes the current status 2292of the firmware update process. Possible values are: 2293 2294.. kernel-doc:: include/uapi/linux/ethtool.h 2295 :identifiers: ethtool_module_fw_flash_status 2296 2297The ``ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG`` attribute encodes a status message 2298string. 2299 2300The ``ETHTOOL_A_MODULE_FW_FLASH_DONE`` and ``ETHTOOL_A_MODULE_FW_FLASH_TOTAL`` 2301attributes encode the completed and total amount of work, respectively. 2302 2303PHY_GET 2304======= 2305 2306Retrieve information about a given Ethernet PHY sitting on the link. The DO 2307operation returns all available information about dev->phydev. User can also 2308specify a PHY_INDEX, in which case the DO request returns information about that 2309specific PHY. 2310 2311As there can be more than one PHY, the DUMP operation can be used to list the PHYs 2312present on a given interface, by passing an interface index or name in 2313the dump request. 2314 2315For more information, refer to :ref:`phy_link_topology` 2316 2317Request contents: 2318 2319 ==================================== ====== ========================== 2320 ``ETHTOOL_A_PHY_HEADER`` nested request header 2321 ==================================== ====== ========================== 2322 2323Kernel response contents: 2324 2325 ===================================== ====== =============================== 2326 ``ETHTOOL_A_PHY_HEADER`` nested request header 2327 ``ETHTOOL_A_PHY_INDEX`` u32 the phy's unique index, that can 2328 be used for phy-specific 2329 requests 2330 ``ETHTOOL_A_PHY_DRVNAME`` string the phy driver name 2331 ``ETHTOOL_A_PHY_NAME`` string the phy device name 2332 ``ETHTOOL_A_PHY_UPSTREAM_TYPE`` u32 the type of device this phy is 2333 connected to 2334 ``ETHTOOL_A_PHY_UPSTREAM_INDEX`` u32 the PHY index of the upstream 2335 PHY 2336 ``ETHTOOL_A_PHY_UPSTREAM_SFP_NAME`` string if this PHY is connected to 2337 its parent PHY through an SFP 2338 bus, the name of this sfp bus 2339 ``ETHTOOL_A_PHY_DOWNSTREAM_SFP_NAME`` string if the phy controls an sfp bus, 2340 the name of the sfp bus 2341 ===================================== ====== =============================== 2342 2343When ``ETHTOOL_A_PHY_UPSTREAM_TYPE`` is PHY_UPSTREAM_PHY, the PHY's parent is 2344another PHY. 2345 2346TSCONFIG_GET 2347============ 2348 2349Retrieves the information about the current hardware timestamping source and 2350configuration. 2351 2352It is similar to the deprecated ``SIOCGHWTSTAMP`` ioctl request. 2353 2354Request contents: 2355 2356 ==================================== ====== ========================== 2357 ``ETHTOOL_A_TSCONFIG_HEADER`` nested request header 2358 ==================================== ====== ========================== 2359 2360Kernel response contents: 2361 2362 ======================================== ====== ============================ 2363 ``ETHTOOL_A_TSCONFIG_HEADER`` nested request header 2364 ``ETHTOOL_A_TSCONFIG_HWTSTAMP_PROVIDER`` nested PTP hw clock provider 2365 ``ETHTOOL_A_TSCONFIG_TX_TYPES`` bitset hwtstamp Tx type 2366 ``ETHTOOL_A_TSCONFIG_RX_FILTERS`` bitset hwtstamp Rx filter 2367 ``ETHTOOL_A_TSCONFIG_HWTSTAMP_FLAGS`` u32 hwtstamp flags 2368 ======================================== ====== ============================ 2369 2370When set the ``ETHTOOL_A_TSCONFIG_HWTSTAMP_PROVIDER`` attribute identifies the 2371source of the hw timestamping provider. It is composed by 2372``ETHTOOL_A_TS_HWTSTAMP_PROVIDER_INDEX`` attribute which describe the index of 2373the PTP device and ``ETHTOOL_A_TS_HWTSTAMP_PROVIDER_QUALIFIER`` which describe 2374the qualifier of the timestamp. 2375 2376When set the ``ETHTOOL_A_TSCONFIG_TX_TYPES``, ``ETHTOOL_A_TSCONFIG_RX_FILTERS`` 2377and the ``ETHTOOL_A_TSCONFIG_HWTSTAMP_FLAGS`` attributes identify the Tx 2378type, the Rx filter and the flags configured for the current hw timestamping 2379provider. The attributes are propagated to the driver through the following 2380structure: 2381 2382.. kernel-doc:: include/linux/net_tstamp.h 2383 :identifiers: kernel_hwtstamp_config 2384 2385TSCONFIG_SET 2386============ 2387 2388Set the information about the current hardware timestamping source and 2389configuration. 2390 2391It is similar to the deprecated ``SIOCSHWTSTAMP`` ioctl request. 2392 2393Request contents: 2394 2395 ======================================== ====== ============================ 2396 ``ETHTOOL_A_TSCONFIG_HEADER`` nested request header 2397 ``ETHTOOL_A_TSCONFIG_HWTSTAMP_PROVIDER`` nested PTP hw clock provider 2398 ``ETHTOOL_A_TSCONFIG_TX_TYPES`` bitset hwtstamp Tx type 2399 ``ETHTOOL_A_TSCONFIG_RX_FILTERS`` bitset hwtstamp Rx filter 2400 ``ETHTOOL_A_TSCONFIG_HWTSTAMP_FLAGS`` u32 hwtstamp flags 2401 ======================================== ====== ============================ 2402 2403Kernel response contents: 2404 2405 ======================================== ====== ============================ 2406 ``ETHTOOL_A_TSCONFIG_HEADER`` nested request header 2407 ``ETHTOOL_A_TSCONFIG_HWTSTAMP_PROVIDER`` nested PTP hw clock provider 2408 ``ETHTOOL_A_TSCONFIG_TX_TYPES`` bitset hwtstamp Tx type 2409 ``ETHTOOL_A_TSCONFIG_RX_FILTERS`` bitset hwtstamp Rx filter 2410 ``ETHTOOL_A_TSCONFIG_HWTSTAMP_FLAGS`` u32 hwtstamp flags 2411 ======================================== ====== ============================ 2412 2413For a description of each attribute, see ``TSCONFIG_GET``. 2414 2415Request translation 2416=================== 2417 2418The following table maps ioctl commands to netlink commands providing their 2419functionality. Entries with "n/a" in right column are commands which do not 2420have their netlink replacement yet. Entries which "n/a" in the left column 2421are netlink only. 2422 2423 =================================== ===================================== 2424 ioctl command netlink command 2425 =================================== ===================================== 2426 ``ETHTOOL_GSET`` ``ETHTOOL_MSG_LINKINFO_GET`` 2427 ``ETHTOOL_MSG_LINKMODES_GET`` 2428 ``ETHTOOL_SSET`` ``ETHTOOL_MSG_LINKINFO_SET`` 2429 ``ETHTOOL_MSG_LINKMODES_SET`` 2430 ``ETHTOOL_GDRVINFO`` n/a 2431 ``ETHTOOL_GREGS`` n/a 2432 ``ETHTOOL_GWOL`` ``ETHTOOL_MSG_WOL_GET`` 2433 ``ETHTOOL_SWOL`` ``ETHTOOL_MSG_WOL_SET`` 2434 ``ETHTOOL_GMSGLVL`` ``ETHTOOL_MSG_DEBUG_GET`` 2435 ``ETHTOOL_SMSGLVL`` ``ETHTOOL_MSG_DEBUG_SET`` 2436 ``ETHTOOL_NWAY_RST`` n/a 2437 ``ETHTOOL_GLINK`` ``ETHTOOL_MSG_LINKSTATE_GET`` 2438 ``ETHTOOL_GEEPROM`` n/a 2439 ``ETHTOOL_SEEPROM`` n/a 2440 ``ETHTOOL_GCOALESCE`` ``ETHTOOL_MSG_COALESCE_GET`` 2441 ``ETHTOOL_SCOALESCE`` ``ETHTOOL_MSG_COALESCE_SET`` 2442 ``ETHTOOL_GRINGPARAM`` ``ETHTOOL_MSG_RINGS_GET`` 2443 ``ETHTOOL_SRINGPARAM`` ``ETHTOOL_MSG_RINGS_SET`` 2444 ``ETHTOOL_GPAUSEPARAM`` ``ETHTOOL_MSG_PAUSE_GET`` 2445 ``ETHTOOL_SPAUSEPARAM`` ``ETHTOOL_MSG_PAUSE_SET`` 2446 ``ETHTOOL_GRXCSUM`` ``ETHTOOL_MSG_FEATURES_GET`` 2447 ``ETHTOOL_SRXCSUM`` ``ETHTOOL_MSG_FEATURES_SET`` 2448 ``ETHTOOL_GTXCSUM`` ``ETHTOOL_MSG_FEATURES_GET`` 2449 ``ETHTOOL_STXCSUM`` ``ETHTOOL_MSG_FEATURES_SET`` 2450 ``ETHTOOL_GSG`` ``ETHTOOL_MSG_FEATURES_GET`` 2451 ``ETHTOOL_SSG`` ``ETHTOOL_MSG_FEATURES_SET`` 2452 ``ETHTOOL_TEST`` n/a 2453 ``ETHTOOL_GSTRINGS`` ``ETHTOOL_MSG_STRSET_GET`` 2454 ``ETHTOOL_PHYS_ID`` n/a 2455 ``ETHTOOL_GSTATS`` n/a 2456 ``ETHTOOL_GTSO`` ``ETHTOOL_MSG_FEATURES_GET`` 2457 ``ETHTOOL_STSO`` ``ETHTOOL_MSG_FEATURES_SET`` 2458 ``ETHTOOL_GPERMADDR`` rtnetlink ``RTM_GETLINK`` 2459 ``ETHTOOL_GUFO`` ``ETHTOOL_MSG_FEATURES_GET`` 2460 ``ETHTOOL_SUFO`` ``ETHTOOL_MSG_FEATURES_SET`` 2461 ``ETHTOOL_GGSO`` ``ETHTOOL_MSG_FEATURES_GET`` 2462 ``ETHTOOL_SGSO`` ``ETHTOOL_MSG_FEATURES_SET`` 2463 ``ETHTOOL_GFLAGS`` ``ETHTOOL_MSG_FEATURES_GET`` 2464 ``ETHTOOL_SFLAGS`` ``ETHTOOL_MSG_FEATURES_SET`` 2465 ``ETHTOOL_GPFLAGS`` ``ETHTOOL_MSG_PRIVFLAGS_GET`` 2466 ``ETHTOOL_SPFLAGS`` ``ETHTOOL_MSG_PRIVFLAGS_SET`` 2467 ``ETHTOOL_GRXFH`` ``ETHTOOL_MSG_RSS_GET`` 2468 ``ETHTOOL_SRXFH`` ``ETHTOOL_MSG_RSS_SET`` 2469 ``ETHTOOL_GGRO`` ``ETHTOOL_MSG_FEATURES_GET`` 2470 ``ETHTOOL_SGRO`` ``ETHTOOL_MSG_FEATURES_SET`` 2471 ``ETHTOOL_GRXRINGS`` n/a 2472 ``ETHTOOL_GRXCLSRLCNT`` n/a 2473 ``ETHTOOL_GRXCLSRULE`` n/a 2474 ``ETHTOOL_GRXCLSRLALL`` n/a 2475 ``ETHTOOL_SRXCLSRLDEL`` n/a 2476 ``ETHTOOL_SRXCLSRLINS`` n/a 2477 ``ETHTOOL_FLASHDEV`` n/a 2478 ``ETHTOOL_RESET`` n/a 2479 ``ETHTOOL_SRXNTUPLE`` n/a 2480 ``ETHTOOL_GRXNTUPLE`` n/a 2481 ``ETHTOOL_GSSET_INFO`` ``ETHTOOL_MSG_STRSET_GET`` 2482 ``ETHTOOL_GRXFHINDIR`` ``ETHTOOL_MSG_RSS_GET`` 2483 ``ETHTOOL_SRXFHINDIR`` ``ETHTOOL_MSG_RSS_SET`` 2484 ``ETHTOOL_GFEATURES`` ``ETHTOOL_MSG_FEATURES_GET`` 2485 ``ETHTOOL_SFEATURES`` ``ETHTOOL_MSG_FEATURES_SET`` 2486 ``ETHTOOL_GCHANNELS`` ``ETHTOOL_MSG_CHANNELS_GET`` 2487 ``ETHTOOL_SCHANNELS`` ``ETHTOOL_MSG_CHANNELS_SET`` 2488 ``ETHTOOL_SET_DUMP`` n/a 2489 ``ETHTOOL_GET_DUMP_FLAG`` n/a 2490 ``ETHTOOL_GET_DUMP_DATA`` n/a 2491 ``ETHTOOL_GET_TS_INFO`` ``ETHTOOL_MSG_TSINFO_GET`` 2492 ``ETHTOOL_GMODULEINFO`` ``ETHTOOL_MSG_MODULE_EEPROM_GET`` 2493 ``ETHTOOL_GMODULEEEPROM`` ``ETHTOOL_MSG_MODULE_EEPROM_GET`` 2494 ``ETHTOOL_GEEE`` ``ETHTOOL_MSG_EEE_GET`` 2495 ``ETHTOOL_SEEE`` ``ETHTOOL_MSG_EEE_SET`` 2496 ``ETHTOOL_GRSSH`` ``ETHTOOL_MSG_RSS_GET`` 2497 ``ETHTOOL_SRSSH`` n/a 2498 ``ETHTOOL_GTUNABLE`` n/a 2499 ``ETHTOOL_STUNABLE`` n/a 2500 ``ETHTOOL_GPHYSTATS`` n/a 2501 ``ETHTOOL_PERQUEUE`` n/a 2502 ``ETHTOOL_GLINKSETTINGS`` ``ETHTOOL_MSG_LINKINFO_GET`` 2503 ``ETHTOOL_MSG_LINKMODES_GET`` 2504 ``ETHTOOL_SLINKSETTINGS`` ``ETHTOOL_MSG_LINKINFO_SET`` 2505 ``ETHTOOL_MSG_LINKMODES_SET`` 2506 ``ETHTOOL_PHY_GTUNABLE`` n/a 2507 ``ETHTOOL_PHY_STUNABLE`` n/a 2508 ``ETHTOOL_GFECPARAM`` ``ETHTOOL_MSG_FEC_GET`` 2509 ``ETHTOOL_SFECPARAM`` ``ETHTOOL_MSG_FEC_SET`` 2510 n/a ``ETHTOOL_MSG_CABLE_TEST_ACT`` 2511 n/a ``ETHTOOL_MSG_CABLE_TEST_TDR_ACT`` 2512 n/a ``ETHTOOL_MSG_TUNNEL_INFO_GET`` 2513 n/a ``ETHTOOL_MSG_PHC_VCLOCKS_GET`` 2514 n/a ``ETHTOOL_MSG_MODULE_GET`` 2515 n/a ``ETHTOOL_MSG_MODULE_SET`` 2516 n/a ``ETHTOOL_MSG_PLCA_GET_CFG`` 2517 n/a ``ETHTOOL_MSG_PLCA_SET_CFG`` 2518 n/a ``ETHTOOL_MSG_PLCA_GET_STATUS`` 2519 n/a ``ETHTOOL_MSG_MM_GET`` 2520 n/a ``ETHTOOL_MSG_MM_SET`` 2521 n/a ``ETHTOOL_MSG_MODULE_FW_FLASH_ACT`` 2522 n/a ``ETHTOOL_MSG_PHY_GET`` 2523 ``SIOCGHWTSTAMP`` ``ETHTOOL_MSG_TSCONFIG_GET`` 2524 ``SIOCSHWTSTAMP`` ``ETHTOOL_MSG_TSCONFIG_SET`` 2525 =================================== ===================================== 2526