be2net: Fix to receive Multicast Packets when Promiscuous mode is enabled on certain...
authorAjit Khaparde <ajit.khaparde@emulex.com>
Wed, 1 May 2013 09:38:24 +0000 (09:38 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 2 May 2013 20:43:13 +0000 (16:43 -0400)
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>
drivers/net/ethernet/emulex/benet/be_cmds.c

index 6d848b6..180c3b7 100644 (file)
@@ -1764,10 +1764,12 @@ int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 value)
        req->if_id = cpu_to_le32(adapter->if_handle);
        if (flags & IFF_PROMISC) {
                req->if_flags_mask = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS |
-                                       BE_IF_FLAGS_VLAN_PROMISCUOUS);
+                                       BE_IF_FLAGS_VLAN_PROMISCUOUS |
+                                       BE_IF_FLAGS_MCAST_PROMISCUOUS);
                if (value == ON)
                        req->if_flags = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS |
-                                               BE_IF_FLAGS_VLAN_PROMISCUOUS);
+                                               BE_IF_FLAGS_VLAN_PROMISCUOUS |
+                                               BE_IF_FLAGS_MCAST_PROMISCUOUS);
        } else if (flags & IFF_ALLMULTI) {
                req->if_flags_mask = req->if_flags =
                                cpu_to_le32(BE_IF_FLAGS_MCAST_PROMISCUOUS);