diff options
Diffstat (limited to 'drivers/net/b44.c')
-rw-r--r-- | drivers/net/b44.c | 14 |
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 | } |