diff options
author | Ajit Khaparde <ajit.khaparde@emulex.com> | 2013-05-01 05:38:24 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-05-02 16:43:13 -0400 |
commit | c5dae588fd6d5c6eceaf25fda4a78698d7ad888c (patch) | |
tree | f8345e32b69189388db60ba3ac6d45cae72e1dad /drivers/net/ethernet/emulex/benet/be_cmds.c | |
parent | b5adffc472243f6ce5adbeb946bd271c16b6ce2f (diff) |
be2net: Fix to receive Multicast Packets when Promiscuous mode is enabled on certain devices
When a user requests Promiscuous mode on SkyHawk-R devices,
the FW enables Desparate Promiscuous mode.
Due to this, we need to explicitly enable Multicast Promiscuous mode
so that Multicast packets are received as well.
This patch fixes that.
Signed-off-by: Ajit Khaparde <ajit.khaparde@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/emulex/benet/be_cmds.c')
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_cmds.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c index 6d848b607427..180c3b79f0b9 100644 --- a/drivers/net/ethernet/emulex/benet/be_cmds.c +++ b/drivers/net/ethernet/emulex/benet/be_cmds.c | |||
@@ -1764,10 +1764,12 @@ int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 value) | |||
1764 | req->if_id = cpu_to_le32(adapter->if_handle); | 1764 | req->if_id = cpu_to_le32(adapter->if_handle); |
1765 | if (flags & IFF_PROMISC) { | 1765 | if (flags & IFF_PROMISC) { |
1766 | req->if_flags_mask = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS | | 1766 | req->if_flags_mask = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS | |
1767 | BE_IF_FLAGS_VLAN_PROMISCUOUS); | 1767 | BE_IF_FLAGS_VLAN_PROMISCUOUS | |
1768 | BE_IF_FLAGS_MCAST_PROMISCUOUS); | ||
1768 | if (value == ON) | 1769 | if (value == ON) |
1769 | req->if_flags = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS | | 1770 | req->if_flags = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS | |
1770 | BE_IF_FLAGS_VLAN_PROMISCUOUS); | 1771 | BE_IF_FLAGS_VLAN_PROMISCUOUS | |
1772 | BE_IF_FLAGS_MCAST_PROMISCUOUS); | ||
1771 | } else if (flags & IFF_ALLMULTI) { | 1773 | } else if (flags & IFF_ALLMULTI) { |
1772 | req->if_flags_mask = req->if_flags = | 1774 | req->if_flags_mask = req->if_flags = |
1773 | cpu_to_le32(BE_IF_FLAGS_MCAST_PROMISCUOUS); | 1775 | cpu_to_le32(BE_IF_FLAGS_MCAST_PROMISCUOUS); |