aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/b44.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/b44.c')
-rw-r--r--drivers/net/b44.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/net/b44.c b/drivers/net/b44.c
index b124eee4eb10..474a4e3438db 100644
--- a/drivers/net/b44.c
+++ b/drivers/net/b44.c
@@ -908,8 +908,9 @@ static irqreturn_t b44_interrupt(int irq, void *dev_id)
908 istat = br32(bp, B44_ISTAT); 908 istat = br32(bp, B44_ISTAT);
909 imask = br32(bp, B44_IMASK); 909 imask = br32(bp, B44_IMASK);
910 910
911 /* ??? What the fuck is the purpose of the interrupt mask 911 /* The interrupt mask register controls which interrupt bits
912 * ??? register if we have to mask it out by hand anyways? 912 * will actually raise an interrupt to the CPU when set by hw/firmware,
913 * but doesn't mask off the bits.
913 */ 914 */
914 istat &= imask; 915 istat &= imask;
915 if (istat) { 916 if (istat) {
@@ -1706,14 +1707,15 @@ static void __b44_set_rx_mode(struct net_device *dev)
1706 1707
1707 __b44_set_mac_addr(bp); 1708 __b44_set_mac_addr(bp);
1708 1709
1709 if (dev->flags & IFF_ALLMULTI) 1710 if ((dev->flags & IFF_ALLMULTI) ||
1711 (dev->mc_count > B44_MCAST_TABLE_SIZE))
1710 val |= RXCONFIG_ALLMULTI; 1712 val |= RXCONFIG_ALLMULTI;
1711 else 1713 else
1712 i = __b44_load_mcast(bp, dev); 1714 i = __b44_load_mcast(bp, dev);
1713 1715
1714 for (; i < 64; i++) { 1716 for (; i < 64; i++)
1715 __b44_cam_write(bp, zero, i); 1717 __b44_cam_write(bp, zero, i);
1716 } 1718
1717 bw32(bp, B44_RXCONFIG, val); 1719 bw32(bp, B44_RXCONFIG, val);
1718 val = br32(bp, B44_CAM_CTRL); 1720 val = br32(bp, B44_CAM_CTRL);
1719 bw32(bp, B44_CAM_CTRL, val | CAM_CTRL_ENABLE); 1721 bw32(bp, B44_CAM_CTRL, val | CAM_CTRL_ENABLE);
@@ -2055,7 +2057,7 @@ static int b44_read_eeprom(struct b44 *bp, u8 *data)
2055 u16 *ptr = (u16 *) data; 2057 u16 *ptr = (u16 *) data;
2056 2058
2057 for (i = 0; i < 128; i += 2) 2059 for (i = 0; i < 128; i += 2)
2058 ptr[i / 2] = readw(bp->regs + 4096 + i); 2060 ptr[i / 2] = cpu_to_le16(readw(bp->regs + 4096 + i));
2059 2061
2060 return 0; 2062 return 0;
2061} 2063}