From: "Wei Hu (Xavier)" <xavier.huwei@huawei.com> To: <ferruh.yigit@intel.com> Cc: <3chas3@gmail.com>, <thomas@monjalon.net>, <david.marchand@redhat.com>, <dev@dpdk.org>, <linuxarm@huawei.com> Subject: Re: [dpdk-dev] [PATCH v2 2/2] net/bonding: fix MAC address when one port resets Date: Sat, 16 May 2020 17:31:18 +0800 Message-ID: <99f38f50-7f43-5a8f-2e7c-eb4cce4fe5a2@huawei.com> (raw) In-Reply-To: <1f71bc2e-e00c-8700-2850-19a5e42b8b94@163.com> On 2020/5/16 16:59, Wei Hu (Xavier) wrote: > > > > -------- Forwarded Message -------- > 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 > 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> > > 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? > Hi, Ferruh Yigit I'm glad to do something like this. Thanks, Xavier > 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; >>>> > > . >
next prev parent reply other threads:[~2020-05-16 21:03 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 [not found] ` <1f71bc2e-e00c-8700-2850-19a5e42b8b94@163.com> 2020-05-16 9:31 ` Wei Hu (Xavier) [this message] 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=99f38f50-7f43-5a8f-2e7c-eb4cce4fe5a2@huawei.com \ --to=xavier.huwei@huawei.com \ --cc=3chas3@gmail.com \ --cc=david.marchand@redhat.com \ --cc=dev@dpdk.org \ --cc=ferruh.yigit@intel.com \ --cc=linuxarm@huawei.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