1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * ethtool.h: Defines for Linux ethtool. 3*53ee8cc1Swenshuai.xi * 4*53ee8cc1Swenshuai.xi * Copyright (C) 1998 David S. Miller (davem@redhat.com) 5*53ee8cc1Swenshuai.xi * Copyright 2001 Jeff Garzik <jgarzik@pobox.com> 6*53ee8cc1Swenshuai.xi * Portions Copyright 2001 Sun Microsystems (thockin@sun.com) 7*53ee8cc1Swenshuai.xi * Portions Copyright 2002 Intel (eli.kupermann@intel.com, 8*53ee8cc1Swenshuai.xi * christopher.leech@intel.com, 9*53ee8cc1Swenshuai.xi * scott.feldman@intel.com) 10*53ee8cc1Swenshuai.xi */ 11*53ee8cc1Swenshuai.xi 12*53ee8cc1Swenshuai.xi #ifndef _LINUX_ETHTOOL_H 13*53ee8cc1Swenshuai.xi #define _LINUX_ETHTOOL_H 14*53ee8cc1Swenshuai.xi 15*53ee8cc1Swenshuai.xi #include <linux/types.h> 16*53ee8cc1Swenshuai.xi 17*53ee8cc1Swenshuai.xi /* This should work for both 32 and 64 bit userland. */ 18*53ee8cc1Swenshuai.xi struct ethtool_cmd { 19*53ee8cc1Swenshuai.xi __u32 cmd; 20*53ee8cc1Swenshuai.xi __u32 supported; /* Features this interface supports */ 21*53ee8cc1Swenshuai.xi __u32 advertising; /* Features this interface advertises */ 22*53ee8cc1Swenshuai.xi __u16 speed; /* The forced speed, 10Mb, 100Mb, gigabit */ 23*53ee8cc1Swenshuai.xi __u8 duplex; /* Duplex, half or full */ 24*53ee8cc1Swenshuai.xi __u8 port; /* Which connector port */ 25*53ee8cc1Swenshuai.xi __u8 phy_address; 26*53ee8cc1Swenshuai.xi __u8 transceiver; /* Which transceiver to use */ 27*53ee8cc1Swenshuai.xi __u8 autoneg; /* Enable or disable autonegotiation */ 28*53ee8cc1Swenshuai.xi __u32 maxtxpkt; /* Tx pkts before generating tx int */ 29*53ee8cc1Swenshuai.xi __u32 maxrxpkt; /* Rx pkts before generating rx int */ 30*53ee8cc1Swenshuai.xi __u32 reserved[4]; 31*53ee8cc1Swenshuai.xi }; 32*53ee8cc1Swenshuai.xi 33*53ee8cc1Swenshuai.xi #define ETHTOOL_BUSINFO_LEN 32 34*53ee8cc1Swenshuai.xi /* these strings are set to whatever the driver author decides... */ 35*53ee8cc1Swenshuai.xi struct ethtool_drvinfo { 36*53ee8cc1Swenshuai.xi __u32 cmd; 37*53ee8cc1Swenshuai.xi char driver[32]; /* driver short name, "tulip", "eepro100" */ 38*53ee8cc1Swenshuai.xi char version[32]; /* driver version string */ 39*53ee8cc1Swenshuai.xi char fw_version[32]; /* firmware version string, if applicable */ 40*53ee8cc1Swenshuai.xi char bus_info[ETHTOOL_BUSINFO_LEN]; /* Bus info for this IF. */ 41*53ee8cc1Swenshuai.xi /* For PCI devices, use pci_name(pci_dev). */ 42*53ee8cc1Swenshuai.xi char reserved1[32]; 43*53ee8cc1Swenshuai.xi char reserved2[12]; 44*53ee8cc1Swenshuai.xi __u32 n_priv_flags; /* number of flags valid in ETHTOOL_GPFLAGS */ 45*53ee8cc1Swenshuai.xi __u32 n_stats; /* number of u64's from ETHTOOL_GSTATS */ 46*53ee8cc1Swenshuai.xi __u32 testinfo_len; 47*53ee8cc1Swenshuai.xi __u32 eedump_len; /* Size of data from ETHTOOL_GEEPROM (bytes) */ 48*53ee8cc1Swenshuai.xi __u32 regdump_len; /* Size of data from ETHTOOL_GREGS (bytes) */ 49*53ee8cc1Swenshuai.xi }; 50*53ee8cc1Swenshuai.xi 51*53ee8cc1Swenshuai.xi #define SOPASS_MAX 6 52*53ee8cc1Swenshuai.xi /* wake-on-lan settings */ 53*53ee8cc1Swenshuai.xi struct ethtool_wolinfo { 54*53ee8cc1Swenshuai.xi __u32 cmd; 55*53ee8cc1Swenshuai.xi __u32 supported; 56*53ee8cc1Swenshuai.xi __u32 wolopts; 57*53ee8cc1Swenshuai.xi __u8 sopass[SOPASS_MAX]; /* SecureOn(tm) password */ 58*53ee8cc1Swenshuai.xi }; 59*53ee8cc1Swenshuai.xi 60*53ee8cc1Swenshuai.xi /* for passing single values */ 61*53ee8cc1Swenshuai.xi struct ethtool_value { 62*53ee8cc1Swenshuai.xi __u32 cmd; 63*53ee8cc1Swenshuai.xi __u32 data; 64*53ee8cc1Swenshuai.xi }; 65*53ee8cc1Swenshuai.xi 66*53ee8cc1Swenshuai.xi /* for passing big chunks of data */ 67*53ee8cc1Swenshuai.xi struct ethtool_regs { 68*53ee8cc1Swenshuai.xi __u32 cmd; 69*53ee8cc1Swenshuai.xi __u32 version; /* driver-specific, indicates different chips/revs */ 70*53ee8cc1Swenshuai.xi __u32 len; /* bytes */ 71*53ee8cc1Swenshuai.xi __u8 data[0]; 72*53ee8cc1Swenshuai.xi }; 73*53ee8cc1Swenshuai.xi 74*53ee8cc1Swenshuai.xi /* for passing EEPROM chunks */ 75*53ee8cc1Swenshuai.xi struct ethtool_eeprom { 76*53ee8cc1Swenshuai.xi __u32 cmd; 77*53ee8cc1Swenshuai.xi __u32 magic; 78*53ee8cc1Swenshuai.xi __u32 offset; /* in bytes */ 79*53ee8cc1Swenshuai.xi __u32 len; /* in bytes */ 80*53ee8cc1Swenshuai.xi __u8 data[0]; 81*53ee8cc1Swenshuai.xi }; 82*53ee8cc1Swenshuai.xi 83*53ee8cc1Swenshuai.xi /* for configuring coalescing parameters of chip */ 84*53ee8cc1Swenshuai.xi struct ethtool_coalesce { 85*53ee8cc1Swenshuai.xi __u32 cmd; /* ETHTOOL_{G,S}COALESCE */ 86*53ee8cc1Swenshuai.xi 87*53ee8cc1Swenshuai.xi /* How many usecs to delay an RX interrupt after 88*53ee8cc1Swenshuai.xi * a packet arrives. If 0, only rx_max_coalesced_frames 89*53ee8cc1Swenshuai.xi * is used. 90*53ee8cc1Swenshuai.xi */ 91*53ee8cc1Swenshuai.xi __u32 rx_coalesce_usecs; 92*53ee8cc1Swenshuai.xi 93*53ee8cc1Swenshuai.xi /* How many packets to delay an RX interrupt after 94*53ee8cc1Swenshuai.xi * a packet arrives. If 0, only rx_coalesce_usecs is 95*53ee8cc1Swenshuai.xi * used. It is illegal to set both usecs and max frames 96*53ee8cc1Swenshuai.xi * to zero as this would cause RX interrupts to never be 97*53ee8cc1Swenshuai.xi * generated. 98*53ee8cc1Swenshuai.xi */ 99*53ee8cc1Swenshuai.xi __u32 rx_max_coalesced_frames; 100*53ee8cc1Swenshuai.xi 101*53ee8cc1Swenshuai.xi /* Same as above two parameters, except that these values 102*53ee8cc1Swenshuai.xi * apply while an IRQ is being serviced by the host. Not 103*53ee8cc1Swenshuai.xi * all cards support this feature and the values are ignored 104*53ee8cc1Swenshuai.xi * in that case. 105*53ee8cc1Swenshuai.xi */ 106*53ee8cc1Swenshuai.xi __u32 rx_coalesce_usecs_irq; 107*53ee8cc1Swenshuai.xi __u32 rx_max_coalesced_frames_irq; 108*53ee8cc1Swenshuai.xi 109*53ee8cc1Swenshuai.xi /* How many usecs to delay a TX interrupt after 110*53ee8cc1Swenshuai.xi * a packet is sent. If 0, only tx_max_coalesced_frames 111*53ee8cc1Swenshuai.xi * is used. 112*53ee8cc1Swenshuai.xi */ 113*53ee8cc1Swenshuai.xi __u32 tx_coalesce_usecs; 114*53ee8cc1Swenshuai.xi 115*53ee8cc1Swenshuai.xi /* How many packets to delay a TX interrupt after 116*53ee8cc1Swenshuai.xi * a packet is sent. If 0, only tx_coalesce_usecs is 117*53ee8cc1Swenshuai.xi * used. It is illegal to set both usecs and max frames 118*53ee8cc1Swenshuai.xi * to zero as this would cause TX interrupts to never be 119*53ee8cc1Swenshuai.xi * generated. 120*53ee8cc1Swenshuai.xi */ 121*53ee8cc1Swenshuai.xi __u32 tx_max_coalesced_frames; 122*53ee8cc1Swenshuai.xi 123*53ee8cc1Swenshuai.xi /* Same as above two parameters, except that these values 124*53ee8cc1Swenshuai.xi * apply while an IRQ is being serviced by the host. Not 125*53ee8cc1Swenshuai.xi * all cards support this feature and the values are ignored 126*53ee8cc1Swenshuai.xi * in that case. 127*53ee8cc1Swenshuai.xi */ 128*53ee8cc1Swenshuai.xi __u32 tx_coalesce_usecs_irq; 129*53ee8cc1Swenshuai.xi __u32 tx_max_coalesced_frames_irq; 130*53ee8cc1Swenshuai.xi 131*53ee8cc1Swenshuai.xi /* How many usecs to delay in-memory statistics 132*53ee8cc1Swenshuai.xi * block updates. Some drivers do not have an in-memory 133*53ee8cc1Swenshuai.xi * statistic block, and in such cases this value is ignored. 134*53ee8cc1Swenshuai.xi * This value must not be zero. 135*53ee8cc1Swenshuai.xi */ 136*53ee8cc1Swenshuai.xi __u32 stats_block_coalesce_usecs; 137*53ee8cc1Swenshuai.xi 138*53ee8cc1Swenshuai.xi /* Adaptive RX/TX coalescing is an algorithm implemented by 139*53ee8cc1Swenshuai.xi * some drivers to improve latency under low packet rates and 140*53ee8cc1Swenshuai.xi * improve throughput under high packet rates. Some drivers 141*53ee8cc1Swenshuai.xi * only implement one of RX or TX adaptive coalescing. Anything 142*53ee8cc1Swenshuai.xi * not implemented by the driver causes these values to be 143*53ee8cc1Swenshuai.xi * silently ignored. 144*53ee8cc1Swenshuai.xi */ 145*53ee8cc1Swenshuai.xi __u32 use_adaptive_rx_coalesce; 146*53ee8cc1Swenshuai.xi __u32 use_adaptive_tx_coalesce; 147*53ee8cc1Swenshuai.xi 148*53ee8cc1Swenshuai.xi /* When the packet rate (measured in packets per second) 149*53ee8cc1Swenshuai.xi * is below pkt_rate_low, the {rx,tx}_*_low parameters are 150*53ee8cc1Swenshuai.xi * used. 151*53ee8cc1Swenshuai.xi */ 152*53ee8cc1Swenshuai.xi __u32 pkt_rate_low; 153*53ee8cc1Swenshuai.xi __u32 rx_coalesce_usecs_low; 154*53ee8cc1Swenshuai.xi __u32 rx_max_coalesced_frames_low; 155*53ee8cc1Swenshuai.xi __u32 tx_coalesce_usecs_low; 156*53ee8cc1Swenshuai.xi __u32 tx_max_coalesced_frames_low; 157*53ee8cc1Swenshuai.xi 158*53ee8cc1Swenshuai.xi /* When the packet rate is below pkt_rate_high but above 159*53ee8cc1Swenshuai.xi * pkt_rate_low (both measured in packets per second) the 160*53ee8cc1Swenshuai.xi * normal {rx,tx}_* coalescing parameters are used. 161*53ee8cc1Swenshuai.xi */ 162*53ee8cc1Swenshuai.xi 163*53ee8cc1Swenshuai.xi /* When the packet rate is (measured in packets per second) 164*53ee8cc1Swenshuai.xi * is above pkt_rate_high, the {rx,tx}_*_high parameters are 165*53ee8cc1Swenshuai.xi * used. 166*53ee8cc1Swenshuai.xi */ 167*53ee8cc1Swenshuai.xi __u32 pkt_rate_high; 168*53ee8cc1Swenshuai.xi __u32 rx_coalesce_usecs_high; 169*53ee8cc1Swenshuai.xi __u32 rx_max_coalesced_frames_high; 170*53ee8cc1Swenshuai.xi __u32 tx_coalesce_usecs_high; 171*53ee8cc1Swenshuai.xi __u32 tx_max_coalesced_frames_high; 172*53ee8cc1Swenshuai.xi 173*53ee8cc1Swenshuai.xi /* How often to do adaptive coalescing packet rate sampling, 174*53ee8cc1Swenshuai.xi * measured in seconds. Must not be zero. 175*53ee8cc1Swenshuai.xi */ 176*53ee8cc1Swenshuai.xi __u32 rate_sample_interval; 177*53ee8cc1Swenshuai.xi }; 178*53ee8cc1Swenshuai.xi 179*53ee8cc1Swenshuai.xi /* for configuring RX/TX ring parameters */ 180*53ee8cc1Swenshuai.xi struct ethtool_ringparam { 181*53ee8cc1Swenshuai.xi __u32 cmd; /* ETHTOOL_{G,S}RINGPARAM */ 182*53ee8cc1Swenshuai.xi 183*53ee8cc1Swenshuai.xi /* Read only attributes. These indicate the maximum number 184*53ee8cc1Swenshuai.xi * of pending RX/TX ring entries the driver will allow the 185*53ee8cc1Swenshuai.xi * user to set. 186*53ee8cc1Swenshuai.xi */ 187*53ee8cc1Swenshuai.xi __u32 rx_max_pending; 188*53ee8cc1Swenshuai.xi __u32 rx_mini_max_pending; 189*53ee8cc1Swenshuai.xi __u32 rx_jumbo_max_pending; 190*53ee8cc1Swenshuai.xi __u32 tx_max_pending; 191*53ee8cc1Swenshuai.xi 192*53ee8cc1Swenshuai.xi /* Values changeable by the user. The valid values are 193*53ee8cc1Swenshuai.xi * in the range 1 to the "*_max_pending" counterpart above. 194*53ee8cc1Swenshuai.xi */ 195*53ee8cc1Swenshuai.xi __u32 rx_pending; 196*53ee8cc1Swenshuai.xi __u32 rx_mini_pending; 197*53ee8cc1Swenshuai.xi __u32 rx_jumbo_pending; 198*53ee8cc1Swenshuai.xi __u32 tx_pending; 199*53ee8cc1Swenshuai.xi }; 200*53ee8cc1Swenshuai.xi 201*53ee8cc1Swenshuai.xi /* for configuring link flow control parameters */ 202*53ee8cc1Swenshuai.xi struct ethtool_pauseparam { 203*53ee8cc1Swenshuai.xi __u32 cmd; /* ETHTOOL_{G,S}PAUSEPARAM */ 204*53ee8cc1Swenshuai.xi 205*53ee8cc1Swenshuai.xi /* If the link is being auto-negotiated (via ethtool_cmd.autoneg 206*53ee8cc1Swenshuai.xi * being true) the user may set 'autonet' here non-zero to have the 207*53ee8cc1Swenshuai.xi * pause parameters be auto-negotiated too. In such a case, the 208*53ee8cc1Swenshuai.xi * {rx,tx}_pause values below determine what capabilities are 209*53ee8cc1Swenshuai.xi * advertised. 210*53ee8cc1Swenshuai.xi * 211*53ee8cc1Swenshuai.xi * If 'autoneg' is zero or the link is not being auto-negotiated, 212*53ee8cc1Swenshuai.xi * then {rx,tx}_pause force the driver to use/not-use pause 213*53ee8cc1Swenshuai.xi * flow control. 214*53ee8cc1Swenshuai.xi */ 215*53ee8cc1Swenshuai.xi __u32 autoneg; 216*53ee8cc1Swenshuai.xi __u32 rx_pause; 217*53ee8cc1Swenshuai.xi __u32 tx_pause; 218*53ee8cc1Swenshuai.xi }; 219*53ee8cc1Swenshuai.xi 220*53ee8cc1Swenshuai.xi #define ETH_GSTRING_LEN 32 221*53ee8cc1Swenshuai.xi enum ethtool_stringset { 222*53ee8cc1Swenshuai.xi ETH_SS_TEST = 0, 223*53ee8cc1Swenshuai.xi ETH_SS_STATS, 224*53ee8cc1Swenshuai.xi ETH_SS_PRIV_FLAGS, 225*53ee8cc1Swenshuai.xi }; 226*53ee8cc1Swenshuai.xi 227*53ee8cc1Swenshuai.xi /* for passing string sets for data tagging */ 228*53ee8cc1Swenshuai.xi struct ethtool_gstrings { 229*53ee8cc1Swenshuai.xi __u32 cmd; /* ETHTOOL_GSTRINGS */ 230*53ee8cc1Swenshuai.xi __u32 string_set; /* string set id e.c. ETH_SS_TEST, etc*/ 231*53ee8cc1Swenshuai.xi __u32 len; /* number of strings in the string set */ 232*53ee8cc1Swenshuai.xi __u8 data[0]; 233*53ee8cc1Swenshuai.xi }; 234*53ee8cc1Swenshuai.xi 235*53ee8cc1Swenshuai.xi enum ethtool_test_flags { 236*53ee8cc1Swenshuai.xi ETH_TEST_FL_OFFLINE = (1 << 0), /* online / offline */ 237*53ee8cc1Swenshuai.xi ETH_TEST_FL_FAILED = (1 << 1), /* test passed / failed */ 238*53ee8cc1Swenshuai.xi }; 239*53ee8cc1Swenshuai.xi 240*53ee8cc1Swenshuai.xi /* for requesting NIC test and getting results*/ 241*53ee8cc1Swenshuai.xi struct ethtool_test { 242*53ee8cc1Swenshuai.xi __u32 cmd; /* ETHTOOL_TEST */ 243*53ee8cc1Swenshuai.xi __u32 flags; /* ETH_TEST_FL_xxx */ 244*53ee8cc1Swenshuai.xi __u32 reserved; 245*53ee8cc1Swenshuai.xi __u32 len; /* result length, in number of u64 elements */ 246*53ee8cc1Swenshuai.xi __u64 data[0]; 247*53ee8cc1Swenshuai.xi }; 248*53ee8cc1Swenshuai.xi 249*53ee8cc1Swenshuai.xi /* for dumping NIC-specific statistics */ 250*53ee8cc1Swenshuai.xi struct ethtool_stats { 251*53ee8cc1Swenshuai.xi __u32 cmd; /* ETHTOOL_GSTATS */ 252*53ee8cc1Swenshuai.xi __u32 n_stats; /* number of u64's being returned */ 253*53ee8cc1Swenshuai.xi __u64 data[0]; 254*53ee8cc1Swenshuai.xi }; 255*53ee8cc1Swenshuai.xi 256*53ee8cc1Swenshuai.xi struct ethtool_perm_addr { 257*53ee8cc1Swenshuai.xi __u32 cmd; /* ETHTOOL_GPERMADDR */ 258*53ee8cc1Swenshuai.xi __u32 size; 259*53ee8cc1Swenshuai.xi __u8 data[0]; 260*53ee8cc1Swenshuai.xi }; 261*53ee8cc1Swenshuai.xi 262*53ee8cc1Swenshuai.xi /* boolean flags controlling per-interface behavior characteristics. 263*53ee8cc1Swenshuai.xi * When reading, the flag indicates whether or not a certain behavior 264*53ee8cc1Swenshuai.xi * is enabled/present. When writing, the flag indicates whether 265*53ee8cc1Swenshuai.xi * or not the driver should turn on (set) or off (clear) a behavior. 266*53ee8cc1Swenshuai.xi * 267*53ee8cc1Swenshuai.xi * Some behaviors may read-only (unconditionally absent or present). 268*53ee8cc1Swenshuai.xi * If such is the case, return EINVAL in the set-flags operation if the 269*53ee8cc1Swenshuai.xi * flag differs from the read-only value. 270*53ee8cc1Swenshuai.xi */ 271*53ee8cc1Swenshuai.xi enum ethtool_flags { 272*53ee8cc1Swenshuai.xi ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */ 273*53ee8cc1Swenshuai.xi }; 274*53ee8cc1Swenshuai.xi 275*53ee8cc1Swenshuai.xi 276*53ee8cc1Swenshuai.xi /* CMDs currently supported */ 277*53ee8cc1Swenshuai.xi #define ETHTOOL_GSET 0x00000001 /* Get settings. */ 278*53ee8cc1Swenshuai.xi #define ETHTOOL_SSET 0x00000002 /* Set settings. */ 279*53ee8cc1Swenshuai.xi #define ETHTOOL_GDRVINFO 0x00000003 /* Get driver info. */ 280*53ee8cc1Swenshuai.xi #define ETHTOOL_GREGS 0x00000004 /* Get NIC registers. */ 281*53ee8cc1Swenshuai.xi #define ETHTOOL_GWOL 0x00000005 /* Get wake-on-lan options. */ 282*53ee8cc1Swenshuai.xi #define ETHTOOL_SWOL 0x00000006 /* Set wake-on-lan options. */ 283*53ee8cc1Swenshuai.xi #define ETHTOOL_GMSGLVL 0x00000007 /* Get driver message level */ 284*53ee8cc1Swenshuai.xi #define ETHTOOL_SMSGLVL 0x00000008 /* Set driver msg level. */ 285*53ee8cc1Swenshuai.xi #define ETHTOOL_NWAY_RST 0x00000009 /* Restart autonegotiation. */ 286*53ee8cc1Swenshuai.xi #define ETHTOOL_GLINK 0x0000000a /* Get link status (ethtool_value) */ 287*53ee8cc1Swenshuai.xi #define ETHTOOL_GEEPROM 0x0000000b /* Get EEPROM data */ 288*53ee8cc1Swenshuai.xi #define ETHTOOL_SEEPROM 0x0000000c /* Set EEPROM data. */ 289*53ee8cc1Swenshuai.xi #define ETHTOOL_GCOALESCE 0x0000000e /* Get coalesce config */ 290*53ee8cc1Swenshuai.xi #define ETHTOOL_SCOALESCE 0x0000000f /* Set coalesce config. */ 291*53ee8cc1Swenshuai.xi #define ETHTOOL_GRINGPARAM 0x00000010 /* Get ring parameters */ 292*53ee8cc1Swenshuai.xi #define ETHTOOL_SRINGPARAM 0x00000011 /* Set ring parameters. */ 293*53ee8cc1Swenshuai.xi #define ETHTOOL_GPAUSEPARAM 0x00000012 /* Get pause parameters */ 294*53ee8cc1Swenshuai.xi #define ETHTOOL_SPAUSEPARAM 0x00000013 /* Set pause parameters. */ 295*53ee8cc1Swenshuai.xi #define ETHTOOL_GRXCSUM 0x00000014 /* Get RX hw csum enable (ethtool_value) */ 296*53ee8cc1Swenshuai.xi #define ETHTOOL_SRXCSUM 0x00000015 /* Set RX hw csum enable (ethtool_value) */ 297*53ee8cc1Swenshuai.xi #define ETHTOOL_GTXCSUM 0x00000016 /* Get TX hw csum enable (ethtool_value) */ 298*53ee8cc1Swenshuai.xi #define ETHTOOL_STXCSUM 0x00000017 /* Set TX hw csum enable (ethtool_value) */ 299*53ee8cc1Swenshuai.xi #define ETHTOOL_GSG 0x00000018 /* Get scatter-gather enable 300*53ee8cc1Swenshuai.xi * (ethtool_value) */ 301*53ee8cc1Swenshuai.xi #define ETHTOOL_SSG 0x00000019 /* Set scatter-gather enable 302*53ee8cc1Swenshuai.xi * (ethtool_value). */ 303*53ee8cc1Swenshuai.xi #define ETHTOOL_TEST 0x0000001a /* execute NIC self-test. */ 304*53ee8cc1Swenshuai.xi #define ETHTOOL_GSTRINGS 0x0000001b /* get specified string set */ 305*53ee8cc1Swenshuai.xi #define ETHTOOL_PHYS_ID 0x0000001c /* identify the NIC */ 306*53ee8cc1Swenshuai.xi #define ETHTOOL_GSTATS 0x0000001d /* get NIC-specific statistics */ 307*53ee8cc1Swenshuai.xi #define ETHTOOL_GTSO 0x0000001e /* Get TSO enable (ethtool_value) */ 308*53ee8cc1Swenshuai.xi #define ETHTOOL_STSO 0x0000001f /* Set TSO enable (ethtool_value) */ 309*53ee8cc1Swenshuai.xi #define ETHTOOL_GPERMADDR 0x00000020 /* Get permanent hardware address */ 310*53ee8cc1Swenshuai.xi #define ETHTOOL_GUFO 0x00000021 /* Get UFO enable (ethtool_value) */ 311*53ee8cc1Swenshuai.xi #define ETHTOOL_SUFO 0x00000022 /* Set UFO enable (ethtool_value) */ 312*53ee8cc1Swenshuai.xi #define ETHTOOL_GGSO 0x00000023 /* Get GSO enable (ethtool_value) */ 313*53ee8cc1Swenshuai.xi #define ETHTOOL_SGSO 0x00000024 /* Set GSO enable (ethtool_value) */ 314*53ee8cc1Swenshuai.xi #define ETHTOOL_GFLAGS 0x00000025 /* Get flags bitmap(ethtool_value) */ 315*53ee8cc1Swenshuai.xi #define ETHTOOL_SFLAGS 0x00000026 /* Set flags bitmap(ethtool_value) */ 316*53ee8cc1Swenshuai.xi #define ETHTOOL_GPFLAGS 0x00000027 /* Get driver-private flags bitmap */ 317*53ee8cc1Swenshuai.xi #define ETHTOOL_SPFLAGS 0x00000028 /* Set driver-private flags bitmap */ 318*53ee8cc1Swenshuai.xi 319*53ee8cc1Swenshuai.xi /* compatibility with older code */ 320*53ee8cc1Swenshuai.xi #define SPARC_ETH_GSET ETHTOOL_GSET 321*53ee8cc1Swenshuai.xi #define SPARC_ETH_SSET ETHTOOL_SSET 322*53ee8cc1Swenshuai.xi 323*53ee8cc1Swenshuai.xi /* Indicates what features are supported by the interface. */ 324*53ee8cc1Swenshuai.xi #define SUPPORTED_10baseT_Half (1 << 0) 325*53ee8cc1Swenshuai.xi #define SUPPORTED_10baseT_Full (1 << 1) 326*53ee8cc1Swenshuai.xi #define SUPPORTED_100baseT_Half (1 << 2) 327*53ee8cc1Swenshuai.xi #define SUPPORTED_100baseT_Full (1 << 3) 328*53ee8cc1Swenshuai.xi #define SUPPORTED_1000baseT_Half (1 << 4) 329*53ee8cc1Swenshuai.xi #define SUPPORTED_1000baseT_Full (1 << 5) 330*53ee8cc1Swenshuai.xi #define SUPPORTED_Autoneg (1 << 6) 331*53ee8cc1Swenshuai.xi #define SUPPORTED_TP (1 << 7) 332*53ee8cc1Swenshuai.xi #define SUPPORTED_AUI (1 << 8) 333*53ee8cc1Swenshuai.xi #define SUPPORTED_MII (1 << 9) 334*53ee8cc1Swenshuai.xi #define SUPPORTED_FIBRE (1 << 10) 335*53ee8cc1Swenshuai.xi #define SUPPORTED_BNC (1 << 11) 336*53ee8cc1Swenshuai.xi #define SUPPORTED_10000baseT_Full (1 << 12) 337*53ee8cc1Swenshuai.xi #define SUPPORTED_Pause (1 << 13) 338*53ee8cc1Swenshuai.xi #define SUPPORTED_Asym_Pause (1 << 14) 339*53ee8cc1Swenshuai.xi #define SUPPORTED_2500baseX_Full (1 << 15) 340*53ee8cc1Swenshuai.xi 341*53ee8cc1Swenshuai.xi /* Indicates what features are advertised by the interface. */ 342*53ee8cc1Swenshuai.xi #define ADVERTISED_10baseT_Half (1 << 0) 343*53ee8cc1Swenshuai.xi #define ADVERTISED_10baseT_Full (1 << 1) 344*53ee8cc1Swenshuai.xi #define ADVERTISED_100baseT_Half (1 << 2) 345*53ee8cc1Swenshuai.xi #define ADVERTISED_100baseT_Full (1 << 3) 346*53ee8cc1Swenshuai.xi #define ADVERTISED_1000baseT_Half (1 << 4) 347*53ee8cc1Swenshuai.xi #define ADVERTISED_1000baseT_Full (1 << 5) 348*53ee8cc1Swenshuai.xi #define ADVERTISED_Autoneg (1 << 6) 349*53ee8cc1Swenshuai.xi #define ADVERTISED_TP (1 << 7) 350*53ee8cc1Swenshuai.xi #define ADVERTISED_AUI (1 << 8) 351*53ee8cc1Swenshuai.xi #define ADVERTISED_MII (1 << 9) 352*53ee8cc1Swenshuai.xi #define ADVERTISED_FIBRE (1 << 10) 353*53ee8cc1Swenshuai.xi #define ADVERTISED_BNC (1 << 11) 354*53ee8cc1Swenshuai.xi #define ADVERTISED_10000baseT_Full (1 << 12) 355*53ee8cc1Swenshuai.xi #define ADVERTISED_Pause (1 << 13) 356*53ee8cc1Swenshuai.xi #define ADVERTISED_Asym_Pause (1 << 14) 357*53ee8cc1Swenshuai.xi #define ADVERTISED_2500baseX_Full (1 << 15) 358*53ee8cc1Swenshuai.xi 359*53ee8cc1Swenshuai.xi /* The following are all involved in forcing a particular link 360*53ee8cc1Swenshuai.xi * mode for the device for setting things. When getting the 361*53ee8cc1Swenshuai.xi * devices settings, these indicate the current mode and whether 362*53ee8cc1Swenshuai.xi * it was foced up into this mode or autonegotiated. 363*53ee8cc1Swenshuai.xi */ 364*53ee8cc1Swenshuai.xi 365*53ee8cc1Swenshuai.xi /* The forced speed, 10Mb, 100Mb, gigabit, 2.5Gb, 10GbE. */ 366*53ee8cc1Swenshuai.xi #define SPEED_10 10 367*53ee8cc1Swenshuai.xi #define SPEED_100 100 368*53ee8cc1Swenshuai.xi #define SPEED_1000 1000 369*53ee8cc1Swenshuai.xi #define SPEED_2500 2500 370*53ee8cc1Swenshuai.xi #define SPEED_10000 10000 371*53ee8cc1Swenshuai.xi 372*53ee8cc1Swenshuai.xi /* Duplex, half or full. */ 373*53ee8cc1Swenshuai.xi #define DUPLEX_HALF 0x00 374*53ee8cc1Swenshuai.xi #define DUPLEX_FULL 0x01 375*53ee8cc1Swenshuai.xi 376*53ee8cc1Swenshuai.xi /* Which connector port. */ 377*53ee8cc1Swenshuai.xi #define PORT_TP 0x00 378*53ee8cc1Swenshuai.xi #define PORT_AUI 0x01 379*53ee8cc1Swenshuai.xi #define PORT_MII 0x02 380*53ee8cc1Swenshuai.xi #define PORT_FIBRE 0x03 381*53ee8cc1Swenshuai.xi #define PORT_BNC 0x04 382*53ee8cc1Swenshuai.xi 383*53ee8cc1Swenshuai.xi /* Which transceiver to use. */ 384*53ee8cc1Swenshuai.xi #define XCVR_INTERNAL 0x00 385*53ee8cc1Swenshuai.xi #define XCVR_EXTERNAL 0x01 386*53ee8cc1Swenshuai.xi #define XCVR_DUMMY1 0x02 387*53ee8cc1Swenshuai.xi #define XCVR_DUMMY2 0x03 388*53ee8cc1Swenshuai.xi #define XCVR_DUMMY3 0x04 389*53ee8cc1Swenshuai.xi 390*53ee8cc1Swenshuai.xi /* Enable or disable autonegotiation. If this is set to enable, 391*53ee8cc1Swenshuai.xi * the forced link modes above are completely ignored. 392*53ee8cc1Swenshuai.xi */ 393*53ee8cc1Swenshuai.xi #define AUTONEG_DISABLE 0x00 394*53ee8cc1Swenshuai.xi #define AUTONEG_ENABLE 0x01 395*53ee8cc1Swenshuai.xi 396*53ee8cc1Swenshuai.xi /* Wake-On-Lan options. */ 397*53ee8cc1Swenshuai.xi #define WAKE_PHY (1 << 0) 398*53ee8cc1Swenshuai.xi #define WAKE_UCAST (1 << 1) 399*53ee8cc1Swenshuai.xi #define WAKE_MCAST (1 << 2) 400*53ee8cc1Swenshuai.xi #define WAKE_BCAST (1 << 3) 401*53ee8cc1Swenshuai.xi #define WAKE_ARP (1 << 4) 402*53ee8cc1Swenshuai.xi #define WAKE_MAGIC (1 << 5) 403*53ee8cc1Swenshuai.xi #define WAKE_MAGICSECURE (1 << 6) /* only meaningful if WAKE_MAGIC */ 404*53ee8cc1Swenshuai.xi 405*53ee8cc1Swenshuai.xi #endif /* _LINUX_ETHTOOL_H */ 406