ETHTOOL_GSET IOCTL on GigE links

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Not sure if this is one should go to netdev or not, but giving this list
a try first.

It seems to me that there is something missing from the ETHTOOL_GSET
interface when it comes to GigE ethernet links, but maybe I am missing
something. The structure associated with this IOCTL is copied below from
ethtool.h:

struct ethtool_cmd {
    u32 cmd;
    u32 supported;  /* Features this interface supports */
    u32 advertising;    /* Features this interface advertises */
    u16 speed;      /* The forced speed, 10Mb, 100Mb, gigabit */
    u8  duplex;     /* Duplex, half or full */
    u8  port;       /* Which connector port */
    u8  phy_address;
    u8  transceiver;    /* Which transceiver to use */
    u8  autoneg;    /* Enable or disable autonegotiation */
    u32 maxtxpkt;   /* Tx pkts before generating tx int */
    u32 maxrxpkt;   /* Rx pkts before generating rx int */
    u32 reserved[4];
};

Looking at different drivers, it seems like the supported field is
intended to indicate which speeds and duplexities the device is capable
of autonegotiating (I understand there's other information in there too,
like what kind of physical interfaces are supported, but I am talking
about the speed and duplex here).

But how are you supposed to figure out what speeds and duplexities can
be forced (i.e. not autonegotiated) on the interface from this
structure?

With 10/100 Mbps links it wasn't such an issue since the devices tend to
support the same forced speeds and duplexities as they are capable of
negotiating, but with GigE links that's not always the case, at least
not according to what I've read. For instance, the following doc from
Sun http://www.sun.com/blueprints/0704/817-7526.pdf says that IEEE
802.3ab says you can't force 1000Base-T over copper media (see page 4),
whereas some other physical media allow GigE to run without
autonegotiation (there's apparently this "serdes" interface that allows
it, for instance).

Seems like there should be another field named something like
supported_forced to indicate what can be forced on the interface. Either
that or some more SUPPORTED_* bits to indicate supported forced modes.

Comments?

Thanks,

Jeff Haran
Brocade
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux