All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Williams <dcbw@redhat.com>
To: Ding Tianhong <dingtianhong@huawei.com>
Cc: Jay Vosburgh <fubar@us.ibm.com>,
	Andy Gospodarek <andy@greyhouse.net>,
	"David S. Miller" <davem@davemloft.net>,
	Nikolay Aleksandrov <nikolay@redhat.com>,
	Veaceslav Falico <vfalico@redhat.com>,
	Netdev <netdev@vger.kernel.org>
Subject: Re: [PATCH net RESEND] bonding: don't change to 802.3ad mode while ARP monitoring is running
Date: Mon, 18 Nov 2013 11:44:42 -0600	[thread overview]
Message-ID: <1384796682.4774.26.camel@dcbw.foobar.com> (raw)
In-Reply-To: <528710F7.7050207@huawei.com>

On Sat, 2013-11-16 at 14:30 +0800, Ding Tianhong wrote:
> Because the ARP monitoring is not support for 802.3ad, but I still
> could change the mode to 802.3ad from ab mode while ARP monitoring
> is running, it is incorrect.
> 
> So add a check for 802.3ad in bonding_store_mode to fix the problem,
> and make a new macro BOND_NO_USES_ARP() to simplify the code.

Instead of failing, couldn't the code stop ARP monitoring and allow the
mode change?  This is similar to setting miimon, which disables ARP
monitoring, or setting ARP monitoring, which disables miimon.

	if (new_value && bond->params.arp_interval) {
		pr_info("%s: MII monitoring cannot be used with ARP monitoring. Disabling ARP monitoring...\n",
			bond->dev->name);
		bond->params.arp_interval = 0;
		if (bond->params.arp_validate)
			bond->params.arp_validate = BOND_ARP_VALIDATE_NONE;
	}

Bond mode is the most important bond option, so it seems like it should
override any of the other sub-options.  I know the code doesn't do this
now, but maybe instead of the patch you propose, it would be nicer to
allow the mode change instead?

Dan

> Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
> ---
>  drivers/net/bonding/bond_options.c | 2 +-
>  drivers/net/bonding/bonding.h      | 4 ++++
>  2 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c
> index 9a5223c..abb4218 100644
> --- a/drivers/net/bonding/bond_options.c
> +++ b/drivers/net/bonding/bond_options.c
> @@ -45,7 +45,7 @@ int bond_option_mode_set(struct bonding *bond, int mode)
>  		return -EPERM;
>  	}
>  
> -	if (BOND_MODE_IS_LB(mode) && bond->params.arp_interval) {
> +	if (BOND_NO_USES_ARP(mode) && bond->params.arp_interval) {
>  		pr_err("%s: %s mode is incompatible with arp monitoring.\n",
>  		       bond->dev->name, bond_mode_tbl[mode].modename);
>  		return -EINVAL;
> diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
> index 046a605..e2c11cb 100644
> --- a/drivers/net/bonding/bonding.h
> +++ b/drivers/net/bonding/bonding.h
> @@ -63,6 +63,10 @@
>  		(((mode) == BOND_MODE_TLB) ||	\
>  		 ((mode) == BOND_MODE_ALB))
>  
> +#define BOND_NO_USES_ARP(mode)				\
> +		(((mode) == BOND_MODE_8023AD)	||	\
> +		 ((mode) == BOND_MODE_TLB)	||	\
> +		 ((mode) == BOND_MODE_ALB))
>  /*
>   * Less bad way to call ioctl from within the kernel; this needs to be
>   * done some other way to get the call out of interrupt context.

  reply	other threads:[~2013-11-18 17:44 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-16  6:30 [PATCH net RESEND] bonding: don't change to 802.3ad mode while ARP monitoring is running Ding Tianhong
2013-11-18 17:44 ` Dan Williams [this message]
2013-11-18 20:48   ` David Miller
2013-11-18 22:50     ` Dan Williams
2013-11-19  1:48       ` Ding Tianhong
2013-11-19  2:31       ` Andy Gospodarek
2013-11-19  3:02         ` Ding Tianhong
2013-11-22  2:12         ` [PATCH net v2] bonding: disable arp and enable mii monitoring when bond change to no uses arp mode Ding Tianhong
2013-11-22 13:55           ` Nikolay Aleksandrov
2013-11-22 14:12             ` Ding Tianhong
2013-11-22 13:36         ` [PATCH net RESEND] bonding: don't change to 802.3ad mode while ARP monitoring is running Nikolay Aleksandrov
2013-11-22 14:28         ` [PATCH net v3] bonding: disable arp and enable mii monitoring when bond change to no uses arp mode Ding Tianhong
2013-11-22 19:07           ` Dan Williams
2013-11-22 20:01           ` Nikolay Aleksandrov
2013-11-28 23:20           ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1384796682.4774.26.camel@dcbw.foobar.com \
    --to=dcbw@redhat.com \
    --cc=andy@greyhouse.net \
    --cc=davem@davemloft.net \
    --cc=dingtianhong@huawei.com \
    --cc=fubar@us.ibm.com \
    --cc=netdev@vger.kernel.org \
    --cc=nikolay@redhat.com \
    --cc=vfalico@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.