|
|
@@ -150,6 +150,7 @@ static void dump_dev_cap_flags2(struct mlx4_dev *dev, u64 flags)
|
|
|
[24] = "Ethernet Flow control statistics support",
|
|
|
[25] = "Granular QoS per VF support",
|
|
|
[26] = "Port ETS Scheduler support",
|
|
|
+ [27] = "Port beacon support",
|
|
|
};
|
|
|
int i;
|
|
|
|
|
|
@@ -647,6 +648,7 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
|
|
|
#define QUERY_DEV_CAP_RSS_OFFSET 0x2e
|
|
|
#define QUERY_DEV_CAP_MAX_RDMA_OFFSET 0x2f
|
|
|
#define QUERY_DEV_CAP_RSZ_SRQ_OFFSET 0x33
|
|
|
+#define QUERY_DEV_CAP_PORT_BEACON_OFFSET 0x34
|
|
|
#define QUERY_DEV_CAP_ACK_DELAY_OFFSET 0x35
|
|
|
#define QUERY_DEV_CAP_MTU_WIDTH_OFFSET 0x36
|
|
|
#define QUERY_DEV_CAP_VL_PORT_OFFSET 0x37
|
|
|
@@ -786,6 +788,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_PORT_BEACON_OFFSET);
|
|
|
+ if (field & 0x80)
|
|
|
+ dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_PORT_BEACON;
|
|
|
MLX4_GET(field, outbox, QUERY_DEV_CAP_FLOW_STEERING_IPOIB_OFFSET);
|
|
|
if (field & 0x80)
|
|
|
dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_DMFS_IPOIB;
|
|
|
@@ -1165,6 +1170,11 @@ int mlx4_QUERY_DEV_CAP_wrapper(struct mlx4_dev *dev, int slave,
|
|
|
field &= 0xd7;
|
|
|
MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_VXLAN);
|
|
|
|
|
|
+ /* For guests, disable port BEACON */
|
|
|
+ MLX4_GET(field, outbox->buf, QUERY_DEV_CAP_PORT_BEACON_OFFSET);
|
|
|
+ field &= 0x7f;
|
|
|
+ MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_PORT_BEACON_OFFSET);
|
|
|
+
|
|
|
/* For guests, report Blueflame disabled */
|
|
|
MLX4_GET(field, outbox->buf, QUERY_DEV_CAP_BF_OFFSET);
|
|
|
field &= 0x7f;
|