mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
net/mlx5: Refactor HCA cap 2 setting
Refactor HCA capability 2 setting logic to be more structured and conditional. Move the sw_vhca_id_valid setting inside proper conditional checks and prepare the function for additional capability settings. The refactoring: - Always copy current capabilities to set_hca_cap buffer. - Apply sw_vhca_id_valid setting only when conditions are met. - Improve code readability and maintainability. This cleanup prepares the handle_hca_cap_2() function for the upcoming balance ID capability setting. Signed-off-by: Mark Bloch <mbloch@nvidia.com> Reviewed-by: Moshe Shemesh <moshe@nvidia.com> Reviewed-by: Shay Drori <shayd@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/1761211020-925651-5-git-send-email-tariqt@nvidia.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
@@ -553,6 +553,7 @@ EXPORT_SYMBOL(mlx5_is_roce_on);
|
||||
|
||||
static int handle_hca_cap_2(struct mlx5_core_dev *dev, void *set_ctx)
|
||||
{
|
||||
bool do_set = false;
|
||||
void *set_hca_cap;
|
||||
int err;
|
||||
|
||||
@@ -563,17 +564,22 @@ static int handle_hca_cap_2(struct mlx5_core_dev *dev, void *set_ctx)
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (!MLX5_CAP_GEN_2_MAX(dev, sw_vhca_id_valid) ||
|
||||
!(dev->priv.sw_vhca_id > 0))
|
||||
return 0;
|
||||
|
||||
set_hca_cap = MLX5_ADDR_OF(set_hca_cap_in, set_ctx,
|
||||
capability);
|
||||
memcpy(set_hca_cap, dev->caps.hca[MLX5_CAP_GENERAL_2]->cur,
|
||||
MLX5_ST_SZ_BYTES(cmd_hca_cap_2));
|
||||
MLX5_SET(cmd_hca_cap_2, set_hca_cap, sw_vhca_id_valid, 1);
|
||||
|
||||
return set_caps(dev, set_ctx, MLX5_CAP_GENERAL_2);
|
||||
if (MLX5_CAP_GEN_2_MAX(dev, sw_vhca_id_valid) &&
|
||||
dev->priv.sw_vhca_id > 0) {
|
||||
MLX5_SET(cmd_hca_cap_2, set_hca_cap, sw_vhca_id_valid, 1);
|
||||
do_set = true;
|
||||
}
|
||||
|
||||
/* some FW versions that support querying MLX5_CAP_GENERAL_2
|
||||
* capabilities but don't support setting them.
|
||||
* Skip unnecessary update to hca_cap_2 when no changes were introduced
|
||||
*/
|
||||
return do_set ? set_caps(dev, set_ctx, MLX5_CAP_GENERAL_2) : 0;
|
||||
}
|
||||
|
||||
static int handle_hca_cap(struct mlx5_core_dev *dev, void *set_ctx)
|
||||
|
||||
Reference in New Issue
Block a user