aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/fw.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/fw.c b/drivers/net/ethernet/mellanox/mlx4/fw.c
index 4251f81a0275..5089f76f060b 100644
--- a/drivers/net/ethernet/mellanox/mlx4/fw.c
+++ b/drivers/net/ethernet/mellanox/mlx4/fw.c
@@ -973,6 +973,10 @@ out:
973 return err; 973 return err;
974} 974}
975 975
976#define DEV_CAP_EXT_2_FLAG_VLAN_CONTROL (1 << 26)
977#define DEV_CAP_EXT_2_FLAG_80_VFS (1 << 21)
978#define DEV_CAP_EXT_2_FLAG_FSM (1 << 20)
979
976int mlx4_QUERY_DEV_CAP_wrapper(struct mlx4_dev *dev, int slave, 980int mlx4_QUERY_DEV_CAP_wrapper(struct mlx4_dev *dev, int slave,
977 struct mlx4_vhcr *vhcr, 981 struct mlx4_vhcr *vhcr,
978 struct mlx4_cmd_mailbox *inbox, 982 struct mlx4_cmd_mailbox *inbox,
@@ -982,7 +986,7 @@ int mlx4_QUERY_DEV_CAP_wrapper(struct mlx4_dev *dev, int slave,
982 u64 flags; 986 u64 flags;
983 int err = 0; 987 int err = 0;
984 u8 field; 988 u8 field;
985 u32 bmme_flags; 989 u32 bmme_flags, field32;
986 int real_port; 990 int real_port;
987 int slave_port; 991 int slave_port;
988 int first_port; 992 int first_port;
@@ -1053,6 +1057,12 @@ int mlx4_QUERY_DEV_CAP_wrapper(struct mlx4_dev *dev, int slave,
1053 field &= ~0x80; 1057 field &= ~0x80;
1054 MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_FLOW_STEERING_IPOIB_OFFSET); 1058 MLX4_PUT(outbox->buf, field, QUERY_DEV_CAP_FLOW_STEERING_IPOIB_OFFSET);
1055 1059
1060 /* turn off host side virt features (VST, FSM, etc) for guests */
1061 MLX4_GET(field32, outbox->buf, QUERY_DEV_CAP_EXT_2_FLAGS_OFFSET);
1062 field32 &= ~(DEV_CAP_EXT_2_FLAG_VLAN_CONTROL | DEV_CAP_EXT_2_FLAG_80_VFS |
1063 DEV_CAP_EXT_2_FLAG_FSM);
1064 MLX4_PUT(outbox->buf, field32, QUERY_DEV_CAP_EXT_2_FLAGS_OFFSET);
1065
1056 return 0; 1066 return 0;
1057} 1067}
1058 1068