• Andy Gospodarek's avatar
    [TG3]: Fix ethtool autonegotiate flags. · 405d8e5c
    Andy Gospodarek authored
    I recently noticed that when calling:
    
    # ethtool -s eth0 autoneg on
    
    on a 5722 (though I'm sure it's not specific to that card) that
    subsequent checks of the cards status looked like this:
    
    # ethtool eth0
    Settings for eth0:
            Supported ports: [ MII ]
            Supported link modes:   10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Half 1000baseT/Full
            Supports auto-negotiation: Yes
            Advertised link modes:  10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Half 1000baseT/Full
            Advertised auto-negotiation: No        <---- This seems odd?!?
            Speed: 1000Mb/s
            Duplex: Full
            Port: Twisted Pair
            PHYAD: 1
            Transceiver: internal
            Auto-negotiation: on
            Supports Wake-on: g
            Wake-on: d
            Current message level: 0x000000ff (255)
            Link detected: yes
    
    I noticed that the following commit:
    
    commit 3600d918
    Author: Michael Chan <mchan@broadcom.com>
    Date:   Thu Dec 7 00:21:48 2006 -0800
    
        [TG3]: Allow partial speed advertisement.
    
        Honor the advertisement bitmask from ethtool.  We used to always
        advertise the full capability when autoneg was set to on.
    
    changed things around so that ethtool speed settings were strictly
    followed.  Unfortunately ethtool doesn't seem to set ADVERTISED_Autoneg
    in the advertising field (and maybe it shouldn't have to).  I'd vote
    that it should be fixed there, but it should also be added here just in
    case someone using ethtool ioctls in their own application gets what
    they want.
    
    Adding that flag in tg3_set_settings seemed like the most logical place
    since the driver works fine on boot.  This is just an issue when
    re-enabling autonegotiation, so we should probably nip it there.
    Signed-off-by: default avatarAndy Gospodarek <andy@greyhouse.net>
    Acked-by: default avatarMichael Chan <mchan@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    405d8e5c
tg3.c 352 KB