patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@xilinx.com>
To: "Min Hu (Connor)" <humin29@huawei.com>, <dev@dpdk.org>
Cc: Huisong Li <lihuisong@huawei.com>, <stable@dpdk.org>,
	Chas Williams <chas3@att.com>,
	Radu Nicolau <radu.nicolau@intel.com>
Subject: Re: [PATCH V2 1/4] net/bonding: fix non-active slaves aren't stopped
Date: Fri, 29 Apr 2022 14:31:55 +0100
Message-ID: <e8ecc60d-7894-3153-7660-7df119c82d5a@xilinx.com> (raw)
In-Reply-To: <cae53f24-0693-e217-cea0-d42f34ed8df7@huawei.com>

On 4/29/2022 7:45 AM, Min Hu (Connor) wrote:
> Hi, Ferruh,
> 
> 在 2022/4/27 2:19, Ferruh Yigit 写道:
>> On 3/24/2022 3:00 AM, Min Hu (Connor) wrote:
>>> From: Huisong Li <lihuisong@huawei.com>
>>>
>>> When stopping a bonded port, all slaves should be deactivated. But only
>>
>> s/deactivated/stopped/ ?
> not agreed. deactivated and stopped are different state for slave.
> 

Just to clarify the sentences, otherwise I see the 'stopped' and 
'deactivated' states are different.
Next sentences complains that not all ports are stopped: "But only 
active slaves are stopped.", so I thought intention in this sentences to 
claim that all slaves should be stopped (but it mentions all slaves 
should be 'deactivated').
As long as you address the disconnection between two sentences, I don't 
mind the wording.

