diff options
Diffstat (limited to 'drivers/net/ethernet/emulex/benet/be_main.c')
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 29e7870e0b35..858bb473bd42 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
@@ -2880,6 +2880,7 @@ static int be_vf_setup(struct be_adapter *adapter) | |||
2880 | u16 def_vlan, lnk_speed; | 2880 | u16 def_vlan, lnk_speed; |
2881 | int status, old_vfs, vf; | 2881 | int status, old_vfs, vf; |
2882 | struct device *dev = &adapter->pdev->dev; | 2882 | struct device *dev = &adapter->pdev->dev; |
2883 | u32 privileges; | ||
2883 | 2884 | ||
2884 | old_vfs = pci_num_vf(adapter->pdev); | 2885 | old_vfs = pci_num_vf(adapter->pdev); |
2885 | if (old_vfs) { | 2886 | if (old_vfs) { |
@@ -2923,6 +2924,18 @@ static int be_vf_setup(struct be_adapter *adapter) | |||
2923 | } | 2924 | } |
2924 | 2925 | ||
2925 | for_all_vfs(adapter, vf_cfg, vf) { | 2926 | for_all_vfs(adapter, vf_cfg, vf) { |
2927 | /* Allow VFs to programs MAC/VLAN filters */ | ||
2928 | status = be_cmd_get_fn_privileges(adapter, &privileges, vf + 1); | ||
2929 | if (!status && !(privileges & BE_PRIV_FILTMGMT)) { | ||
2930 | status = be_cmd_set_fn_privileges(adapter, | ||
2931 | privileges | | ||
2932 | BE_PRIV_FILTMGMT, | ||
2933 | vf + 1); | ||
2934 | if (!status) | ||
2935 | dev_info(dev, "VF%d has FILTMGMT privilege\n", | ||
2936 | vf); | ||
2937 | } | ||
2938 | |||
2926 | /* BE3 FW, by default, caps VF TX-rate to 100mbps. | 2939 | /* BE3 FW, by default, caps VF TX-rate to 100mbps. |
2927 | * Allow full available bandwidth | 2940 | * Allow full available bandwidth |
2928 | */ | 2941 | */ |