ethtool.h revision 1094b68a0b1abb6616b613d8e4069ff71f882ce0
11094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* 21094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * ethtool.h: Defines for Linux ethtool. 31094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * 41094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * Copyright (C) 1998 David S. Miller (davem@redhat.com) 51094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * Copyright 2001 Jeff Garzik <jgarzik@pobox.com> 61094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * Portions Copyright 2001 Sun Microsystems (thockin@sun.com) 71094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * Portions Copyright 2002 Intel (eli.kupermann@intel.com, 81094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * christopher.leech@intel.com, 91094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * scott.feldman@intel.com) 101094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 111094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 121094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#ifndef _LINUX_ETHTOOL_H 131094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define _LINUX_ETHTOOL_H 141094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 151094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#include <linux/types.h> 161094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 171094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* This should work for both 32 and 64 bit userland. */ 181094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_cmd { 191094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; 201094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 supported; /* Features this interface supports */ 211094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 advertising; /* Features this interface advertises */ 221094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u16 speed; /* The forced speed, 10Mb, 100Mb, gigabit */ 231094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u8 duplex; /* Duplex, half or full */ 241094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u8 port; /* Which connector port */ 251094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u8 phy_address; 261094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u8 transceiver; /* Which transceiver to use */ 271094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u8 autoneg; /* Enable or disable autonegotiation */ 281094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 maxtxpkt; /* Tx pkts before generating tx int */ 291094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 maxrxpkt; /* Rx pkts before generating rx int */ 301094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u16 speed_hi; 311094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u16 reserved2; 321094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 reserved[3]; 331094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 341094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 351094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustatic inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep, 361094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 speed) 371094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru{ 381094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 391094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru ep->speed = (__u16)speed; 401094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru ep->speed_hi = (__u16)(speed >> 16); 411094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru} 421094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 431094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustatic inline __u32 ethtool_cmd_speed(struct ethtool_cmd *ep) 441094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru{ 451094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru return (ep->speed_hi << 16) | ep->speed; 461094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru} 471094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 481094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_BUSINFO_LEN 32 491094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* these strings are set to whatever the driver author decides... */ 501094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_drvinfo { 511094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; 521094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru char driver[32]; /* driver short name, "tulip", "eepro100" */ 531094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru char version[32]; /* driver version string */ 541094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru char fw_version[32]; /* firmware version string, if applicable */ 551094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru char bus_info[ETHTOOL_BUSINFO_LEN]; /* Bus info for this IF. */ 561094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* For PCI devices, use pci_name(pci_dev). */ 571094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru char reserved1[32]; 581094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru char reserved2[12]; 591094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 n_priv_flags; /* number of flags valid in ETHTOOL_GPFLAGS */ 601094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 n_stats; /* number of u64's from ETHTOOL_GSTATS */ 611094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 testinfo_len; 621094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 eedump_len; /* Size of data from ETHTOOL_GEEPROM (bytes) */ 631094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 regdump_len; /* Size of data from ETHTOOL_GREGS (bytes) */ 641094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 651094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 661094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SOPASS_MAX 6 671094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* wake-on-lan settings */ 681094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_wolinfo { 691094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; 701094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 supported; 711094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 wolopts; 721094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u8 sopass[SOPASS_MAX]; /* SecureOn(tm) password */ 731094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 741094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 751094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* for passing single values */ 761094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_value { 771094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; 781094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 data; 791094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 801094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 811094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* for passing big chunks of data */ 821094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_regs { 831094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; 841094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 version; /* driver-specific, indicates different chips/revs */ 851094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 len; /* bytes */ 861094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u8 data[0]; 871094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 881094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 891094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* for passing EEPROM chunks */ 901094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_eeprom { 911094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; 921094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 magic; 931094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 offset; /* in bytes */ 941094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 len; /* in bytes */ 951094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u8 data[0]; 961094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 971094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 981094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* for configuring coalescing parameters of chip */ 991094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_coalesce { 1001094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; /* ETHTOOL_{G,S}COALESCE */ 1011094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1021094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* How many usecs to delay an RX interrupt after 1031094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * a packet arrives. If 0, only rx_max_coalesced_frames 1041094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * is used. 1051094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1061094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_coalesce_usecs; 1071094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1081094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* How many packets to delay an RX interrupt after 1091094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * a packet arrives. If 0, only rx_coalesce_usecs is 1101094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * used. It is illegal to set both usecs and max frames 1111094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * to zero as this would cause RX interrupts to never be 1121094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * generated. 1131094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1141094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_max_coalesced_frames; 1151094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1161094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* Same as above two parameters, except that these values 1171094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * apply while an IRQ is being serviced by the host. Not 1181094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * all cards support this feature and the values are ignored 1191094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * in that case. 1201094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1211094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_coalesce_usecs_irq; 1221094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_max_coalesced_frames_irq; 1231094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1241094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* How many usecs to delay a TX interrupt after 1251094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * a packet is sent. If 0, only tx_max_coalesced_frames 1261094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * is used. 1271094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1281094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 tx_coalesce_usecs; 1291094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1301094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* How many packets to delay a TX interrupt after 1311094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * a packet is sent. If 0, only tx_coalesce_usecs is 1321094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * used. It is illegal to set both usecs and max frames 1331094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * to zero as this would cause TX interrupts to never be 1341094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * generated. 1351094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1361094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 tx_max_coalesced_frames; 1371094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1381094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* Same as above two parameters, except that these values 1391094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * apply while an IRQ is being serviced by the host. Not 1401094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * all cards support this feature and the values are ignored 1411094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * in that case. 1421094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1431094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 tx_coalesce_usecs_irq; 1441094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 tx_max_coalesced_frames_irq; 1451094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1461094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* How many usecs to delay in-memory statistics 1471094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * block updates. Some drivers do not have an in-memory 1481094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * statistic block, and in such cases this value is ignored. 1491094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * This value must not be zero. 1501094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1511094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 stats_block_coalesce_usecs; 1521094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1531094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* Adaptive RX/TX coalescing is an algorithm implemented by 1541094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * some drivers to improve latency under low packet rates and 1551094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * improve throughput under high packet rates. Some drivers 1561094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * only implement one of RX or TX adaptive coalescing. Anything 1571094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * not implemented by the driver causes these values to be 1581094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * silently ignored. 1591094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1601094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 use_adaptive_rx_coalesce; 1611094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 use_adaptive_tx_coalesce; 1621094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1631094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* When the packet rate (measured in packets per second) 1641094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * is below pkt_rate_low, the {rx,tx}_*_low parameters are 1651094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * used. 1661094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1671094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 pkt_rate_low; 1681094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_coalesce_usecs_low; 1691094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_max_coalesced_frames_low; 1701094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 tx_coalesce_usecs_low; 1711094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 tx_max_coalesced_frames_low; 1721094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1731094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* When the packet rate is below pkt_rate_high but above 1741094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * pkt_rate_low (both measured in packets per second) the 1751094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * normal {rx,tx}_* coalescing parameters are used. 1761094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1771094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1781094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* When the packet rate is (measured in packets per second) 1791094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * is above pkt_rate_high, the {rx,tx}_*_high parameters are 1801094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * used. 1811094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1821094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 pkt_rate_high; 1831094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_coalesce_usecs_high; 1841094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_max_coalesced_frames_high; 1851094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 tx_coalesce_usecs_high; 1861094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 tx_max_coalesced_frames_high; 1871094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1881094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* How often to do adaptive coalescing packet rate sampling, 1891094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * measured in seconds. Must not be zero. 1901094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 1911094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rate_sample_interval; 1921094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 1931094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1941094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* for configuring RX/TX ring parameters */ 1951094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_ringparam { 1961094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; /* ETHTOOL_{G,S}RINGPARAM */ 1971094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 1981094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* Read only attributes. These indicate the maximum number 1991094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * of pending RX/TX ring entries the driver will allow the 2001094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * user to set. 2011094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 2021094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_max_pending; 2031094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_mini_max_pending; 2041094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_jumbo_max_pending; 2051094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 tx_max_pending; 2061094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2071094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* Values changeable by the user. The valid values are 2081094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * in the range 1 to the "*_max_pending" counterpart above. 2091094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 2101094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_pending; 2111094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_mini_pending; 2121094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_jumbo_pending; 2131094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 tx_pending; 2141094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 2151094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2161094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* for configuring link flow control parameters */ 2171094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_pauseparam { 2181094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; /* ETHTOOL_{G,S}PAUSEPARAM */ 2191094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2201094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* If the link is being auto-negotiated (via ethtool_cmd.autoneg 2211094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * being true) the user may set 'autonet' here non-zero to have the 2221094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * pause parameters be auto-negotiated too. In such a case, the 2231094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * {rx,tx}_pause values below determine what capabilities are 2241094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * advertised. 2251094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * 2261094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * If 'autoneg' is zero or the link is not being auto-negotiated, 2271094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * then {rx,tx}_pause force the driver to use/not-use pause 2281094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * flow control. 2291094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 2301094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 autoneg; 2311094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 rx_pause; 2321094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 tx_pause; 2331094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 2341094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2351094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETH_GSTRING_LEN 32 2361094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruenum ethtool_stringset { 2371094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru ETH_SS_TEST = 0, 2381094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru ETH_SS_STATS, 2391094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru ETH_SS_PRIV_FLAGS, 2401094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 2411094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2421094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* for passing string sets for data tagging */ 2431094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_gstrings { 2441094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; /* ETHTOOL_GSTRINGS */ 2451094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 string_set; /* string set id e.c. ETH_SS_TEST, etc*/ 2461094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 len; /* number of strings in the string set */ 2471094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u8 data[0]; 2481094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 2491094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2501094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruenum ethtool_test_flags { 2511094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru ETH_TEST_FL_OFFLINE = (1 << 0), /* online / offline */ 2521094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru ETH_TEST_FL_FAILED = (1 << 1), /* test passed / failed */ 2531094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 2541094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2551094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* for requesting NIC test and getting results*/ 2561094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_test { 2571094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; /* ETHTOOL_TEST */ 2581094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 flags; /* ETH_TEST_FL_xxx */ 2591094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 reserved; 2601094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 len; /* result length, in number of u64 elements */ 2611094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u64 data[0]; 2621094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 2631094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2641094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* for dumping NIC-specific statistics */ 2651094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_stats { 2661094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; /* ETHTOOL_GSTATS */ 2671094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 n_stats; /* number of u64's being returned */ 2681094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u64 data[0]; 2691094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 2701094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2711094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_perm_addr { 2721094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; /* ETHTOOL_GPERMADDR */ 2731094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 size; 2741094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u8 data[0]; 2751094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 2761094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2771094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* boolean flags controlling per-interface behavior characteristics. 2781094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * When reading, the flag indicates whether or not a certain behavior 2791094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * is enabled/present. When writing, the flag indicates whether 2801094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * or not the driver should turn on (set) or off (clear) a behavior. 2811094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * 2821094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * Some behaviors may read-only (unconditionally absent or present). 2831094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * If such is the case, return EINVAL in the set-flags operation if the 2841094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * flag differs from the read-only value. 2851094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 2861094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruenum ethtool_flags { 2871094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */ 2881094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 2891094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2901094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_rxnfc { 2911094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 cmd; 2921094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u32 flow_type; 2931094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru __u64 data; 2941094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 2951094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2961094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#ifdef __KERNEL__ 2971094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 2981094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct net_device; 2991094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 3001094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* Some generic methods drivers may use in their ethtool_ops */ 3011094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruu32 ethtool_op_get_link(struct net_device *dev); 3021094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruu32 ethtool_op_get_tx_csum(struct net_device *dev); 3031094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruint ethtool_op_set_tx_csum(struct net_device *dev, u32 data); 3041094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruint ethtool_op_set_tx_hw_csum(struct net_device *dev, u32 data); 3051094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruint ethtool_op_set_tx_ipv6_csum(struct net_device *dev, u32 data); 3061094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruu32 ethtool_op_get_sg(struct net_device *dev); 3071094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruint ethtool_op_set_sg(struct net_device *dev, u32 data); 3081094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruu32 ethtool_op_get_tso(struct net_device *dev); 3091094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruint ethtool_op_set_tso(struct net_device *dev, u32 data); 3101094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruu32 ethtool_op_get_ufo(struct net_device *dev); 3111094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruint ethtool_op_set_ufo(struct net_device *dev, u32 data); 3121094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruu32 ethtool_op_get_flags(struct net_device *dev); 3131094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruint ethtool_op_set_flags(struct net_device *dev, u32 data); 3141094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 3151094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/** 3161094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * ðtool_ops - Alter and report network device settings 3171094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_settings: Get device-specific settings 3181094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_settings: Set device-specific settings 3191094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_drvinfo: Report driver information 3201094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_regs: Get device registers 3211094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_wol: Report whether Wake-on-Lan is enabled 3221094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_wol: Turn Wake-on-Lan on or off 3231094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_msglevel: Report driver message level 3241094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_msglevel: Set driver message level 3251094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * nway_reset: Restart autonegotiation 3261094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_link: Get link status 3271094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_eeprom: Read data from the device EEPROM 3281094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_eeprom: Write data to the device EEPROM 3291094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_coalesce: Get interrupt coalescing parameters 3301094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_coalesce: Set interrupt coalescing parameters 3311094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_ringparam: Report ring sizes 3321094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_ringparam: Set ring sizes 3331094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_pauseparam: Report pause parameters 3341094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_pauseparam: Set pause parameters 3351094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_rx_csum: Report whether receive checksums are turned on or off 3361094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_rx_csum: Turn receive checksum on or off 3371094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_tx_csum: Report whether transmit checksums are turned on or off 3381094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_tx_csum: Turn transmit checksums on or off 3391094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_sg: Report whether scatter-gather is enabled 3401094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_sg: Turn scatter-gather on or off 3411094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_tso: Report whether TCP segmentation offload is enabled 3421094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_tso: Turn TCP segmentation offload on or off 3431094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_ufo: Report whether UDP fragmentation offload is enabled 3441094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_ufo: Turn UDP fragmentation offload on or off 3451094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * self_test: Run specified self-tests 3461094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_strings: Return a set of strings that describe the requested objects 3471094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * phys_id: Identify the device 3481094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_stats: Return statistics about the device 3491094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_flags: get 32-bit flags bitmap 3501094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_flags: set 32-bit flags bitmap 3511094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * 3521094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * Description: 3531094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * 3541094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_settings: 3551094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * @get_settings is passed an ðtool_cmd to fill in. It returns 3561094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * an negative errno or zero. 3571094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * 3581094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_settings: 3591094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * @set_settings is passed an ðtool_cmd and should attempt to set 3601094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * all the settings this device supports. It may return an error value 3611094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * if something goes wrong (otherwise 0). 3621094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * 3631094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * get_eeprom: 3641094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * Should fill in the magic field. Don't need to check len for zero 3651094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * or wraparound. Fill in the data argument with the eeprom values 3661094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * from offset to offset + len. Update len to the amount read. 3671094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * Returns an error or zero. 3681094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * 3691094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * set_eeprom: 3701094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * Should validate the magic field. Don't need to check len for zero 3711094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * or wraparound. Update len to the amount written. Returns an error 3721094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * or zero. 3731094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 3741094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct ethtool_ops { 3751094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*get_settings)(struct net_device *, struct ethtool_cmd *); 3761094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_settings)(struct net_device *, struct ethtool_cmd *); 3771094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *); 3781094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*get_regs_len)(struct net_device *); 3791094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru void (*get_regs)(struct net_device *, struct ethtool_regs *, void *); 3801094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru void (*get_wol)(struct net_device *, struct ethtool_wolinfo *); 3811094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_wol)(struct net_device *, struct ethtool_wolinfo *); 3821094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru u32 (*get_msglevel)(struct net_device *); 3831094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru void (*set_msglevel)(struct net_device *, u32); 3841094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*nway_reset)(struct net_device *); 3851094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru u32 (*get_link)(struct net_device *); 3861094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*get_eeprom_len)(struct net_device *); 3871094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); 3881094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); 3891094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *); 3901094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *); 3911094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *); 3921094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *); 3931094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam*); 3941094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam*); 3951094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru u32 (*get_rx_csum)(struct net_device *); 3961094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_rx_csum)(struct net_device *, u32); 3971094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru u32 (*get_tx_csum)(struct net_device *); 3981094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_tx_csum)(struct net_device *, u32); 3991094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru u32 (*get_sg)(struct net_device *); 4001094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_sg)(struct net_device *, u32); 4011094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru u32 (*get_tso)(struct net_device *); 4021094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_tso)(struct net_device *, u32); 4031094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru void (*self_test)(struct net_device *, struct ethtool_test *, u64 *); 4041094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru void (*get_strings)(struct net_device *, u32 stringset, u8 *); 4051094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*phys_id)(struct net_device *, u32); 4061094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *); 4071094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*begin)(struct net_device *); 4081094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru void (*complete)(struct net_device *); 4091094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru u32 (*get_ufo)(struct net_device *); 4101094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_ufo)(struct net_device *, u32); 4111094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru u32 (*get_flags)(struct net_device *); 4121094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_flags)(struct net_device *, u32); 4131094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru u32 (*get_priv_flags)(struct net_device *); 4141094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_priv_flags)(struct net_device *, u32); 4151094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*get_sset_count)(struct net_device *, int); 4161094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 4171094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru /* the following hooks are obsolete */ 4181094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*self_test_count)(struct net_device *);/* use get_sset_count */ 4191094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*get_stats_count)(struct net_device *);/* use get_sset_count */ 4201094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*get_rxhash)(struct net_device *, struct ethtool_rxnfc *); 4211094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru int (*set_rxhash)(struct net_device *, struct ethtool_rxnfc *); 4221094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru}; 4231094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#endif /* __KERNEL__ */ 4241094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 4251094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* CMDs currently supported */ 4261094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GSET 0x00000001 /* Get settings. */ 4271094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SSET 0x00000002 /* Set settings. */ 4281094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GDRVINFO 0x00000003 /* Get driver info. */ 4291094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GREGS 0x00000004 /* Get NIC registers. */ 4301094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GWOL 0x00000005 /* Get wake-on-lan options. */ 4311094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SWOL 0x00000006 /* Set wake-on-lan options. */ 4321094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GMSGLVL 0x00000007 /* Get driver message level */ 4331094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SMSGLVL 0x00000008 /* Set driver msg level. */ 4341094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_NWAY_RST 0x00000009 /* Restart autonegotiation. */ 4351094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GLINK 0x0000000a /* Get link status (ethtool_value) */ 4361094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GEEPROM 0x0000000b /* Get EEPROM data */ 4371094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SEEPROM 0x0000000c /* Set EEPROM data. */ 4381094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GCOALESCE 0x0000000e /* Get coalesce config */ 4391094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SCOALESCE 0x0000000f /* Set coalesce config. */ 4401094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GRINGPARAM 0x00000010 /* Get ring parameters */ 4411094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SRINGPARAM 0x00000011 /* Set ring parameters. */ 4421094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GPAUSEPARAM 0x00000012 /* Get pause parameters */ 4431094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SPAUSEPARAM 0x00000013 /* Set pause parameters. */ 4441094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GRXCSUM 0x00000014 /* Get RX hw csum enable (ethtool_value) */ 4451094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SRXCSUM 0x00000015 /* Set RX hw csum enable (ethtool_value) */ 4461094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GTXCSUM 0x00000016 /* Get TX hw csum enable (ethtool_value) */ 4471094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_STXCSUM 0x00000017 /* Set TX hw csum enable (ethtool_value) */ 4481094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GSG 0x00000018 /* Get scatter-gather enable 4491094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * (ethtool_value) */ 4501094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SSG 0x00000019 /* Set scatter-gather enable 4511094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * (ethtool_value). */ 4521094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_TEST 0x0000001a /* execute NIC self-test. */ 4531094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GSTRINGS 0x0000001b /* get specified string set */ 4541094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_PHYS_ID 0x0000001c /* identify the NIC */ 4551094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GSTATS 0x0000001d /* get NIC-specific statistics */ 4561094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GTSO 0x0000001e /* Get TSO enable (ethtool_value) */ 4571094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_STSO 0x0000001f /* Set TSO enable (ethtool_value) */ 4581094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GPERMADDR 0x00000020 /* Get permanent hardware address */ 4591094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GUFO 0x00000021 /* Get UFO enable (ethtool_value) */ 4601094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SUFO 0x00000022 /* Set UFO enable (ethtool_value) */ 4611094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GGSO 0x00000023 /* Get GSO enable (ethtool_value) */ 4621094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SGSO 0x00000024 /* Set GSO enable (ethtool_value) */ 4631094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GFLAGS 0x00000025 /* Get flags bitmap(ethtool_value) */ 4641094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SFLAGS 0x00000026 /* Set flags bitmap(ethtool_value) */ 4651094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GPFLAGS 0x00000027 /* Get driver-private flags bitmap */ 4661094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SPFLAGS 0x00000028 /* Set driver-private flags bitmap */ 4671094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 4681094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GRXFH 0x00000029 /* Get RX flow hash configuration */ 4691094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SRXFH 0x0000002a /* Set RX flow hash configuration */ 4701094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_GGRO 0x0000002b /* Get GRO enable (ethtool_value) */ 4711094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ETHTOOL_SGRO 0x0000002c /* Set GRO enable (ethtool_value) */ 4721094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 4731094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* compatibility with older code */ 4741094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SPARC_ETH_GSET ETHTOOL_GSET 4751094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SPARC_ETH_SSET ETHTOOL_SSET 4761094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 4771094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* Indicates what features are supported by the interface. */ 4781094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_10baseT_Half (1 << 0) 4791094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_10baseT_Full (1 << 1) 4801094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_100baseT_Half (1 << 2) 4811094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_100baseT_Full (1 << 3) 4821094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_1000baseT_Half (1 << 4) 4831094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_1000baseT_Full (1 << 5) 4841094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_Autoneg (1 << 6) 4851094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_TP (1 << 7) 4861094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_AUI (1 << 8) 4871094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_MII (1 << 9) 4881094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_FIBRE (1 << 10) 4891094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_BNC (1 << 11) 4901094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_10000baseT_Full (1 << 12) 4911094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_Pause (1 << 13) 4921094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_Asym_Pause (1 << 14) 4931094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SUPPORTED_2500baseX_Full (1 << 15) 4941094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 4951094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* Indicates what features are advertised by the interface. */ 4961094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_10baseT_Half (1 << 0) 4971094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_10baseT_Full (1 << 1) 4981094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_100baseT_Half (1 << 2) 4991094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_100baseT_Full (1 << 3) 5001094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_1000baseT_Half (1 << 4) 5011094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_1000baseT_Full (1 << 5) 5021094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_Autoneg (1 << 6) 5031094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_TP (1 << 7) 5041094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_AUI (1 << 8) 5051094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_MII (1 << 9) 5061094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_FIBRE (1 << 10) 5071094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_BNC (1 << 11) 5081094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_10000baseT_Full (1 << 12) 5091094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_Pause (1 << 13) 5101094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_Asym_Pause (1 << 14) 5111094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define ADVERTISED_2500baseX_Full (1 << 15) 5121094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 5131094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* The following are all involved in forcing a particular link 5141094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * mode for the device for setting things. When getting the 5151094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * devices settings, these indicate the current mode and whether 5161094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * it was foced up into this mode or autonegotiated. 5171094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 5181094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 5191094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* The forced speed, 10Mb, 100Mb, gigabit, 2.5Gb, 10GbE. */ 5201094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SPEED_10 10 5211094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SPEED_100 100 5221094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SPEED_1000 1000 5231094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SPEED_2500 2500 5241094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SPEED_10000 10000 5251094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 5261094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* Duplex, half or full. */ 5271094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define DUPLEX_HALF 0x00 5281094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define DUPLEX_FULL 0x01 5291094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 5301094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* Which connector port. */ 5311094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define PORT_TP 0x00 5321094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define PORT_AUI 0x01 5331094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define PORT_MII 0x02 5341094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define PORT_FIBRE 0x03 5351094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define PORT_BNC 0x04 5361094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 5371094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* Which transceiver to use. */ 5381094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define XCVR_INTERNAL 0x00 5391094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define XCVR_EXTERNAL 0x01 5401094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define XCVR_DUMMY1 0x02 5411094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define XCVR_DUMMY2 0x03 5421094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define XCVR_DUMMY3 0x04 5431094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 5441094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* Enable or disable autonegotiation. If this is set to enable, 5451094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * the forced link modes above are completely ignored. 5461094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */ 5471094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define AUTONEG_DISABLE 0x00 5481094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define AUTONEG_ENABLE 0x01 5491094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 5501094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* Wake-On-Lan options. */ 5511094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define WAKE_PHY (1 << 0) 5521094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define WAKE_UCAST (1 << 1) 5531094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define WAKE_MCAST (1 << 2) 5541094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define WAKE_BCAST (1 << 3) 5551094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define WAKE_ARP (1 << 4) 5561094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define WAKE_MAGIC (1 << 5) 5571094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define WAKE_MAGICSECURE (1 << 6) /* only meaningful if WAKE_MAGIC */ 5581094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 5591094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* L3-L4 network traffic flow types */ 5601094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define TCP_V4_FLOW 0x01 5611094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define UDP_V4_FLOW 0x02 5621094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SCTP_V4_FLOW 0x03 5631094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define AH_ESP_V4_FLOW 0x04 5641094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define TCP_V6_FLOW 0x05 5651094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define UDP_V6_FLOW 0x06 5661094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define SCTP_V6_FLOW 0x07 5671094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define AH_ESP_V6_FLOW 0x08 5681094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 5691094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* L3-L4 network traffic flow hash options */ 5701094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define RXH_DEV_PORT (1 << 0) 5711094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define RXH_L2DA (1 << 1) 5721094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define RXH_VLAN (1 << 2) 5731094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define RXH_L3_PROTO (1 << 3) 5741094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define RXH_IP_SRC (1 << 4) 5751094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define RXH_IP_DST (1 << 5) 5761094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define RXH_L4_B_0_1 (1 << 6) /* src port in case of TCP/UDP/SCTP */ 5771094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define RXH_L4_B_2_3 (1 << 7) /* dst port in case of TCP/UDP/SCTP */ 5781094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define RXH_DISCARD (1 << 31) 5791094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 5801094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru 5811094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#endif /* _LINUX_ETHTOOL_H */ 582