diff options
author | Or Gerlitz <ogerlitz@mellanox.com> | 2014-12-11 03:57:52 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-12-11 14:47:34 -0500 |
commit | 383677da43fa83b390888cf7d25885166b2a6812 (patch) | |
tree | 43bb00eb3d7c54d9d8e3df7d7a11be9103cf9cf4 | |
parent | c58942f25232f8f0c8a6c8b803f31c7532cf2c3b (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.c | 12 |
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 | |||
976 | int mlx4_QUERY_DEV_CAP_wrapper(struct mlx4_dev *dev, int slave, | 980 | int 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 | ||