Hi Slava,
Thanks, you are right - I retract my patch, as this was fixed in v19.08
by 6fd05da9efbd ("net/mlx5: fix link speed info when link is down") as
per the line you indicate.

I should explain that we are using Debian 10 which uses v18.11, here we
had a painful issue with the combination of this -EAGAIN and use of
netlink to obtain the ifindex resulting in concurrent use of the netlink
socket causing the calling thread to block indefinitely.

Regards
Mike

On 13/12/2019 14:43, Slava Ovsiienko wrote:
> Hi, Mike     
>
> In the mlx5_link_update_unlocked_gs() the dev_link.link_speed is set like 
> this:
>
> dev_link.link_speed = (ecmd->speed == UINT32_MAX) ? ETH_SPEED_NUM_NONE :  
> ecmd->speed;
>
> So, dev_link.link_speed can't be assigned with -1. Do I misunderstand you 
> commit message? 
>
> With best regards, Slava
>
>> -----Original Message-----
>> From: Thomas Monjalon <tho...@monjalon.net>
>> Sent: Friday, December 13, 2019 0:31
>> To: dev@dpdk.org
>> Cc: Mike Manning <mmann...@vyatta.att-mail.com>; Nélio Laranjeiro
>> <nelio.laranje...@6wind.com>; Matan Azrad <ma...@mellanox.com>; Slava
>> Ovsiienko <viachesl...@mellanox.com>; Shahaf Shuler
>> <shah...@mellanox.com>; Raslan Darawsheh <rasl...@mellanox.com>
>> Subject: Re: [dpdk-dev] [PATCH] net/mlx5: fix eagain on admin down
>>
>> +Cc maintainers
>>
>> 09/12/2019 19:23, Mike Manning:
>>> The check in mlx5_link_update_unlocked_gs() returns -EAGAIN if link
>>> status does not correspond to link speed. If status is DOWN, the speed
>>> is expected to be ETH_SPEED_NUM_NONE (0). But as the link speed is -1
>>> on admin down, modify the check to account for this.
>>>
>>> Fixes: cfee94752b8f ("net/mlx5: fix link status to use wait to
>>> complete")
>>> Cc: Nélio Laranjeiro <nelio.laranje...@6wind.com>
>>>
>>> Signed-off-by: Mike Manning <mmann...@vyatta.att-mail.com>
>>> ---
>>>  drivers/net/mlx5/mlx5_ethdev.c | 4 ++--
>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/net/mlx5/mlx5_ethdev.c
>>> b/drivers/net/mlx5/mlx5_ethdev.c index d80ae458b..6ef2dfd74 100644
>>> --- a/drivers/net/mlx5/mlx5_ethdev.c
>>> +++ b/drivers/net/mlx5/mlx5_ethdev.c
>>> @@ -1031,8 +1031,8 @@ mlx5_link_update_unlocked_gs(struct
>> rte_eth_dev *dev,
>>>                             ETH_LINK_HALF_DUPLEX :
>> ETH_LINK_FULL_DUPLEX);
>>>     dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds &
>>>                               ETH_LINK_SPEED_FIXED);
>>> -   if (((dev_link.link_speed && !dev_link.link_status) ||
>>> -        (!dev_link.link_speed && dev_link.link_status))) {
>>> +   if ((((int)dev_link.link_speed > 0 && !dev_link.link_status) ||
>>> +        ((int)dev_link.link_speed <= 0 && dev_link.link_status))) {
>>>             rte_errno = EAGAIN;
>>>             return -rte_errno;
>>>     }
>>>
>>
>>
>>

Reply via email to