mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 13:06:59 +02:00
net/mlx5: detect and enable bypass port select flow table
Use port selection capability port_select_flow_table_bypass bit to detect and enable explicit port affinity even when in lag hash mode. Signed-off-by: Liu, Changcheng <jerrliu@nvidia.com> Reviewed-by: Mark Bloch <mbloch@nvidia.com> Reviewed-by: Saeed Mahameed <saeedm@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
b146a7cd0a
commit
90b1df74b5
|
|
@ -652,6 +652,33 @@ static int handle_hca_cap_roce(struct mlx5_core_dev *dev, void *set_ctx)
|
|||
return err;
|
||||
}
|
||||
|
||||
static int handle_hca_cap_port_selection(struct mlx5_core_dev *dev,
|
||||
void *set_ctx)
|
||||
{
|
||||
void *set_hca_cap;
|
||||
int err;
|
||||
|
||||
if (!MLX5_CAP_GEN(dev, port_selection_cap))
|
||||
return 0;
|
||||
|
||||
err = mlx5_core_get_caps(dev, MLX5_CAP_PORT_SELECTION);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (MLX5_CAP_PORT_SELECTION(dev, port_select_flow_table_bypass) ||
|
||||
!MLX5_CAP_PORT_SELECTION_MAX(dev, port_select_flow_table_bypass))
|
||||
return 0;
|
||||
|
||||
set_hca_cap = MLX5_ADDR_OF(set_hca_cap_in, set_ctx, capability);
|
||||
memcpy(set_hca_cap, dev->caps.hca[MLX5_CAP_PORT_SELECTION]->cur,
|
||||
MLX5_ST_SZ_BYTES(port_selection_cap));
|
||||
MLX5_SET(port_selection_cap, set_hca_cap, port_select_flow_table_bypass, 1);
|
||||
|
||||
err = set_caps(dev, set_ctx, MLX5_SET_HCA_CAP_OP_MODE_PORT_SELECTION);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static int set_hca_cap(struct mlx5_core_dev *dev)
|
||||
{
|
||||
int set_sz = MLX5_ST_SZ_BYTES(set_hca_cap_in);
|
||||
|
|
@ -696,6 +723,13 @@ static int set_hca_cap(struct mlx5_core_dev *dev)
|
|||
goto out;
|
||||
}
|
||||
|
||||
memset(set_ctx, 0, set_sz);
|
||||
err = handle_hca_cap_port_selection(dev, set_ctx);
|
||||
if (err) {
|
||||
mlx5_core_err(dev, "handle_hca_cap_port_selection failed\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
kfree(set_ctx);
|
||||
return err;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user