mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
net/mlx5e: Verify unique vhca_id count instead of range
Change verify_num_vhca_ids() to count the number of unique vhca_ids and verify this count doesn't exceed max_num_vhca_id, rather than validating individual vhca_id values are within a specific range. The previous implementation checked if each vhca_id was in the range [0, max_num_vhca_id - 1], which is overly restrictive. The hardware capability max_rqt_vhca_id represents the maximum number of unique vhca_ids that can be used, not a range constraint on individual IDs. Signed-off-by: Shay Drory <shayd@nvidia.com> Reviewed-by: Mark Bloch <mbloch@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/20260531113954.395443-14-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
9f062b931d
commit
0b1c4495aa
|
|
@ -8,13 +8,28 @@ static bool verify_num_vhca_ids(struct mlx5_core_dev *mdev, u32 *vhca_ids,
|
|||
unsigned int size)
|
||||
{
|
||||
unsigned int max_num_vhca_id = MLX5_CAP_GEN_2(mdev, max_rqt_vhca_id);
|
||||
int i;
|
||||
unsigned int unique_count = 0;
|
||||
int i, j;
|
||||
|
||||
/* Verify that all vhca_ids are in range [0, max_num_vhca_ids - 1] */
|
||||
for (i = 0; i < size; i++)
|
||||
if (vhca_ids[i] >= max_num_vhca_id)
|
||||
return false;
|
||||
return true;
|
||||
/* Count unique vhca_ids */
|
||||
for (i = 0; i < size; i++) {
|
||||
bool is_unique = true;
|
||||
|
||||
/* Check if vhca_ids[i] was already seen */
|
||||
for (j = 0; j < i; j++) {
|
||||
if (vhca_ids[j] == vhca_ids[i]) {
|
||||
is_unique = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_unique)
|
||||
unique_count++;
|
||||
}
|
||||
|
||||
/* Verify that number of unique vhca_ids doesn't exceed
|
||||
* max_num_vhca_id
|
||||
*/
|
||||
return unique_count <= max_num_vhca_id;
|
||||
}
|
||||
|
||||
static bool rqt_verify_vhca_ids(struct mlx5_core_dev *mdev, u32 *vhca_ids,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user