|
@@ -147,7 +147,8 @@ static void dump_dev_cap_flags2(struct mlx4_dev *dev, u64 flags)
|
|
|
[21] = "Port Remap support",
|
|
|
[22] = "QCN support",
|
|
|
[23] = "QP rate limiting support",
|
|
|
- [24] = "Ethernet Flow control statistics support"
|
|
|
+ [24] = "Ethernet Flow control statistics support",
|
|
|
+ [25] = "Granular QoS per VF support",
|
|
|
};
|
|
|
int i;
|
|
|
|
|
@@ -871,6 +872,8 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
|
|
|
MLX4_GET(size, outbox, QUERY_DEV_CAP_MAX_DESC_SZ_RQ_OFFSET);
|
|
|
dev_cap->max_rq_desc_sz = size;
|
|
|
MLX4_GET(field, outbox, QUERY_DEV_CAP_CQ_EQ_CACHE_LINE_STRIDE);
|
|
|
+ if (field & (1 << 4))
|
|
|
+ dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_QOS_VPP;
|
|
|
if (field & (1 << 5))
|
|
|
dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_ETH_PROT_CTRL;
|
|
|
if (field & (1 << 6))
|
|
@@ -1199,6 +1202,11 @@ int mlx4_QUERY_DEV_CAP_wrapper(struct mlx4_dev *dev, int slave,
|
|
|
field16 = 0;
|
|
|
MLX4_PUT(outbox->buf, field16, QUERY_DEV_CAP_QP_RATE_LIMIT_NUM_OFFSET);
|
|
|
|
|
|
+ /* turn off QoS per VF support for guests */
|
|
|
+ MLX4_GET(field, outbox->buf, QUERY_DEV_CAP_CQ_EQ_CACHE_LINE_STRIDE);
|
|
|
+ field &= 0xef;
|
|
|
+ MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_CQ_EQ_CACHE_LINE_STRIDE);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|