History

net/mlx5: DR, Check force-loopback RC QP capability independently from RoCE

SW Steering uses RC QP for writing STEs to ICM. This writingis done in LB (loopback), and FL (force-loopback) QP is preferred for performance. FL is available when RoCE is enabled or disabled based on RoCE caps. This patch adds reading of FL capability from HCA caps in addition to the existing reading from RoCE caps, thus fixing the case where we didn't have loopback enabled when RoCE was disabled.

Yevgeny Kliteynik committed 3 years ago

Commit c7dd2251 parent 1e5daf52 files · +6 −2Browse files

Unified · Split

2 files
  1. drivers/net/ethernet/mellanox/mlx5/core/steering/dr_cmd.c +3 −1
  2. include/linux/mlx5/mlx5_ifc.h +3 −1
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_cmd.c+3−1
@@ -117,6 +117,8 @@ int mlx5dr_cmd_query_device(struct mlx5_core_dev *mdev, · 116 unmodified lines
117 caps->gvmi = MLX5_CAP_GEN(mdev, vhca_id);117 caps->gvmi = MLX5_CAP_GEN(mdev, vhca_id);
118 caps->flex_protocols = MLX5_CAP_GEN(mdev, flex_parser_protocols);118 caps->flex_protocols = MLX5_CAP_GEN(mdev, flex_parser_protocols);
119 caps->sw_format_ver = MLX5_CAP_GEN(mdev, steering_format_version);119 caps->sw_format_ver = MLX5_CAP_GEN(mdev, steering_format_version);
120 caps->roce_caps.fl_rc_qp_when_roce_disabled =
121 MLX5_CAP_GEN(mdev, fl_rc_qp_when_roce_disabled);
120 122
121 if (MLX5_CAP_GEN(mdev, roce)) {123 if (MLX5_CAP_GEN(mdev, roce)) {
122 err = dr_cmd_query_nic_vport_roce_en(mdev, 0, &roce_en);124 err = dr_cmd_query_nic_vport_roce_en(mdev, 0, &roce_en);
@@ -124,7 +126,7 @@ int mlx5dr_cmd_query_device(struct mlx5_core_dev *mdev, · 1 unmodified line
124 return err;126 return err;
125 127
126 caps->roce_caps.roce_en = roce_en;128 caps->roce_caps.roce_en = roce_en;
127 caps->roce_caps.fl_rc_qp_when_roce_disabled =129 caps->roce_caps.fl_rc_qp_when_roce_disabled |=
128 MLX5_CAP_ROCE(mdev, fl_rc_qp_when_roce_disabled);130 MLX5_CAP_ROCE(mdev, fl_rc_qp_when_roce_disabled);
129 caps->roce_caps.fl_rc_qp_when_roce_enabled =131 caps->roce_caps.fl_rc_qp_when_roce_enabled =
130 MLX5_CAP_ROCE(mdev, fl_rc_qp_when_roce_enabled);132 MLX5_CAP_ROCE(mdev, fl_rc_qp_when_roce_enabled);
include/linux/mlx5/mlx5_ifc.h+3−1
@@ -1705,7 +1705,9 @@ struct mlx5_ifc_cmd_hca_cap_bits { · 1704 unmodified lines
1705 u8 rc[0x1];1705 u8 rc[0x1];
1706 1706
1707 u8 uar_4k[0x1];1707 u8 uar_4k[0x1];
1708 u8 reserved_at_241[0x9];1708 u8 reserved_at_241[0x7];
1709 u8 fl_rc_qp_when_roce_disabled[0x1];
1710 u8 regexp_params[0x1];
1709 u8 uar_sz[0x6];1711 u8 uar_sz[0x6];
1710 u8 port_selection_cap[0x1];1712 u8 port_selection_cap[0x1];
1711 u8 reserved_at_248[0x1];1713 u8 reserved_at_248[0x1];