Subject: Re: [PATCH net-next 1/3] bonding: Set the correct value to fail_over_mac at enslavement

From: Nikolay Aleksandrov <[email-masked]>
Date: Wed, 22 Jan 2014 15:20:43 +0100

On 01/22/2014 10:22 AM, Ding Tianhong wrote:
> If the new slave don't support setting the MAC address, there are
> two ways to handle this situation:
> 
> 1). If the new slave is the first slave, set bond to the new slave's
>     MAC address, if the mode is active-backup, set fail_over_mac to
>     active, otherwise set fail_over_mac to none.
> 2). If the new slave is not the first slave and the fail_over_mac is
>     active, it means that the slave could work normally in active-backup
>     mode, otherwise if the fail_over_mac is none, the slave could not
>     work normally for no active-backup mode, so bond could not ensalve
>     the new dev.
> 
> Cc: Jay Vosburgh <[email-masked]>
> Cc: Veaceslav Falico <[email-masked]>
> Cc: Andy Gospodarek <[email-masked]>
> Signed-off-by: Ding Tianhong <[email-masked]>
> ---
>  drivers/net/bonding/bond_main.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
> index 3220b48..598f100 100644
> --- a/drivers/net/bonding/bond_main.c
> +++ b/drivers/net/bonding/bond_main.c
> @@ -1334,9 +1334,17 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
>  
>  	if (slave_ops->ndo_set_mac_address == NULL) {
>  		if (!bond_has_slaves(bond)) {
> -			pr_warning("%s: Warning: The first slave device specified does not support setting the MAC address. Setting fail_over_mac to active.",
> +			pr_warning("%s: Warning: The first slave device specified does not support setting the MAC address.\n",
>  				   bond_dev->name);
> -			bond->params.fail_over_mac = BOND_FOM_ACTIVE;
> +			if (bond->params.mode == BOND_MODE_ACTIVEBACKUP) {
> +				bond->params.fail_over_mac = BOND_FOM_ACTIVE;
> +				pr_warning("%s: Setting fail_over_mac to active for active-backup mode.\n",
> +					   bond_dev->name);
> +			} else {
> +				bond->params.fail_over_mac = BOND_FOM_NONE;
> +				pr_warning("%s: Setting fail_over_mac to none for no active-backup modes",
At least make the warnings consistent: "... for no active-backup mode.\n".
Also you might consider switching to pr_warn.

> +					   bond_dev->name);
> +			}
>  		} else if (bond->params.fail_over_mac != BOND_FOM_ACTIVE) {
>  			pr_err("%s: Error: The slave device specified does not support setting the MAC address, but fail_over_mac is not set to active.\n",
>  			       bond_dev->name);
>