> +speeds_get()
> +{
> +     local dev=$1; shift
> +     local with_mode=$1; shift
> +
> +     local speeds_str=$(ethtool "$dev" | \
> +             # Snip everything before the link modes section.
> +             sed -n '/Supported link modes:/,$p' | \
> +             # Quit processing the rest at the start of the next section.
> +             # When checking, skip the header of this section (hence the 2,).
> +             sed -n '2,${/^[\t][^ \t]/q};p' | \
> +             # Drop the section header of the current section.
> +             cut -d':' -f2)

ethtool gives you two lists of link modes:

$ sudo ethtool eth17
Settings for eth17:
         Supported ports: [ TP ]
         Supported link modes:   10baseT/Half 10baseT/Full 
                                 100baseT/Half 100baseT/Full 
                                 1000baseT/Full 
         Supported pause frame use: No
         Supports auto-negotiation: Yes
         Supported FEC modes: Not reported
         Advertised link modes:  10baseT/Half 10baseT/Full 
                                 100baseT/Half 100baseT/Full 
                                 1000baseT/Full

and if auto-neg has completed, there is potentially a third list, what
the peer is advertising.

Since this test is all about auto-neg, you should be using Advertised
link modes, not Supported link modes. There can be supported link
modes which you cannot advertise.

   Andrew

Reply via email to