Skip to content

Commit 3742cc6

Browse files
shamoyadavem330
authored andcommitted
net/mlx4: Warn users of depracated QoS Firmware
A new capability bit was introduced in the past to to differ devices using the QoS ETS feature. The old was deprecated since then. If driver sees device which set only the old capabilty, it will print warning to user suggesting to upgrade the FW. Signed-off-by: Ido Shamay <[email protected]> Signed-off-by: Or Gerlitz <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent cda373f commit 3742cc6

File tree

4 files changed

+15
-3
lines changed

4 files changed

+15
-3
lines changed

drivers/net/ethernet/mellanox/mlx4/en_netdev.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2814,7 +2814,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
28142814
priv->msg_enable = MLX4_EN_MSG_LEVEL;
28152815
#ifdef CONFIG_MLX4_EN_DCB
28162816
if (!mlx4_is_slave(priv->mdev->dev)) {
2817-
if (mdev->dev->caps.flags & MLX4_DEV_CAP_FLAG_SET_ETH_SCHED) {
2817+
if (mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_ETS_CFG) {
28182818
dev->dcbnl_ops = &mlx4_en_dcbnl_ops;
28192819
} else {
28202820
en_info(priv, "enabling only PFC DCB ops\n");

drivers/net/ethernet/mellanox/mlx4/fw.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ static void dump_dev_cap_flags2(struct mlx4_dev *dev, u64 flags)
149149
[23] = "QP rate limiting support",
150150
[24] = "Ethernet Flow control statistics support",
151151
[25] = "Granular QoS per VF support",
152+
[26] = "Port ETS Scheduler support",
152153
};
153154
int i;
154155

@@ -900,6 +901,8 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
900901
MLX4_GET(field, outbox, QUERY_DEV_CAP_VXLAN);
901902
if (field & 1<<3)
902903
dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_VXLAN_OFFLOADS;
904+
if (field & (1 << 5))
905+
dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_ETS_CFG;
903906
MLX4_GET(dev_cap->max_icm_sz, outbox,
904907
QUERY_DEV_CAP_MAX_ICM_SZ_OFFSET);
905908
if (dev_cap->flags & MLX4_DEV_CAP_FLAG_COUNTERS)
@@ -1157,9 +1160,9 @@ int mlx4_QUERY_DEV_CAP_wrapper(struct mlx4_dev *dev, int slave,
11571160
field &= 0x7f;
11581161
MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_CQ_TS_SUPPORT_OFFSET);
11591162

1160-
/* For guests, disable vxlan tunneling */
1163+
/* For guests, disable vxlan tunneling and QoS support */
11611164
MLX4_GET(field, outbox->buf, QUERY_DEV_CAP_VXLAN);
1162-
field &= 0xf7;
1165+
field &= 0xd7;
11631166
MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_VXLAN);
11641167

11651168
/* For guests, report Blueflame disabled */

drivers/net/ethernet/mellanox/mlx4/main.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,14 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
528528
dev->caps.alloc_res_qp_mask =
529529
(dev->caps.bf_reg_size ? MLX4_RESERVE_ETH_BF_QP : 0) |
530530
MLX4_RESERVE_A0_QP;
531+
532+
if (!(dev->caps.flags2 & MLX4_DEV_CAP_FLAG2_ETS_CFG) &&
533+
dev->caps.flags & MLX4_DEV_CAP_FLAG_SET_ETH_SCHED) {
534+
mlx4_warn(dev, "Old device ETS support detected\n");
535+
mlx4_warn(dev, "Consider upgrading device FW.\n");
536+
dev->caps.flags2 |= MLX4_DEV_CAP_FLAG2_ETS_CFG;
537+
}
538+
531539
} else {
532540
dev->caps.alloc_res_qp_mask = 0;
533541
}

include/linux/mlx4/device.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ enum {
207207
MLX4_DEV_CAP_FLAG2_QP_RATE_LIMIT = 1LL << 23,
208208
MLX4_DEV_CAP_FLAG2_FLOWSTATS_EN = 1LL << 24,
209209
MLX4_DEV_CAP_FLAG2_QOS_VPP = 1LL << 25,
210+
MLX4_DEV_CAP_FLAG2_ETS_CFG = 1LL << 26,
210211
};
211212

212213
enum {

0 commit comments

Comments
 (0)