be2net: fix multicast filter programming
Re-posting with subject fixed!
Multicast programming has been broken since commit 5b8821b7
. Setting the
MULTICAST flag while sending the cmd to the FW was missing. Fixed this.
Also fixed-up some indentation in the adjacent lines.
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
4de075e043
commit
8e7d3f681e
@@ -1580,14 +1580,16 @@ int be_cmd_rx_filter(struct be_adapter *adapter, u32 flags, u32 value)
|
|||||||
BE_IF_FLAGS_VLAN_PROMISCUOUS);
|
BE_IF_FLAGS_VLAN_PROMISCUOUS);
|
||||||
if (value == ON)
|
if (value == ON)
|
||||||
req->if_flags = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS |
|
req->if_flags = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS |
|
||||||
BE_IF_FLAGS_VLAN_PROMISCUOUS);
|
BE_IF_FLAGS_VLAN_PROMISCUOUS);
|
||||||
} else if (flags & IFF_ALLMULTI) {
|
} else if (flags & IFF_ALLMULTI) {
|
||||||
req->if_flags_mask = req->if_flags =
|
req->if_flags_mask = req->if_flags =
|
||||||
cpu_to_le32(BE_IF_FLAGS_MCAST_PROMISCUOUS);
|
cpu_to_le32(BE_IF_FLAGS_MCAST_PROMISCUOUS);
|
||||||
} else {
|
} else {
|
||||||
struct netdev_hw_addr *ha;
|
struct netdev_hw_addr *ha;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
|
req->if_flags_mask = req->if_flags =
|
||||||
|
cpu_to_le32(BE_IF_FLAGS_MULTICAST);
|
||||||
req->mcast_num = cpu_to_le16(netdev_mc_count(adapter->netdev));
|
req->mcast_num = cpu_to_le16(netdev_mc_count(adapter->netdev));
|
||||||
netdev_for_each_mc_addr(ha, adapter->netdev)
|
netdev_for_each_mc_addr(ha, adapter->netdev)
|
||||||
memcpy(req->mcast_mac[i++].byte, ha->addr, ETH_ALEN);
|
memcpy(req->mcast_mac[i++].byte, ha->addr, ETH_ALEN);
|
||||||
|
Reference in New Issue
Block a user