Subject: Re: [PATCH net-next] net: link_watch: mark bonding link events urgent

From: Jiri Pirko <[email-masked]>
Date: Mon, 22 Jan 2018 09:13:26 +0100

Mon, Jan 22, 2018 at 07:07:53AM CET, [email-masked] wrote:
>From: Roopa Prabhu <[email-masked]>
>
>It takes 1sec for bond link down notification to hit user-space
>when all slaves of the bond go down. 1sec is too long for
>protocol daemons in user-space relying on bond link notification
>to failover/recover (eg: multichassis lag implementations in user-space).
>Since the link event code already marks team device port link events
> urgent, this patch does the same for bonding link events.
>
>Signed-off-by: Roopa Prabhu <[email-masked]>
>---
> net/core/link_watch.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/net/core/link_watch.c b/net/core/link_watch.c
>index 9828616..63bb2ad 100644
>--- a/net/core/link_watch.c
>+++ b/net/core/link_watch.c
>@@ -92,7 +92,7 @@ static bool linkwatch_urgent_event(struct net_device *dev)
> 	if (dev->ifindex != dev_get_iflink(dev))
> 		return true;
> 
>-	if (dev->priv_flags & IFF_TEAM_PORT)
>+	if (dev->priv_flags & (IFF_TEAM_PORT | IFF_BONDING))

Don't you want to do that for bonding slaves? IFF_BONDING is set for
both master and slave. netif_is_bond_slave() helper checks that. In fact
netif_is_team_port() should be used here instead of checking IFF_TEAM_PORT
directly. And then you can use netif_is_lag_port() to check them both.

> 		return true;
> 
> 	return netif_carrier_ok(dev) &&	qdisc_tx_changing(dev);
>-- 
>2.1.4
>