diff options
Diffstat (limited to 'drivers/net/forcedeth.c')
-rw-r--r-- | drivers/net/forcedeth.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index ca05e5662029..6a2b64f0a7db 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c | |||
@@ -3103,12 +3103,14 @@ static void nv_set_multicast(struct net_device *dev) | |||
3103 | if (dev->flags & IFF_ALLMULTI) { | 3103 | if (dev->flags & IFF_ALLMULTI) { |
3104 | alwaysOn[0] = alwaysOn[1] = alwaysOff[0] = alwaysOff[1] = 0; | 3104 | alwaysOn[0] = alwaysOn[1] = alwaysOff[0] = alwaysOff[1] = 0; |
3105 | } else { | 3105 | } else { |
3106 | struct dev_mc_list *walk; | 3106 | struct netdev_hw_addr *ha; |
3107 | 3107 | ||
3108 | netdev_for_each_mc_addr(walk, dev) { | 3108 | netdev_for_each_mc_addr(ha, dev) { |
3109 | unsigned char *addr = ha->addr; | ||
3109 | u32 a, b; | 3110 | u32 a, b; |
3110 | a = le32_to_cpu(*(__le32 *) walk->dmi_addr); | 3111 | |
3111 | b = le16_to_cpu(*(__le16 *) (&walk->dmi_addr[4])); | 3112 | a = le32_to_cpu(*(__le32 *) addr); |
3113 | b = le16_to_cpu(*(__le16 *) (&addr[4])); | ||
3112 | alwaysOn[0] &= a; | 3114 | alwaysOn[0] &= a; |
3113 | alwaysOff[0] &= ~a; | 3115 | alwaysOff[0] &= ~a; |
3114 | alwaysOn[1] &= b; | 3116 | alwaysOn[1] &= b; |