aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOr Gerlitz <ogerlitz@mellanox.com>2014-12-11 03:57:52 -0500
committerDavid S. Miller <davem@davemloft.net>2014-12-11 14:47:34 -0500
commit383677da43fa83b390888cf7d25885166b2a6812 (patch)
tree43bb00eb3d7c54d9d8e3df7d7a11be9103cf9cf4
parentc58942f25232f8f0c8a6c8b803f31c7532cf2c3b (diff)
net/mlx4_core: Mask out host side virtualization features for guests
When VFs (guests in this context) issue the QUERY_DEV_CAP command, they need not be told that host side virtualization features such as VST, FSM (MAC anti-spoofing) and running > 80 VFs are supported by the device. Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-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