diff options
author | Jeff Garzik <jeff@garzik.org> | 2007-08-07 17:28:23 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-08-07 17:28:23 -0400 |
commit | c21723edd5f6c288ab613ed658b7140e07fc7209 (patch) | |
tree | 313bd1e38f290c988e8ebb468365d9299001a2fb /drivers/net/r8169.c | |
parent | 9b7530c83d04da28fdded741e718721d509c74b1 (diff) | |
parent | 313b0305b5a1e7e0fb39383befbf79558ce68a9c (diff) | |
download | op-kernel-dev-c21723edd5f6c288ab613ed658b7140e07fc7209.zip op-kernel-dev-c21723edd5f6c288ab613ed658b7140e07fc7209.tar.gz |
Merge branch 'r8169-for-jeff-20070806' of git://electric-eye.fr.zoreil.com/home/romieu/linux-2.6 into upstream-fixes
Diffstat (limited to 'drivers/net/r8169.c')
-rw-r--r-- | drivers/net/r8169.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index c9333b9..b85ab4a 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c @@ -725,6 +725,12 @@ static int rtl8169_set_speed_xmii(struct net_device *dev, auto_nego |= ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM; + if (tp->mac_version == RTL_GIGA_MAC_VER_12) { + /* Vendor specific (0x1f) and reserved (0x0e) MII registers. */ + mdio_write(ioaddr, 0x1f, 0x0000); + mdio_write(ioaddr, 0x0e, 0x0000); + } + tp->phy_auto_nego_reg = auto_nego; tp->phy_1000_ctrl_reg = giga_ctrl; @@ -2760,14 +2766,16 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance) rtl8169_check_link_status(dev, tp, ioaddr); #ifdef CONFIG_R8169_NAPI - RTL_W16(IntrMask, tp->intr_event & ~tp->napi_event); - tp->intr_mask = ~tp->napi_event; - - if (likely(netif_rx_schedule_prep(dev))) - __netif_rx_schedule(dev); - else if (netif_msg_intr(tp)) { - printk(KERN_INFO "%s: interrupt %04x taken in poll\n", - dev->name, status); + if (status & tp->napi_event) { + RTL_W16(IntrMask, tp->intr_event & ~tp->napi_event); + tp->intr_mask = ~tp->napi_event; + + if (likely(netif_rx_schedule_prep(dev))) + __netif_rx_schedule(dev); + else if (netif_msg_intr(tp)) { + printk(KERN_INFO "%s: interrupt %04x in poll\n", + dev->name, status); + } } break; #else |