Why is ethtool not showing me all the properties for a NIC?

CentOS 5.8 | VMWare ESX 5.1

When I run ethtool eth0 I see the following:

[root@foo ~]# ethtool eth0
Settings for eth0:
         Current message level: 0x00000007 (7)
         Link detected: yes

Is there any way to get the rest of the details? Particularly speed and duplex? I'm used to ethtool output being more verbose. For example:

# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: d
        Wake-on: d
        Link detected: yes

I'm wondering if this is related to running on a VMWare platform? Current adapter type in ESX is "Flexible" and VMWare tools is not installed on the server.


Solution 1:

I would imagine it doesn't report any of the PHY settings because there aren't any, there is no link mode, not autoneg, no fixed speed, no port or cabling type, no transceiver, etc. when using the paravirtual driver

Solution 2:

What 'ethtool' reports mostly depends on what the network device driver can provide. Your virtual machine probably emulates a very primitive network adapter and not much data is available.

On the other hand, in a virtual machine the link speed or duplex mode is usually meaningless, as the network interface is most often just a virtual link to the host system, with no actual physical Ethernet layer. The speed is as high as the CPU and memory can handle (or as low, as the connection rate limit is configured), cabling type does no exist, as there is no cable, etc. This virtual interface is bridged or routed to the actual physical network by the host system and only on the host system the physical port parameters can be obtained.

Only in some rare scenarios the virtual domain would have direct access to the network interface hardware – then you would get all what a driver for this hardware provides. I doubt it is the case.