diff --git a/net/core/link_watch.c b/net/core/link_watch.c index 357bd4ee4baa324f1402ae3d7a44c37ce4d1e46e..c3519c6d1b169a5c895efd781c7958218d7f8dc6 100644 --- a/net/core/link_watch.c +++ b/net/core/link_watch.c @@ -78,8 +78,13 @@ static void rfc2863_policy(struct net_device *dev) static bool linkwatch_urgent_event(struct net_device *dev) { - return netif_running(dev) && netif_carrier_ok(dev) && - qdisc_tx_changing(dev); + if (!netif_running(dev)) + return false; + + if (dev->ifindex != dev->iflink) + return true; + + return netif_carrier_ok(dev) && qdisc_tx_changing(dev); }