|
@@ -513,6 +513,7 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
|
|
|
#define QUERY_DEV_CAP_MAX_XRC_OFFSET 0x67
|
|
|
#define QUERY_DEV_CAP_MAX_COUNTERS_OFFSET 0x68
|
|
|
#define QUERY_DEV_CAP_EXT_2_FLAGS_OFFSET 0x70
|
|
|
+#define QUERY_DEV_CAP_FLOW_STEERING_IPOIB_OFFSET 0x74
|
|
|
#define QUERY_DEV_CAP_FLOW_STEERING_RANGE_EN_OFFSET 0x76
|
|
|
#define QUERY_DEV_CAP_FLOW_STEERING_MAX_QP_OFFSET 0x77
|
|
|
#define QUERY_DEV_CAP_RDMARC_ENTRY_SZ_OFFSET 0x80
|
|
@@ -603,6 +604,9 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
|
|
|
if (field & 0x80)
|
|
|
dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_FS_EN;
|
|
|
dev_cap->fs_log_max_ucast_qp_range_size = field & 0x1f;
|
|
|
+ MLX4_GET(field, outbox, QUERY_DEV_CAP_FLOW_STEERING_IPOIB_OFFSET);
|
|
|
+ if (field & 0x80)
|
|
|
+ dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_DMFS_IPOIB;
|
|
|
MLX4_GET(field, outbox, QUERY_DEV_CAP_FLOW_STEERING_MAX_QP_OFFSET);
|
|
|
dev_cap->fs_max_num_qp_per_entry = field;
|
|
|
MLX4_GET(stat_rate, outbox, QUERY_DEV_CAP_RATE_SUPPORT_OFFSET);
|
|
@@ -860,6 +864,12 @@ int mlx4_QUERY_DEV_CAP_wrapper(struct mlx4_dev *dev, int slave,
|
|
|
MLX4_PUT(outbox->buf, field,
|
|
|
QUERY_DEV_CAP_FLOW_STEERING_RANGE_EN_OFFSET);
|
|
|
}
|
|
|
+
|
|
|
+ /* turn off ipoib managed steering for guests */
|
|
|
+ MLX4_GET(field, outbox, QUERY_DEV_CAP_FLOW_STEERING_IPOIB_OFFSET);
|
|
|
+ field &= ~0x80;
|
|
|
+ MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_FLOW_STEERING_IPOIB_OFFSET);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|