projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] zd1211rw: Add ID for Planex GW-US54Mini
[powerpc.git]
/
drivers
/
net
/
b44.c
diff --git
a/drivers/net/b44.c
b/drivers/net/b44.c
index
17eb291
..
474a4e3
100644
(file)
--- a/
drivers/net/b44.c
+++ b/
drivers/net/b44.c
@@
-896,7
+896,7
@@
static int b44_poll(struct net_device *netdev, int *budget)
return (done ? 0 : 1);
}
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);
{
struct net_device *dev = dev_id;
struct b44 *bp = netdev_priv(dev);
@@
-908,8
+908,9
@@
static irqreturn_t b44_interrupt(int irq, void *dev_id, struct pt_regs *regs)
istat = br32(bp, B44_ISTAT);
imask = br32(bp, B44_IMASK);
istat = br32(bp, B44_ISTAT);
imask = br32(bp, B44_IMASK);
- /* ??? What the fuck is the purpose of the interrupt mask
- * ??? register if we have to mask it out by hand anyways?
+ /* The interrupt mask register controls which interrupt bits
+ * will actually raise an interrupt to the CPU when set by hw/firmware,
+ * but doesn't mask off the bits.
*/
istat &= imask;
if (istat) {
*/
istat &= imask;
if (istat) {
@@
-1461,7
+1462,7
@@
out:
static void b44_poll_controller(struct net_device *dev)
{
disable_irq(dev->irq);
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
enable_irq(dev->irq);
}
#endif
@@
-1706,14
+1707,15
@@
static void __b44_set_rx_mode(struct net_device *dev)
__b44_set_mac_addr(bp);
__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);
val |= RXCONFIG_ALLMULTI;
else
i = __b44_load_mcast(bp, dev);
- for (; i < 64; i++)
{
+ for (; i < 64; i++)
__b44_cam_write(bp, zero, 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);
bw32(bp, B44_RXCONFIG, val);
val = br32(bp, B44_CAM_CTRL);
bw32(bp, B44_CAM_CTRL, val | CAM_CTRL_ENABLE);
@@
-2012,7
+2014,7
@@
static int b44_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
return 0;
}
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,
.get_drvinfo = b44_get_drvinfo,
.get_settings = b44_get_settings,
.set_settings = b44_set_settings,
@@
-2055,7
+2057,7
@@
static int b44_read_eeprom(struct b44 *bp, u8 *data)
u16 *ptr = (u16 *) data;
for (i = 0; i < 128; i += 2)
u16 *ptr = (u16 *) data;
for (i = 0; i < 128; i += 2)
- ptr[i / 2] =
readw(bp->regs + 4096 + i
);
+ ptr[i / 2] =
cpu_to_le16(readw(bp->regs + 4096 + i)
);
return 0;
}
return 0;
}