diff options
| -rw-r--r-- | drivers/net/bonding/bond_3ad.c | 3 | ||||
| -rw-r--r-- | drivers/net/bonding/bond_alb.c | 3 | ||||
| -rw-r--r-- | drivers/net/bonding/bond_main.c | 13 | 
3 files changed, 12 insertions, 7 deletions
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index a047eb973e3..47b928ed08f 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c @@ -2168,7 +2168,8 @@ void bond_3ad_state_machine_handler(struct work_struct *work)  	}  re_arm: -	queue_delayed_work(bond->wq, &bond->ad_work, ad_delta_in_ticks); +	if (!bond->kill_timers) +		queue_delayed_work(bond->wq, &bond->ad_work, ad_delta_in_ticks);  out:  	read_unlock(&bond->lock);  } diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index 7f8b20a34ee..d4fbd2e6261 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c @@ -1440,7 +1440,8 @@ void bond_alb_monitor(struct work_struct *work)  	}  re_arm: -	queue_delayed_work(bond->wq, &bond->alb_work, alb_delta_in_ticks); +	if (!bond->kill_timers) +		queue_delayed_work(bond->wq, &bond->alb_work, alb_delta_in_ticks);  out:  	read_unlock(&bond->lock);  } diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 43f2ea54108..6d79b78cfc7 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -777,6 +777,9 @@ static void bond_resend_igmp_join_requests(struct bonding *bond)  	read_lock(&bond->lock); +	if (bond->kill_timers) +		goto out; +  	/* rejoin all groups on bond device */  	__bond_resend_igmp_join_requests(bond->dev); @@ -790,9 +793,9 @@ static void bond_resend_igmp_join_requests(struct bonding *bond)  			__bond_resend_igmp_join_requests(vlan_dev);  	} -	if (--bond->igmp_retrans > 0) +	if ((--bond->igmp_retrans > 0) && !bond->kill_timers)  		queue_delayed_work(bond->wq, &bond->mcast_work, HZ/5); - +out:  	read_unlock(&bond->lock);  } @@ -2538,7 +2541,7 @@ void bond_mii_monitor(struct work_struct *work)  	}  re_arm: -	if (bond->params.miimon) +	if (bond->params.miimon && !bond->kill_timers)  		queue_delayed_work(bond->wq, &bond->mii_work,  				   msecs_to_jiffies(bond->params.miimon));  out: @@ -2886,7 +2889,7 @@ void bond_loadbalance_arp_mon(struct work_struct *work)  	}  re_arm: -	if (bond->params.arp_interval) +	if (bond->params.arp_interval && !bond->kill_timers)  		queue_delayed_work(bond->wq, &bond->arp_work, delta_in_ticks);  out:  	read_unlock(&bond->lock); @@ -3154,7 +3157,7 @@ void bond_activebackup_arp_mon(struct work_struct *work)  	bond_ab_arp_probe(bond);  re_arm: -	if (bond->params.arp_interval) +	if (bond->params.arp_interval && !bond->kill_timers)  		queue_delayed_work(bond->wq, &bond->arp_work, delta_in_ticks);  out:  	read_unlock(&bond->lock);  |