home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / linux / ethtool.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  17.5 KB  |  500 lines

  1. /*
  2.  * ethtool.h: Defines for Linux ethtool.
  3.  *
  4.  * Copyright (C) 1998 David S. Miller (davem@redhat.com)
  5.  * Copyright 2001 Jeff Garzik <jgarzik@pobox.com>
  6.  * Portions Copyright 2001 Sun Microsystems (thockin@sun.com)
  7.  * Portions Copyright 2002 Intel (eli.kupermann@intel.com,
  8.  *                                christopher.leech@intel.com,
  9.  *                                scott.feldman@intel.com)
  10.  */
  11.  
  12. #ifndef _LINUX_ETHTOOL_H
  13. #define _LINUX_ETHTOOL_H
  14.  
  15.  
  16. /* This should work for both 32 and 64 bit userland. */
  17. struct ethtool_cmd {
  18.     __u32    cmd;
  19.     __u32    supported;    /* Features this interface supports */
  20.     __u32    advertising;    /* Features this interface advertises */
  21.     __u16    speed;        /* The forced speed, 10Mb, 100Mb, gigabit */
  22.     __u8    duplex;        /* Duplex, half or full */
  23.     __u8    port;        /* Which connector port */
  24.     __u8    phy_address;
  25.     __u8    transceiver;    /* Which transceiver to use */
  26.     __u8    autoneg;    /* Enable or disable autonegotiation */
  27.     __u32    maxtxpkt;    /* Tx pkts before generating tx int */
  28.     __u32    maxrxpkt;    /* Rx pkts before generating rx int */
  29.     __u32    reserved[4];
  30. };
  31.  
  32. #define ETHTOOL_BUSINFO_LEN    32
  33. /* these strings are set to whatever the driver author decides... */
  34. struct ethtool_drvinfo {
  35.     __u32    cmd;
  36.     char    driver[32];    /* driver short name, "tulip", "eepro100" */
  37.     char    version[32];    /* driver version string */
  38.     char    fw_version[32];    /* firmware version string, if applicable */
  39.     char    bus_info[ETHTOOL_BUSINFO_LEN];    /* Bus info for this IF. */
  40.                 /* For PCI devices, use pci_name(pci_dev). */
  41.     char    reserved1[32];
  42.     char    reserved2[16];
  43.     __u32    n_stats;    /* number of u64's from ETHTOOL_GSTATS */
  44.     __u32    testinfo_len;
  45.     __u32    eedump_len;    /* Size of data from ETHTOOL_GEEPROM (bytes) */
  46.     __u32    regdump_len;    /* Size of data from ETHTOOL_GREGS (bytes) */
  47. };
  48.  
  49. #define SOPASS_MAX    6
  50. /* wake-on-lan settings */
  51. struct ethtool_wolinfo {
  52.     __u32    cmd;
  53.     __u32    supported;
  54.     __u32    wolopts;
  55.     __u8    sopass[SOPASS_MAX]; /* SecureOn(tm) password */
  56. };
  57.  
  58. /* for passing single values */
  59. struct ethtool_value {
  60.     __u32    cmd;
  61.     __u32    data;
  62. };
  63.  
  64. /* for passing big chunks of data */
  65. struct ethtool_regs {
  66.     __u32    cmd;
  67.     __u32    version; /* driver-specific, indicates different chips/revs */
  68.     __u32    len; /* bytes */
  69.     __u8    data[0];
  70. };
  71.  
  72. /* for passing EEPROM chunks */
  73. struct ethtool_eeprom {
  74.     __u32    cmd;
  75.     __u32    magic;
  76.     __u32    offset; /* in bytes */
  77.     __u32    len; /* in bytes */
  78.     __u8    data[0];
  79. };
  80.  
  81. /* for configuring coalescing parameters of chip */
  82. struct ethtool_coalesce {
  83.     __u32    cmd;    /* ETHTOOL_{G,S}COALESCE */
  84.  
  85.     /* How many usecs to delay an RX interrupt after
  86.      * a packet arrives.  If 0, only rx_max_coalesced_frames
  87.      * is used.
  88.      */
  89.     __u32    rx_coalesce_usecs;
  90.  
  91.     /* How many packets to delay an RX interrupt after
  92.      * a packet arrives.  If 0, only rx_coalesce_usecs is
  93.      * used.  It is illegal to set both usecs and max frames
  94.      * to zero as this would cause RX interrupts to never be
  95.      * generated.
  96.      */
  97.     __u32    rx_max_coalesced_frames;
  98.  
  99.     /* Same as above two parameters, except that these values
  100.      * apply while an IRQ is being serviced by the host.  Not
  101.      * all cards support this feature and the values are ignored
  102.      * in that case.
  103.      */
  104.     __u32    rx_coalesce_usecs_irq;
  105.     __u32    rx_max_coalesced_frames_irq;
  106.  
  107.     /* How many usecs to delay a TX interrupt after
  108.      * a packet is sent.  If 0, only tx_max_coalesced_frames
  109.      * is used.
  110.      */
  111.     __u32    tx_coalesce_usecs;
  112.  
  113.     /* How many packets to delay a TX interrupt after
  114.      * a packet is sent.  If 0, only tx_coalesce_usecs is
  115.      * used.  It is illegal to set both usecs and max frames
  116.      * to zero as this would cause TX interrupts to never be
  117.      * generated.
  118.      */
  119.     __u32    tx_max_coalesced_frames;
  120.  
  121.     /* Same as above two parameters, except that these values
  122.      * apply while an IRQ is being serviced by the host.  Not
  123.      * all cards support this feature and the values are ignored
  124.      * in that case.
  125.      */
  126.     __u32    tx_coalesce_usecs_irq;
  127.     __u32    tx_max_coalesced_frames_irq;
  128.  
  129.     /* How many usecs to delay in-memory statistics
  130.      * block updates.  Some drivers do not have an in-memory
  131.      * statistic block, and in such cases this value is ignored.
  132.      * This value must not be zero.
  133.      */
  134.     __u32    stats_block_coalesce_usecs;
  135.  
  136.     /* Adaptive RX/TX coalescing is an algorithm implemented by
  137.      * some drivers to improve latency under low packet rates and
  138.      * improve throughput under high packet rates.  Some drivers
  139.      * only implement one of RX or TX adaptive coalescing.  Anything
  140.      * not implemented by the driver causes these values to be
  141.      * silently ignored.
  142.      */
  143.     __u32    use_adaptive_rx_coalesce;
  144.     __u32    use_adaptive_tx_coalesce;
  145.  
  146.     /* When the packet rate (measured in packets per second)
  147.      * is below pkt_rate_low, the {rx,tx}_*_low parameters are
  148.      * used.
  149.      */
  150.     __u32    pkt_rate_low;
  151.     __u32    rx_coalesce_usecs_low;
  152.     __u32    rx_max_coalesced_frames_low;
  153.     __u32    tx_coalesce_usecs_low;
  154.     __u32    tx_max_coalesced_frames_low;
  155.  
  156.     /* When the packet rate is below pkt_rate_high but above
  157.      * pkt_rate_low (both measured in packets per second) the
  158.      * normal {rx,tx}_* coalescing parameters are used.
  159.      */
  160.  
  161.     /* When the packet rate is (measured in packets per second)
  162.      * is above pkt_rate_high, the {rx,tx}_*_high parameters are
  163.      * used.
  164.      */
  165.     __u32    pkt_rate_high;
  166.     __u32    rx_coalesce_usecs_high;
  167.     __u32    rx_max_coalesced_frames_high;
  168.     __u32    tx_coalesce_usecs_high;
  169.     __u32    tx_max_coalesced_frames_high;
  170.  
  171.     /* How often to do adaptive coalescing packet rate sampling,
  172.      * measured in seconds.  Must not be zero.
  173.      */
  174.     __u32    rate_sample_interval;
  175. };
  176.  
  177. /* for configuring RX/TX ring parameters */
  178. struct ethtool_ringparam {
  179.     __u32    cmd;    /* ETHTOOL_{G,S}RINGPARAM */
  180.  
  181.     /* Read only attributes.  These indicate the maximum number
  182.      * of pending RX/TX ring entries the driver will allow the
  183.      * user to set.
  184.      */
  185.     __u32    rx_max_pending;
  186.     __u32    rx_mini_max_pending;
  187.     __u32    rx_jumbo_max_pending;
  188.     __u32    tx_max_pending;
  189.  
  190.     /* Values changeable by the user.  The valid values are
  191.      * in the range 1 to the "*_max_pending" counterpart above.
  192.      */
  193.     __u32    rx_pending;
  194.     __u32    rx_mini_pending;
  195.     __u32    rx_jumbo_pending;
  196.     __u32    tx_pending;
  197. };
  198.  
  199. /* for configuring link flow control parameters */
  200. struct ethtool_pauseparam {
  201.     __u32    cmd;    /* ETHTOOL_{G,S}PAUSEPARAM */
  202.  
  203.     /* If the link is being auto-negotiated (via ethtool_cmd.autoneg
  204.      * being true) the user may set 'autonet' here non-zero to have the
  205.      * pause parameters be auto-negotiated too.  In such a case, the
  206.      * {rx,tx}_pause values below determine what capabilities are
  207.      * advertised.
  208.      *
  209.      * If 'autoneg' is zero or the link is not being auto-negotiated,
  210.      * then {rx,tx}_pause force the driver to use/not-use pause
  211.      * flow control.
  212.      */
  213.     __u32    autoneg;
  214.     __u32    rx_pause;
  215.     __u32    tx_pause;
  216. };
  217.  
  218. #define ETH_GSTRING_LEN        32
  219. enum ethtool_stringset {
  220.     ETH_SS_TEST        = 0,
  221.     ETH_SS_STATS,
  222. };
  223.  
  224. /* for passing string sets for data tagging */
  225. struct ethtool_gstrings {
  226.     __u32    cmd;        /* ETHTOOL_GSTRINGS */
  227.     __u32    string_set;    /* string set id e.c. ETH_SS_TEST, etc*/
  228.     __u32    len;        /* number of strings in the string set */
  229.     __u8    data[0];
  230. };
  231.  
  232. enum ethtool_test_flags {
  233.     ETH_TEST_FL_OFFLINE    = (1 << 0),    /* online / offline */
  234.     ETH_TEST_FL_FAILED    = (1 << 1),    /* test passed / failed */
  235. };
  236.  
  237. /* for requesting NIC test and getting results*/
  238. struct ethtool_test {
  239.     __u32    cmd;        /* ETHTOOL_TEST */
  240.     __u32    flags;        /* ETH_TEST_FL_xxx */
  241.     __u32    reserved;
  242.     __u32    len;        /* result length, in number of u64 elements */
  243.     __u64    data[0];
  244. };
  245.  
  246. /* for dumping NIC-specific statistics */
  247. struct ethtool_stats {
  248.     __u32    cmd;        /* ETHTOOL_GSTATS */
  249.     __u32    n_stats;    /* number of u64's being returned */
  250.     __u64    data[0];
  251. };
  252.  
  253. struct ethtool_perm_addr {
  254.     __u32    cmd;        /* ETHTOOL_GPERMADDR */
  255.     __u32    size;
  256.     __u8    data[0];
  257. };
  258.  
  259. #ifdef __KERNEL__
  260.  
  261. struct net_device;
  262.  
  263. /* Some generic methods drivers may use in their ethtool_ops */
  264. u32 ethtool_op_get_link(struct net_device *dev);
  265. u32 ethtool_op_get_tx_csum(struct net_device *dev);
  266. int ethtool_op_set_tx_csum(struct net_device *dev, u32 data);
  267. int ethtool_op_set_tx_hw_csum(struct net_device *dev, u32 data);
  268. u32 ethtool_op_get_sg(struct net_device *dev);
  269. int ethtool_op_set_sg(struct net_device *dev, u32 data);
  270. u32 ethtool_op_get_tso(struct net_device *dev);
  271. int ethtool_op_set_tso(struct net_device *dev, u32 data);
  272. int ethtool_op_get_perm_addr(struct net_device *dev, 
  273.                  struct ethtool_perm_addr *addr, u8 *data);
  274. u32 ethtool_op_get_ufo(struct net_device *dev);
  275. int ethtool_op_set_ufo(struct net_device *dev, u32 data);
  276.  
  277. /**
  278.  * ðtool_ops - Alter and report network device settings
  279.  * get_settings: Get device-specific settings
  280.  * set_settings: Set device-specific settings
  281.  * get_drvinfo: Report driver information
  282.  * get_regs: Get device registers
  283.  * get_wol: Report whether Wake-on-Lan is enabled
  284.  * set_wol: Turn Wake-on-Lan on or off
  285.  * get_msglevel: Report driver message level
  286.  * set_msglevel: Set driver message level
  287.  * nway_reset: Restart autonegotiation
  288.  * get_link: Get link status
  289.  * get_eeprom: Read data from the device EEPROM
  290.  * set_eeprom: Write data to the device EEPROM
  291.  * get_coalesce: Get interrupt coalescing parameters
  292.  * set_coalesce: Set interrupt coalescing parameters
  293.  * get_ringparam: Report ring sizes
  294.  * set_ringparam: Set ring sizes
  295.  * get_pauseparam: Report pause parameters
  296.  * set_pauseparam: Set pause paramters
  297.  * get_rx_csum: Report whether receive checksums are turned on or off
  298.  * set_rx_csum: Turn receive checksum on or off
  299.  * get_tx_csum: Report whether transmit checksums are turned on or off
  300.  * set_tx_csum: Turn transmit checksums on or off
  301.  * get_sg: Report whether scatter-gather is enabled
  302.  * set_sg: Turn scatter-gather on or off
  303.  * get_tso: Report whether TCP segmentation offload is enabled
  304.  * set_tso: Turn TCP segmentation offload on or off
  305.  * get_ufo: Report whether UDP fragmentation offload is enabled
  306.  * set_ufo: Turn UDP fragmentation offload on or off
  307.  * self_test: Run specified self-tests
  308.  * get_strings: Return a set of strings that describe the requested objects 
  309.  * phys_id: Identify the device
  310.  * get_stats: Return statistics about the device
  311.  * get_perm_addr: Gets the permanent hardware address
  312.  * 
  313.  * Description:
  314.  *
  315.  * get_settings:
  316.  *    @get_settings is passed an ðtool_cmd to fill in.  It returns
  317.  *    an negative errno or zero.
  318.  *
  319.  * set_settings:
  320.  *    @set_settings is passed an ðtool_cmd and should attempt to set
  321.  *    all the settings this device supports.  It may return an error value
  322.  *    if something goes wrong (otherwise 0).
  323.  *
  324.  * get_eeprom:
  325.  *    Should fill in the magic field.  Don't need to check len for zero
  326.  *    or wraparound.  Fill in the data argument with the eeprom values
  327.  *    from offset to offset + len.  Update len to the amount read.
  328.  *    Returns an error or zero.
  329.  *
  330.  * set_eeprom:
  331.  *    Should validate the magic field.  Don't need to check len for zero
  332.  *    or wraparound.  Update len to the amount written.  Returns an error
  333.  *    or zero.
  334.  */
  335. struct ethtool_ops {
  336.     int    (*get_settings)(struct net_device *, struct ethtool_cmd *);
  337.     int    (*set_settings)(struct net_device *, struct ethtool_cmd *);
  338.     void    (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
  339.     int    (*get_regs_len)(struct net_device *);
  340.     void    (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
  341.     void    (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
  342.     int    (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
  343.     u32    (*get_msglevel)(struct net_device *);
  344.     void    (*set_msglevel)(struct net_device *, u32);
  345.     int    (*nway_reset)(struct net_device *);
  346.     u32    (*get_link)(struct net_device *);
  347.     int    (*get_eeprom_len)(struct net_device *);
  348.     int    (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
  349.     int    (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
  350.     int    (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
  351.     int    (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
  352.     void    (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
  353.     int    (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
  354.     void    (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam*);
  355.     int    (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam*);
  356.     u32    (*get_rx_csum)(struct net_device *);
  357.     int    (*set_rx_csum)(struct net_device *, u32);
  358.     u32    (*get_tx_csum)(struct net_device *);
  359.     int    (*set_tx_csum)(struct net_device *, u32);
  360.     u32    (*get_sg)(struct net_device *);
  361.     int    (*set_sg)(struct net_device *, u32);
  362.     u32    (*get_tso)(struct net_device *);
  363.     int    (*set_tso)(struct net_device *, u32);
  364.     int    (*self_test_count)(struct net_device *);
  365.     void    (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
  366.     void    (*get_strings)(struct net_device *, u32 stringset, u8 *);
  367.     int    (*phys_id)(struct net_device *, u32);
  368.     int    (*get_stats_count)(struct net_device *);
  369.     void    (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
  370.     int    (*get_perm_addr)(struct net_device *, struct ethtool_perm_addr *, u8 *);
  371.     int    (*begin)(struct net_device *);
  372.     void    (*complete)(struct net_device *);
  373.     u32     (*get_ufo)(struct net_device *);
  374.     int     (*set_ufo)(struct net_device *, u32);
  375. };
  376. #endif /* __KERNEL__ */
  377.  
  378. /* CMDs currently supported */
  379. #define ETHTOOL_GSET        0x00000001 /* Get settings. */
  380. #define ETHTOOL_SSET        0x00000002 /* Set settings. */
  381. #define ETHTOOL_GDRVINFO    0x00000003 /* Get driver info. */
  382. #define ETHTOOL_GREGS        0x00000004 /* Get NIC registers. */
  383. #define ETHTOOL_GWOL        0x00000005 /* Get wake-on-lan options. */
  384. #define ETHTOOL_SWOL        0x00000006 /* Set wake-on-lan options. */
  385. #define ETHTOOL_GMSGLVL        0x00000007 /* Get driver message level */
  386. #define ETHTOOL_SMSGLVL        0x00000008 /* Set driver msg level. */
  387. #define ETHTOOL_NWAY_RST    0x00000009 /* Restart autonegotiation. */
  388. #define ETHTOOL_GLINK        0x0000000a /* Get link status (ethtool_value) */
  389. #define ETHTOOL_GEEPROM        0x0000000b /* Get EEPROM data */
  390. #define ETHTOOL_SEEPROM        0x0000000c /* Set EEPROM data. */
  391. #define ETHTOOL_GCOALESCE    0x0000000e /* Get coalesce config */
  392. #define ETHTOOL_SCOALESCE    0x0000000f /* Set coalesce config. */
  393. #define ETHTOOL_GRINGPARAM    0x00000010 /* Get ring parameters */
  394. #define ETHTOOL_SRINGPARAM    0x00000011 /* Set ring parameters. */
  395. #define ETHTOOL_GPAUSEPARAM    0x00000012 /* Get pause parameters */
  396. #define ETHTOOL_SPAUSEPARAM    0x00000013 /* Set pause parameters. */
  397. #define ETHTOOL_GRXCSUM        0x00000014 /* Get RX hw csum enable (ethtool_value) */
  398. #define ETHTOOL_SRXCSUM        0x00000015 /* Set RX hw csum enable (ethtool_value) */
  399. #define ETHTOOL_GTXCSUM        0x00000016 /* Get TX hw csum enable (ethtool_value) */
  400. #define ETHTOOL_STXCSUM        0x00000017 /* Set TX hw csum enable (ethtool_value) */
  401. #define ETHTOOL_GSG        0x00000018 /* Get scatter-gather enable
  402.                         * (ethtool_value) */
  403. #define ETHTOOL_SSG        0x00000019 /* Set scatter-gather enable
  404.                         * (ethtool_value). */
  405. #define ETHTOOL_TEST        0x0000001a /* execute NIC self-test. */
  406. #define ETHTOOL_GSTRINGS    0x0000001b /* get specified string set */
  407. #define ETHTOOL_PHYS_ID        0x0000001c /* identify the NIC */
  408. #define ETHTOOL_GSTATS        0x0000001d /* get NIC-specific statistics */
  409. #define ETHTOOL_GTSO        0x0000001e /* Get TSO enable (ethtool_value) */
  410. #define ETHTOOL_STSO        0x0000001f /* Set TSO enable (ethtool_value) */
  411. #define ETHTOOL_GPERMADDR    0x00000020 /* Get permanent hardware address */
  412. #define ETHTOOL_GUFO        0x00000021 /* Get UFO enable (ethtool_value) */
  413. #define ETHTOOL_SUFO        0x00000022 /* Set UFO enable (ethtool_value) */
  414.  
  415. /* compatibility with older code */
  416. #define SPARC_ETH_GSET        ETHTOOL_GSET
  417. #define SPARC_ETH_SSET        ETHTOOL_SSET
  418.  
  419. /* Indicates what features are supported by the interface. */
  420. #define SUPPORTED_10baseT_Half        (1 << 0)
  421. #define SUPPORTED_10baseT_Full        (1 << 1)
  422. #define SUPPORTED_100baseT_Half        (1 << 2)
  423. #define SUPPORTED_100baseT_Full        (1 << 3)
  424. #define SUPPORTED_1000baseT_Half    (1 << 4)
  425. #define SUPPORTED_1000baseT_Full    (1 << 5)
  426. #define SUPPORTED_Autoneg        (1 << 6)
  427. #define SUPPORTED_TP            (1 << 7)
  428. #define SUPPORTED_AUI            (1 << 8)
  429. #define SUPPORTED_MII            (1 << 9)
  430. #define SUPPORTED_FIBRE            (1 << 10)
  431. #define SUPPORTED_BNC            (1 << 11)
  432. #define SUPPORTED_10000baseT_Full    (1 << 12)
  433. #define SUPPORTED_Pause            (1 << 13)
  434. #define SUPPORTED_Asym_Pause        (1 << 14)
  435.  
  436. /* Indicates what features are advertised by the interface. */
  437. #define ADVERTISED_10baseT_Half        (1 << 0)
  438. #define ADVERTISED_10baseT_Full        (1 << 1)
  439. #define ADVERTISED_100baseT_Half    (1 << 2)
  440. #define ADVERTISED_100baseT_Full    (1 << 3)
  441. #define ADVERTISED_1000baseT_Half    (1 << 4)
  442. #define ADVERTISED_1000baseT_Full    (1 << 5)
  443. #define ADVERTISED_Autoneg        (1 << 6)
  444. #define ADVERTISED_TP            (1 << 7)
  445. #define ADVERTISED_AUI            (1 << 8)
  446. #define ADVERTISED_MII            (1 << 9)
  447. #define ADVERTISED_FIBRE        (1 << 10)
  448. #define ADVERTISED_BNC            (1 << 11)
  449. #define ADVERTISED_10000baseT_Full    (1 << 12)
  450. #define ADVERTISED_Pause        (1 << 13)
  451. #define ADVERTISED_Asym_Pause        (1 << 14)
  452.  
  453. /* The following are all involved in forcing a particular link
  454.  * mode for the device for setting things.  When getting the
  455.  * devices settings, these indicate the current mode and whether
  456.  * it was foced up into this mode or autonegotiated.
  457.  */
  458.  
  459. /* The forced speed, 10Mb, 100Mb, gigabit, 2.5Gb, 10GbE. */
  460. #define SPEED_10        10
  461. #define SPEED_100        100
  462. #define SPEED_1000        1000
  463. #define SPEED_2500        2500
  464. #define SPEED_10000        10000
  465.  
  466. /* Duplex, half or full. */
  467. #define DUPLEX_HALF        0x00
  468. #define DUPLEX_FULL        0x01
  469.  
  470. /* Which connector port. */
  471. #define PORT_TP            0x00
  472. #define PORT_AUI        0x01
  473. #define PORT_MII        0x02
  474. #define PORT_FIBRE        0x03
  475. #define PORT_BNC        0x04
  476.  
  477. /* Which transceiver to use. */
  478. #define XCVR_INTERNAL        0x00
  479. #define XCVR_EXTERNAL        0x01
  480. #define XCVR_DUMMY1        0x02
  481. #define XCVR_DUMMY2        0x03
  482. #define XCVR_DUMMY3        0x04
  483.  
  484. /* Enable or disable autonegotiation.  If this is set to enable,
  485.  * the forced link modes above are completely ignored.
  486.  */
  487. #define AUTONEG_DISABLE        0x00
  488. #define AUTONEG_ENABLE        0x01
  489.  
  490. /* Wake-On-Lan options. */
  491. #define WAKE_PHY        (1 << 0)
  492. #define WAKE_UCAST        (1 << 1)
  493. #define WAKE_MCAST        (1 << 2)
  494. #define WAKE_BCAST        (1 << 3)
  495. #define WAKE_ARP        (1 << 4)
  496. #define WAKE_MAGIC        (1 << 5)
  497. #define WAKE_MAGICSECURE    (1 << 6) /* only meaningful if WAKE_MAGIC */
  498.  
  499. #endif /* _LINUX_ETHTOOL_H */
  500.