diff options
Diffstat (limited to 'drivers/net/wireless/orinoco.c')
-rw-r--r-- | drivers/net/wireless/orinoco.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c index 6a196c31de43..ec0451cbb8e1 100644 --- a/drivers/net/wireless/orinoco.c +++ b/drivers/net/wireless/orinoco.c | |||
@@ -2833,6 +2833,9 @@ __orinoco_set_multicast_list(struct net_device *dev) | |||
2833 | priv->promiscuous = promisc; | 2833 | priv->promiscuous = promisc; |
2834 | } | 2834 | } |
2835 | 2835 | ||
2836 | /* If we're not in promiscuous mode, then we need to set the | ||
2837 | * group address if either we want to multicast, or if we were | ||
2838 | * multicasting and want to stop */ | ||
2836 | if (! promisc && (mc_count || priv->mc_count) ) { | 2839 | if (! promisc && (mc_count || priv->mc_count) ) { |
2837 | struct dev_mc_list *p = dev->mc_list; | 2840 | struct dev_mc_list *p = dev->mc_list; |
2838 | struct hermes_multicast mclist; | 2841 | struct hermes_multicast mclist; |
@@ -2852,9 +2855,10 @@ __orinoco_set_multicast_list(struct net_device *dev) | |||
2852 | printk(KERN_WARNING "%s: Multicast list is " | 2855 | printk(KERN_WARNING "%s: Multicast list is " |
2853 | "longer than mc_count\n", dev->name); | 2856 | "longer than mc_count\n", dev->name); |
2854 | 2857 | ||
2855 | err = hermes_write_ltv(hw, USER_BAP, HERMES_RID_CNFGROUPADDRESSES, | 2858 | err = hermes_write_ltv(hw, USER_BAP, |
2856 | HERMES_BYTES_TO_RECLEN(priv->mc_count * ETH_ALEN), | 2859 | HERMES_RID_CNFGROUPADDRESSES, |
2857 | &mclist); | 2860 | HERMES_BYTES_TO_RECLEN(mc_count * ETH_ALEN), |
2861 | &mclist); | ||
2858 | if (err) | 2862 | if (err) |
2859 | printk(KERN_ERR "%s: Error %d setting multicast list.\n", | 2863 | printk(KERN_ERR "%s: Error %d setting multicast list.\n", |
2860 | dev->name, err); | 2864 | dev->name, err); |