]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
tg3: Fix race for querying speed/duplex
authorThomas Bogendoerfer <tbogendoerfer@suse.de>
Wed, 25 Mar 2026 11:20:53 +0000 (12:20 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 27 Mar 2026 12:06:38 +0000 (12:06 +0000)
When driver signals carrier up via netif_carrier_on() its internal
link_up state isn't updated immediately. This leads to inconsistent
speed/duplex in /proc/net/bonding/bondX where the speed and duplex
is shown as unknown while ethtool shows correct values. Fix this by
using netif_carrier_ok() for link checking in get_ksettings function.

Fixes: 84421b99cedc ("tg3: Update link_up flag for phylib devices")
Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/tg3.c

index 21a5dd342724423afd90d92c3beec18634767f10..73a4b569b03e315f0593e4bd1701db1ac7fe4ec9 100644 (file)
@@ -12299,7 +12299,7 @@ static int tg3_get_link_ksettings(struct net_device *dev,
        ethtool_convert_legacy_u32_to_link_mode(cmd->link_modes.advertising,
                                                advertising);
 
-       if (netif_running(dev) && tp->link_up) {
+       if (netif_running(dev) && netif_carrier_ok(dev)) {
                cmd->base.speed = tp->link_config.active_speed;
                cmd->base.duplex = tp->link_config.active_duplex;
                ethtool_convert_legacy_u32_to_link_mode(