>>
>>> active slaves are stopped. So fix it and do "deactivae_slave()" for 
>>> active
>>
>> s/deactivae_slave()/deactivate_slave()/
>>
> agreed.
> 
>>> slaves.
>>
>> Hi Connor,
>>
>> When a bonding port is closed, is it clear if all slave ports or 
>> active slave ports should be stopped?
> Yes, I think all the slave ports should be stopped(or try to be stopped).
>>
>>>
>>> Fixes: 0911d4ec0183 ("net/bonding: fix crash when stopping mode 4 port")
>>> Cc: stable@dpdk.org
>>>
>>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>>> ---
>>>   drivers/net/bonding/rte_eth_bond_pmd.c | 20 +++++++++++---------
>>>   1 file changed, 11 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c 
>>> b/drivers/net/bonding/rte_eth_bond_pmd.c
>>> index b305b6a35b..469dc71170 100644
>>> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
>>> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
>>> @@ -2118,18 +2118,20 @@ bond_ethdev_stop(struct rte_eth_dev *eth_dev)
>>>       internals->link_status_polling_enabled = 0;
>>>       for (i = 0; i < internals->slave_count; i++) {
>>>           uint16_t slave_id = internals->slaves[i].port_id;
>>> +
>>> +        internals->slaves[i].last_link_status = 0;
>>> +        ret = rte_eth_dev_stop(slave_id);
>>> +        if (ret != 0) {
>>> +            RTE_BOND_LOG(ERR, "Failed to stop device on port %u",
>>> +                     slave_id);
>>> +            return ret;
>>
>> Should it return here or try to stop all ports?
>> What about to record the return status, but keep continue to stop all 
>> ports. And return error if any of the stop failed?
> I think no need to do this. APP only see the bonded device. If bonded
> device stop failed, it means it works failed. And the number of 
> "stopped" successfully slave does not make any sense.
> 

OK if trying to stop as much as possible 'slave' devices doesn't make 
sense, we can keep as it is.

Btw, when functions fails at this point, bonding device itself already 
marked as stopped, right? And some of the slave devices may be stopped 
already before failure.
I don't know how confusing this is for the user, that stop() function is 
failed but bonding device state is 'stopped'. I don't know if function 
should recover at least bonding device status (back to started) on 
failure, what do you think?

>>
>>> +        }
>>> +
>>> +        /* active slaves need to deactivate. */
>>
>> " active slaves need to be deactivated. " ?
> agreed.
>>
>>>           if (find_slave_by_id(internals->active_slaves,
>>>                   internals->active_slave_count, slave_id) !=
>>> -                        internals->active_slave_count) {
>>> -            internals->slaves[i].last_link_status = 0;
>>> -            ret = rte_eth_dev_stop(slave_id);
>>> -            if (ret != 0) {
>>> -                RTE_BOND_LOG(ERR, "Failed to stop device on port %u",
>>> -                         slave_id);
>>> -                return ret;
>>> -            }
>>> +                internals->active_slave_count)
>>
>> I think original indentation for this line is better.
>>
> agreed.
>>>               deactivate_slave(eth_dev, slave_id);
>>> -        }
>>>       }
>>>       return 0;
>>
>> .


  reply	other threads:[~2022-04-29 13:32 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20211025063922.34066-1-humin29@huawei.com>
     [not found] ` <20220324030036.4761-1-humin29@huawei.com>
2022-03-24  3:00   ` Min Hu (Connor)
2022-04-26 18:19     ` Ferruh Yigit
2022-04-29  6:45       ` Min Hu (Connor)
2022-04-29 13:31         ` Ferruh Yigit [this message]
2022-05-03  6:54           ` Min Hu (Connor)
2022-05-03 19:04             ` Ferruh Yigit
2022-05-05  1:16               ` Min Hu (Connor)
2022-03-24  3:00   ` [PATCH V2 2/4] net/bonding: fix non-terminable while loop Min Hu (Connor)
2022-04-26 18:19     ` Ferruh Yigit
2022-04-29  6:52       ` Min Hu (Connor)
2022-04-29 13:35         ` Ferruh Yigit
2022-03-24  3:00   ` [PATCH V2 3/4] app/testpmd: fix port status of slave device Min Hu (Connor)
2022-03-24  3:00   ` [PATCH V2 4/4] app/testpmd: fix slave device isn't released Min Hu (Connor)
2022-05-30  6:01     ` Min Hu (Connor)
2022-05-30 10:21       ` Singh, Aman Deep
     [not found]   ` <20220503100217.46203-1-humin29@huawei.com>
2022-05-03 10:02     ` [PATCH v3 1/5] net/bonding: fix non-active slaves aren't stopped Min Hu (Connor)
2022-05-03 10:02     ` [PATCH v3 2/5] net/bonding: fix non-terminable while loop Min Hu (Connor)
2022-05-03 10:02     ` [PATCH v3 3/5] app/testpmd: fix port status of slave device Min Hu (Connor)
2022-05-03 23:39       ` Konstantin Ananyev
2022-05-06  8:16         ` Min Hu (Connor)
2022-05-08 11:28           ` Konstantin Ananyev
2022-05-10 16:34           ` Ferruh Yigit
2022-05-10 21:48             ` Konstantin Ananyev
2022-05-11  2:16               ` Min Hu (Connor)
2022-05-11 10:05                 ` Ferruh Yigit
2022-05-11  2:14       ` [PATCH v4] " Min Hu (Connor)
2022-05-11 22:08         ` Konstantin Ananyev
2022-05-19  7:15           ` Andrew Rybchenko
2022-05-03 10:02     ` [PATCH v3 4/5] app/testpmd: fix slave device isn't released Min Hu (Connor)
2022-06-01 17:54       ` Ferruh Yigit
2022-06-07  8:15         ` Dongdong Liu
2022-06-07  8:10       ` [PATCH v4] " Dongdong Liu
2022-06-07 14:31         ` Ferruh Yigit
2022-06-09  7:50           ` Dongdong Liu
2022-06-09  8:50             ` Ferruh Yigit
2022-06-09 11:20               ` Dongdong Liu
2022-06-09 11:49       ` [PATCH v5] " Dongdong Liu
2022-06-10  8:10         ` Ferruh Yigit
2022-05-03 10:02     ` [PATCH v3 5/5] ethdev: fix dev state when stop Min Hu (Connor)
2022-05-25 17:44       ` Ferruh Yigit
2022-05-26 10:21         ` Thomas Monjalon
2022-05-30 12:04           ` Ferruh Yigit

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=e8ecc60d-7894-3153-7660-7df119c82d5a@xilinx.com \
    --to=ferruh.yigit@xilinx.com \
    --cc=chas3@att.com \
    --cc=dev@dpdk.org \
    --cc=humin29@huawei.com \
    --cc=lihuisong@huawei.com \
    --cc=radu.nicolau@intel.com \
    --cc=stable@dpdk.org \
    /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

patches for DPDK stable branches

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.dpdk.org/stable/0 stable/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 stable stable/ http://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable

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


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