[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <624f1c54-8bfe-4031-9614-79c4998a8d78@nvidia.com>
Date: Tue, 17 Dec 2024 14:52:55 +0200
From: Mark Bloch <mbloch@...dia.com>
To: Alexander Lobakin <aleksander.lobakin@...el.com>,
rongwei liu <rongweil@...dia.com>
Cc: Tariq Toukan <tariqt@...dia.com>, "David S. Miller"
<davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>, Eric Dumazet <edumazet@...gle.com>,
Andrew Lunn <andrew+netdev@...n.ch>, Leon Romanovsky <leonro@...dia.com>,
netdev@...r.kernel.org, Saeed Mahameed <saeedm@...dia.com>,
Gal Pressman <gal@...dia.com>, linux-rdma@...r.kernel.org
Subject: Re: [PATCH net-next 02/12] net/mlx5: LAG, Refactor lag logic
On 17/12/2024 13:32, Alexander Lobakin wrote:
> From: Rongwei Liu <rongweil@...dia.com>
> Date: Tue, 17 Dec 2024 13:44:07 +0800
>
>>
>>
>> On 2024/12/17 01:55, Alexander Lobakin wrote:
>>> From: Tariq Toukan <tariqt@...dia.com>
>>> Date: Wed, 11 Dec 2024 15:42:13 +0200
>>>
>>>> From: Rongwei Liu <rongweil@...dia.com>
>>>>
>>>> Wrap the lag pf access into two new macros:
>>>> 1. ldev_for_each()
>>>> 2. ldev_for_each_reverse()
>>>> The maximum number of lag ports and the index to `natvie_port_num`
>>>> mapping will be handled by the two new macros.
>>>> Users shouldn't use the for loop anymore.
>>>
>>> [...]
>>>
>>>> @@ -1417,6 +1398,26 @@ void mlx5_lag_add_netdev(struct mlx5_core_dev *dev,
>>>> mlx5_queue_bond_work(ldev, 0);
>>>> }
>>>>
>>>> +int get_pre_ldev_func(struct mlx5_lag *ldev, int start_idx, int end_idx)
>>>> +{
>>>> + int i;
>>>> +
>>>> + for (i = start_idx; i >= end_idx; i--)
>>>> + if (ldev->pf[i].dev)
>>>> + return i;
>>>> + return -1;
>>>> +}
>>>> +
>>>> +int get_next_ldev_func(struct mlx5_lag *ldev, int start_idx)
>>>> +{
>>>> + int i;
>>>> +
>>>> + for (i = start_idx; i < MLX5_MAX_PORTS; i++)
>>>> + if (ldev->pf[i].dev)
>>>> + return i;
>>>> + return MLX5_MAX_PORTS;
>>>> +}
>>>
>>> Why aren't these two prefixed with mlx5?
>>> We can have. No mlx5 prefix aligns with "ldev_for_each/ldev_for_each_reverse()", simple, short and meaningful.
>
> All drivers must have its symbols prefixed, otherwise there might be
> name conflicts at anytime and also it's not clear where a definition
> comes from if it's not prefixed.
>
However, those aren't exported symbols, they are used exclusively by the mlx5 lag code.
I don't see any added value in prefixing internal functions with mlx5 unless it adds
context to the logic.
Here it's very clear we are going over the members that are stored inside the ldev struct.
Mark
>>>> +
>>>> bool mlx5_lag_is_roce(struct mlx5_core_dev *dev)
>>>> {
>>>> struct mlx5_lag *ldev;
>>>
>>> [...]
>>>
>>>>
>>>> +#define ldev_for_each(i, start_index, ldev) \
>>>> + for (int tmp = start_index; tmp = get_next_ldev_func(ldev, tmp), \
>>>> + i = tmp, tmp < MLX5_MAX_PORTS; tmp++)
>>>> +
>>>> +#define ldev_for_each_reverse(i, start_index, end_index, ldev) \
>>>> + for (int tmp = start_index, tmp1 = end_index; \
>>>> + tmp = get_pre_ldev_func(ldev, tmp, tmp1), \
>>>> + i = tmp, tmp >= tmp1; tmp--)
>>>
>>> Same?
>> Reverse is used to the error handling. Add end index is more convenient.
>> Of course, we can remove the end_index.
>> But all the logic need to add:
>> if (i < end_index)
>> break;
>> If no strong comments, I would like to keep as now.
>
> By "same?" I meant that there two are also not prefixed with mlx5_, the
> same as the two above.
>
> Thanks,
> Olek
Powered by blists - more mailing lists