[v3,5/5] ethdev: fix dev state when stop
Checks
Commit Message
Currently, 'dev_started' is always set to be 0 when dev stop, whether
it succeeded or failed. This is unreasonable and this patch fixed it.
Fixes: 62024eb82756 ("ethdev: change stop operation callback to return int")
Cc: stable@dpdk.org
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
lib/ethdev/rte_ethdev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
Comments
On 5/3/2022 11:02 AM, Min Hu (Connor) wrote:
> Currently, 'dev_started' is always set to be 0 when dev stop, whether
> it succeeded or failed. This is unreasonable and this patch fixed it.
>
> Fixes: 62024eb82756 ("ethdev: change stop operation callback to return int")
> Cc: stable@dpdk.org
>
> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
> ---
> lib/ethdev/rte_ethdev.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
> index 29a3d80466..e0011372aa 100644
> --- a/lib/ethdev/rte_ethdev.c
> +++ b/lib/ethdev/rte_ethdev.c
> @@ -1533,8 +1533,9 @@ rte_eth_dev_stop(uint16_t port_id)
> /* point fast-path functions to dummy ones */
> eth_dev_fp_ops_reset(rte_eth_fp_ops + port_id);
>
> - dev->data->dev_started = 0;
> ret = (*dev->dev_ops->dev_stop)(dev);
> + if (ret == 0)
> + dev->data->dev_started = 0;
> rte_ethdev_trace_stop(port_id, ret);
>
> return ret;
Change looks good to me, I checked for possible unexpected side effect
but I did not see any.
@Andrew, @Thomas, if you also don't see/remember any issue related
change, I will push it soon.
25/05/2022 19:44, Ferruh Yigit:
> On 5/3/2022 11:02 AM, Min Hu (Connor) wrote:
> > Currently, 'dev_started' is always set to be 0 when dev stop, whether
> > it succeeded or failed. This is unreasonable and this patch fixed it.
> >
> > Fixes: 62024eb82756 ("ethdev: change stop operation callback to return int")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
> > ---
> > lib/ethdev/rte_ethdev.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
> > index 29a3d80466..e0011372aa 100644
> > --- a/lib/ethdev/rte_ethdev.c
> > +++ b/lib/ethdev/rte_ethdev.c
> > @@ -1533,8 +1533,9 @@ rte_eth_dev_stop(uint16_t port_id)
> > /* point fast-path functions to dummy ones */
> > eth_dev_fp_ops_reset(rte_eth_fp_ops + port_id);
> >
> > - dev->data->dev_started = 0;
> > ret = (*dev->dev_ops->dev_stop)(dev);
> > + if (ret == 0)
> > + dev->data->dev_started = 0;
> > rte_ethdev_trace_stop(port_id, ret);
> >
> > return ret;
>
> Change looks good to me, I checked for possible unexpected side effect
> but I did not see any.
>
> @Andrew, @Thomas, if you also don't see/remember any issue related
> change, I will push it soon.
Acked-by: Thomas Monjalon <thomas@monjalon.net>
On 5/26/2022 11:21 AM, Thomas Monjalon wrote:
> [CAUTION: External Email]
>
> 25/05/2022 19:44, Ferruh Yigit:
>> On 5/3/2022 11:02 AM, Min Hu (Connor) wrote:
>>> Currently, 'dev_started' is always set to be 0 when dev stop, whether
>>> it succeeded or failed. This is unreasonable and this patch fixed it.
>>>
>>> Fixes: 62024eb82756 ("ethdev: change stop operation callback to return int")
>>> Cc: stable@dpdk.org
>>>
>>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>>> ---
>>> lib/ethdev/rte_ethdev.c | 3 ++-
>>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
>>> index 29a3d80466..e0011372aa 100644
>>> --- a/lib/ethdev/rte_ethdev.c
>>> +++ b/lib/ethdev/rte_ethdev.c
>>> @@ -1533,8 +1533,9 @@ rte_eth_dev_stop(uint16_t port_id)
>>> /* point fast-path functions to dummy ones */
>>> eth_dev_fp_ops_reset(rte_eth_fp_ops + port_id);
>>>
>>> - dev->data->dev_started = 0;
>>> ret = (*dev->dev_ops->dev_stop)(dev);
>>> + if (ret == 0)
>>> + dev->data->dev_started = 0;
>>> rte_ethdev_trace_stop(port_id, ret);
>>>
>>> return ret;
>>
>> Change looks good to me, I checked for possible unexpected side effect
>> but I did not see any.
>>
>> @Andrew, @Thomas, if you also don't see/remember any issue related
>> change, I will push it soon.
>
> Acked-by: Thomas Monjalon <thomas@monjalon.net>
>
Acked-by: Ferruh Yigit <ferruh.yigit@xilinx.com>
Applied to dpdk-next-net/main, thanks.
@@ -1533,8 +1533,9 @@ rte_eth_dev_stop(uint16_t port_id)
/* point fast-path functions to dummy ones */
eth_dev_fp_ops_reset(rte_eth_fp_ops + port_id);
- dev->data->dev_started = 0;
ret = (*dev->dev_ops->dev_stop)(dev);
+ if (ret == 0)
+ dev->data->dev_started = 0;
rte_ethdev_trace_stop(port_id, ret);
return ret;