diff options
author | Padmanabh Ratnakar <padmanabh.ratnakar@emulex.com> | 2012-07-18 02:51:58 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-18 09:28:38 -0700 |
commit | 0b13fb458fe6d244baaa701049c9a51105224820 (patch) | |
tree | 9f00d7b106586938b5acf9c3f8d7431cc55647ce /drivers/net/ethernet/emulex | |
parent | c3fe065cea56f1fcd4f8e4ae1fb15fa785d2bb79 (diff) | |
download | linux-stable-0b13fb458fe6d244baaa701049c9a51105224820.tar.gz linux-stable-0b13fb458fe6d244baaa701049c9a51105224820.tar.bz2 linux-stable-0b13fb458fe6d244baaa701049c9a51105224820.zip |
be2net: Fix VF driver load for Lancer
Lancer FW has added new capability checks for VFs.
Driver should only use those capabilities which are allowed for VFs.
Signed-off-by: Padmanabh Ratnakar <padmanabh.ratnakar@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/emulex')
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_cmds.c | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 7 |
2 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c index ddfca658559d..793249053066 100644 --- a/drivers/net/ethernet/emulex/benet/be_cmds.c +++ b/drivers/net/ethernet/emulex/benet/be_cmds.c @@ -1631,7 +1631,8 @@ int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 value) /* Reset mcast promisc mode if already set by setting mask * and not setting flags field */ - req->if_flags_mask |= + if (!lancer_chip(adapter) || be_physfn(adapter)) + req->if_flags_mask |= cpu_to_le32(BE_IF_FLAGS_MCAST_PROMISCUOUS); req->mcast_num = cpu_to_le32(netdev_mc_count(adapter->netdev)); diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index f18375cd75ee..4d9677174490 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c @@ -2772,6 +2772,13 @@ static int be_setup(struct be_adapter *adapter) en_flags |= BE_IF_FLAGS_RSS; } + if (lancer_chip(adapter) && !be_physfn(adapter)) { + en_flags = BE_IF_FLAGS_UNTAGGED | + BE_IF_FLAGS_BROADCAST | + BE_IF_FLAGS_MULTICAST; + cap_flags = en_flags; + } + status = be_cmd_if_create(adapter, cap_flags, en_flags, &adapter->if_handle, 0); if (status != 0) |