From: Ding Tianhong <dingtianhong@huawei.com>
To: Nikolay Aleksandrov <nikolay@redhat.com>,
Andy Gospodarek <andy@greyhouse.net>,
Dan Williams <dcbw@redhat.com>,
David Miller <davem@davemloft.net>
Cc: <fubar@us.ibm.com>, <vfalico@redhat.com>, <netdev@vger.kernel.org>
Subject: Re: [PATCH net v2] bonding: disable arp and enable mii monitoring when bond change to no uses arp mode
Date: Fri, 22 Nov 2013 22:12:43 +0800 [thread overview]
Message-ID: <528F665B.30307@huawei.com> (raw)
In-Reply-To: <528F6247.2080007@redhat.com>
On 2013/11/22 21:55, Nikolay Aleksandrov wrote:
> On 11/22/2013 03:12 AM, 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.
>>
>> v2: according to the Dan Williams's suggestion, bond mode is the most
>> important bond option, it should override any of the other sub-options.
>> So when the mode is changed, the conficting values should be cleared
>> or reset, otherwise the user has to duplicate more operations to modify
>> the logic. I disable the arp and enable mii monitoring when the bond mode
>> is changed to AB, TB and 8023AD if the arp interval is true.
>>
>> Suggested-by: Dan Williams <dcbw@redhat.com>
>> Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
>> ---
>> drivers/net/bonding/bond_options.c | 13 +++++++++----
>> drivers/net/bonding/bonding.h | 5 +++++
>> 2 files changed, 14 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c
>> index 9a5223c..04364f7a 100644
>> --- a/drivers/net/bonding/bond_options.c
>> +++ b/drivers/net/bonding/bond_options.c
>> @@ -45,10 +45,15 @@ int bond_option_mode_set(struct bonding *bond, int mode)
>> return -EPERM;
>> }
>>
>> - if (BOND_MODE_IS_LB(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;
>> + if (BOND_NO_USES_ARP(mode) && bond->params.arp_interval) {
>> + pr_info("%s: %s mode is incompatible with arp monitoring, start mii monitoring\n",
>> + bond->dev->name, bond_mode_tbl[mode].modename);
>> + /* disable arp monitoring */
>> + bond->params.arp_interval = 0;
>> + /* set miimon to default value */
>> + bond->params.miimon = 100;
>> + pr_info("%s: Setting MII monitoring interval to %d.\n",
>> + bond->dev->name, bond->params.miimon);
>> }
>>
> Maybe define the "default" miimon value somewhere ? A value of 100 for miimon is
> used repeatedly in bond_check_params() as well, it'd be nice to give it a name,
> e.g. I had to grep around to see why you chose 100 to be that value.
>
yes, I get it from bond_check_params(), I think it is time to give it a new name, MIIMON_DEFAULT_VALUE = 100.
>> /* don't cache arp_validate between modes */
>> diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
>> index ca31286..a310fb5 100644
>> --- a/drivers/net/bonding/bonding.h
>> +++ b/drivers/net/bonding/bonding.h
>> @@ -55,6 +55,11 @@
>> ((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))
>> +
>> #define TX_QUEUE_OVERRIDE(mode) \
>> (((mode) == BOND_MODE_ACTIVEBACKUP) || \
>> ((mode) == BOND_MODE_ROUNDROBIN))
>>
> One small note, you can save a few lines in bond_sysfs.c if you switch
> the check in bonding_store_arp_interval() to the new macro BOND_NO_USES_ARP()
> as it's identical.
>
> Cheers,
> Nik
good idea.
Regards.
Ding
>
>
> .
>
next prev parent reply other threads:[~2013-11-22 14:13 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
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 [this message]
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=528F665B.30307@huawei.com \
--to=dingtianhong@huawei.com \
--cc=andy@greyhouse.net \
--cc=davem@davemloft.net \
--cc=dcbw@redhat.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.