Subject: Re: [PATCH linux-2.6] bonding: two small fixes for IPoIB support

From: Moni Shoua <[email-masked]>
Date: Tue, 16 Oct 2007 09:56:54 +0200

Jay Vosburgh wrote:
> 	Two small fixes to IPoIB support for bonding:
> 
> 	1- copy header_ops from slave to bonding for IPoIB slaves
> 	2- move release and destroy logic to UNREGISTER from GOING_DOWN
> 	   notifier to avoid double release
> 
> 	Set bonding to version 3.2.1.
> 
> Signed-off-by: Moni Shoua <monis at voltaire.com>
> Signed-off-by: Jay Vosburgh <[email-masked]>
> 
> ---
>  drivers/net/bonding/bond_main.c |   11 +++++------
>  drivers/net/bonding/bonding.h   |    4 ++--
>  2 files changed, 7 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
> index db80f24..6f85cc3 100644
> --- a/drivers/net/bonding/bond_main.c
> +++ b/drivers/net/bonding/bond_main.c
> @@ -1263,6 +1263,7 @@ static void bond_setup_by_slave(struct net_device *bond_dev,
>  	struct bonding *bond = bond_dev->priv;
>  
>  	bond_dev->neigh_setup           = slave_dev->neigh_setup;
> +	bond_dev->header_ops		= slave_dev->header_ops;
>  
>  	bond_dev->type		    = slave_dev->type;
>  	bond_dev->hard_header_len   = slave_dev->hard_header_len;
> @@ -3351,7 +3352,10 @@ static int bond_slave_netdev_event(unsigned long event, struct net_device *slave
>  	switch (event) {
>  	case NETDEV_UNREGISTER:
>  		if (bond_dev) {
> -			bond_release(bond_dev, slave_dev);
> +			if (bond->setup_by_slave)
> +				bond_release_and_destroy(bond_dev, slave_dev);
> +			else
> +				bond_release(bond_dev, slave_dev);
>  		}
>  		break;
>  	case NETDEV_CHANGE:
> @@ -3366,11 +3370,6 @@ static int bond_slave_netdev_event(unsigned long event, struct net_device *slave
>  		 * ... Or is it this?
>  		 */
>  		break;
> -	case NETDEV_GOING_DOWN:
> -		dprintk("slave %s is going down\n", slave_dev->name);
> -		if (bond->setup_by_slave)
> -			bond_release_and_destroy(bond_dev, slave_dev);
> -		break;
>  	case NETDEV_CHANGEMTU:
>  		/*
>  		 * TODO: Should slaves be allowed to
> diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
> index a8bbd56..b818060 100644
> --- a/drivers/net/bonding/bonding.h
> +++ b/drivers/net/bonding/bonding.h
> @@ -22,8 +22,8 @@
>  #include "bond_3ad.h"
>  #include "bond_alb.h"
>  
> -#define DRV_VERSION	"3.2.0"
> -#define DRV_RELDATE	"September 13, 2007"
> +#define DRV_VERSION	"3.2.1"
> +#define DRV_RELDATE	"October 15, 2007"
>  #define DRV_NAME	"bonding"
>  #define DRV_DESCRIPTION	"Ethernet Channel Bonding Driver"
>  
Jay,
Thanks for this work.

Jeff,
Thanks for applying.
I noticed that this patch isn't applied. It includes important fixes. 
Can you please apply it also?

	MoniS