|
@@ -1970,6 +1970,9 @@ __orinoco_set_multicast_list(struct net_device *dev)
|
|
priv->promiscuous = promisc;
|
|
priv->promiscuous = promisc;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /* If we're not in promiscuous mode, then we need to set the
|
|
|
|
+ * group address if either we want to multicast, or if we were
|
|
|
|
+ * multicasting and want to stop */
|
|
if (! promisc && (mc_count || priv->mc_count) ) {
|
|
if (! promisc && (mc_count || priv->mc_count) ) {
|
|
struct dev_mc_list *p = dev->mc_list;
|
|
struct dev_mc_list *p = dev->mc_list;
|
|
struct hermes_multicast mclist;
|
|
struct hermes_multicast mclist;
|
|
@@ -1989,9 +1992,10 @@ __orinoco_set_multicast_list(struct net_device *dev)
|
|
printk(KERN_WARNING "%s: Multicast list is "
|
|
printk(KERN_WARNING "%s: Multicast list is "
|
|
"longer than mc_count\n", dev->name);
|
|
"longer than mc_count\n", dev->name);
|
|
|
|
|
|
- err = hermes_write_ltv(hw, USER_BAP, HERMES_RID_CNFGROUPADDRESSES,
|
|
|
|
- HERMES_BYTES_TO_RECLEN(priv->mc_count * ETH_ALEN),
|
|
|
|
- &mclist);
|
|
|
|
|
|
+ err = hermes_write_ltv(hw, USER_BAP,
|
|
|
|
+ HERMES_RID_CNFGROUPADDRESSES,
|
|
|
|
+ HERMES_BYTES_TO_RECLEN(mc_count * ETH_ALEN),
|
|
|
|
+ &mclist);
|
|
if (err)
|
|
if (err)
|
|
printk(KERN_ERR "%s: Error %d setting multicast list.\n",
|
|
printk(KERN_ERR "%s: Error %d setting multicast list.\n",
|
|
dev->name, err);
|
|
dev->name, err);
|