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.
Unified · Split
| @@ -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); |
| @@ -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]; |