DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@intel.com>
To: "Wei Hu (Xavier)" <huwei013@chinasoftinc.com>,
	Chas Williams <3chas3@gmail.com>
Cc: dev@dpdk.org, Thomas Monjalon <thomas@monjalon.net>,
	David Marchand <david.marchand@redhat.com>
Subject: Re: [dpdk-dev] [PATCH v2 2/2] net/bonding: fix MAC address when one port resets
Date: Fri, 15 May 2020 11:46:30 +0100
Message-ID: <750fc71a-e4fc-d5a7-9bca-551d7ed4b32c@intel.com> (raw)
In-Reply-To: <24fd0081-edf3-326c-2a14-58c246bd24f7@chinasoftinc.com>

On 5/15/2020 4:11 AM, Wei Hu (Xavier) wrote:
> Hi, Ferruh Yigit & Chas Williams
>    Could you please give any suggestion?

Hi Xavier,

Unfortunately we are missing reviews in bonding patches. There are a few more
waiting other than this one.

If you are already working on it and have enough information about the code,
what do you think adding you as the additional maintainer?

Thanks,
ferruh

>    Thanks.
> 
>    Best Regards
> Xavier
> 
> On 2020/4/17 16:58, Wei Hu (Xavier) wrote:
>> Hi, Chas Williams
>>     Thanks for your comments on Patch V1. now we have sent Patch V2.
>>     Could you please give some suggestion on them?
>>     Thanks.
>>
>>     Best Regards
>> Xavier
>>
>> On 2020/4/17 16:19, Wei Hu (Xavier) wrote:
>>> From: "Wei Hu (Xavier)" <xavier.huwei@huawei.com>
>>>
>>> Currently, based on a active-backup bond device, in the following 2 
>>> cases:
>>> 1) The primary port resets. The link status of the primary port changes
>>>     from up to down.
>>> 2) When switching the active port, one slave port resets at the same 
>>> time.
>>> one slave port changes to the primary port, but the new primary port's 
>>> MAC
>>> address probably cannot change to the bond device's MAC address. And we
>>> can't continue receive packets whose destination MAC addresses are the 
>>> same
>>> as the bond devices's MAC address.
>>>
>>> The current bonding PMD driver call mac_address_slaves_update function to
>>> modify the MAC address of all slaves devices. In 
>>> mac_address_slaves_update
>>> function, the rte_eth_dev_default_mac_addr_set API function is called to
>>> set the MAC address of the slave devices in turn in the for loop 
>>> statement.
>>>
>>> When one port reset, calling rte_eth_dev_default_mac_addr_set API fails
>>> because the firmware will not respond to the commands from the driver,
>>> and exit the loop, so other slave devices cannot continue to update the
>>> MAC address.
>>>
>>> This patch fixes the issue by avoid exiting the loop when calling
>>> rte_eth_dev_default_mac_addr_set fails.
>>>
>>> Fixes: 2efb58cbab6e ("bond: new link bonding library")
>>> Cc: stable@dpdk.org
>>>
>>> Signed-off-by: Hongbo Zheng <zhenghongbo3@huawei.com>
>>> Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
>>> Signed-off-by: Chunsong Feng <fengchunsong@huawei.com>
>>> Signed-off-by: Xuan Li <lixuan47@hisilicon.com>
>>> ---
>>> v1 -> v2:
>>>     Ignore the failure when updating salves's MAC address in the
>>>     mac_address_slaves_update function, because it doesn't affect
>>>     the bond's functional characteristics. The related link about
>>>     the discussion:
>>>     http://patches.dpdk.org/patch/66033/
>>> ---
>>>   drivers/net/bonding/rte_eth_bond_pmd.c | 7 +++++--
>>>   1 file changed, 5 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c 
>>> b/drivers/net/bonding/rte_eth_bond_pmd.c
>>> index ddae3518c..01c0f6eb1 100644
>>> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
>>> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
>>> @@ -1502,6 +1502,7 @@ int
>>>   mac_address_slaves_update(struct rte_eth_dev *bonded_eth_dev)
>>>   {
>>>       struct bond_dev_private *internals = 
>>> bonded_eth_dev->data->dev_private;
>>> +    bool setted;
>>>       int i;
>>>       /* Update slave devices MAC addresses */
>>> @@ -1529,6 +1530,7 @@ mac_address_slaves_update(struct rte_eth_dev 
>>> *bonded_eth_dev)
>>>       case BONDING_MODE_TLB:
>>>       case BONDING_MODE_ALB:
>>>       default:
>>> +        setted = true;
>>>           for (i = 0; i < internals->slave_count; i++) {
>>>               if (internals->slaves[i].port_id ==
>>>                       internals->current_primary_port) {
>>> @@ -1537,7 +1539,7 @@ mac_address_slaves_update(struct rte_eth_dev 
>>> *bonded_eth_dev)
>>>                           bonded_eth_dev->data->mac_addrs)) {
>>>                       RTE_BOND_LOG(ERR, "Failed to update port Id %d 
>>> MAC address",
>>>                               internals->current_primary_port);
>>> -                    return -1;
>>> +                    setted = false;
>>>                   }
>>>               } else {
>>>                   if (rte_eth_dev_default_mac_addr_set(
>>> @@ -1545,10 +1547,11 @@ mac_address_slaves_update(struct rte_eth_dev 
>>> *bonded_eth_dev)
>>>                           &internals->slaves[i].persisted_mac_addr)) {
>>>                       RTE_BOND_LOG(ERR, "Failed to update port Id %d 
>>> MAC address",
>>>                               internals->slaves[i].port_id);
>>> -                    return -1;
>>>                   }
>>>               }
>>>           }
>>> +        if (!setted)
>>> +            return -1;
>>>       }
>>>       return 0;
>>>


  reply	other threads:[~2020-05-15 10:46 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-17  8:19 [dpdk-dev] [PATCH v2 0/2] fixes for bonding Wei Hu (Xavier)
2020-04-17  8:19 ` [dpdk-dev] [PATCH v2 1/2] net/bonding: fix MAC address when switching active port Wei Hu (Xavier)
2020-04-17  8:19 ` [dpdk-dev] [PATCH v2 2/2] net/bonding: fix MAC address when one port resets Wei Hu (Xavier)
2020-04-17  8:58   ` Wei Hu (Xavier)
2020-05-15  3:11     ` Wei Hu (Xavier)
2020-05-15 10:46       ` Ferruh Yigit [this message]
     [not found]         ` <1f71bc2e-e00c-8700-2850-19a5e42b8b94@163.com>
2020-05-16  9:31           ` Wei Hu (Xavier)
2020-05-16  9:51           ` [dpdk-dev] Fwd: " Wei Hu (Xavier)
2020-05-18  9:55             ` Ferruh Yigit
2020-05-18 11:12               ` Wei Hu (Xavier)
2020-07-15 11:03                 ` Wei Hu (Xavier)
2020-07-15 14:59                   ` Ferruh Yigit
2020-04-29 11:39 ` [dpdk-dev] [PATCH v2 0/2] fixes for bonding Wei Hu (Xavier)

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=750fc71a-e4fc-d5a7-9bca-551d7ed4b32c@intel.com \
    --to=ferruh.yigit@intel.com \
    --cc=3chas3@gmail.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=huwei013@chinasoftinc.com \
    --cc=thomas@monjalon.net \
    /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

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git