Merge branch 'master' into upstream-fixes
[sfrench/cifs-2.6.git] / drivers / net / b44.c
index 17eb2912971d4b9bc791bdf4d28af4c07f24773c..ebb726e655ac4fcace80a79e6ad5da46e2dcbf33 100644 (file)
@@ -896,7 +896,7 @@ static int b44_poll(struct net_device *netdev, int *budget)
        return (done ? 0 : 1);
 }
 
-static irqreturn_t b44_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t b44_interrupt(int irq, void *dev_id)
 {
        struct net_device *dev = dev_id;
        struct b44 *bp = netdev_priv(dev);
@@ -1461,7 +1461,7 @@ out:
 static void b44_poll_controller(struct net_device *dev)
 {
        disable_irq(dev->irq);
-       b44_interrupt(dev->irq, dev, NULL);
+       b44_interrupt(dev->irq, dev);
        enable_irq(dev->irq);
 }
 #endif
@@ -1706,14 +1706,15 @@ static void __b44_set_rx_mode(struct net_device *dev)
 
                __b44_set_mac_addr(bp);
 
-               if (dev->flags & IFF_ALLMULTI)
+               if ((dev->flags & IFF_ALLMULTI) ||
+                   (dev->mc_count > B44_MCAST_TABLE_SIZE))
                        val |= RXCONFIG_ALLMULTI;
                else
                        i = __b44_load_mcast(bp, dev);
 
-               for (; i < 64; i++) {
+               for (; i < 64; i++)
                        __b44_cam_write(bp, zero, i);
-               }
+
                bw32(bp, B44_RXCONFIG, val);
                val = br32(bp, B44_CAM_CTRL);
                bw32(bp, B44_CAM_CTRL, val | CAM_CTRL_ENABLE);
@@ -2012,7 +2013,7 @@ static int b44_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
        return 0;
 }
 
-static struct ethtool_ops b44_ethtool_ops = {
+static const struct ethtool_ops b44_ethtool_ops = {
        .get_drvinfo            = b44_get_drvinfo,
        .get_settings           = b44_get_settings,
        .set_settings           = b44_set_settings,