diff options
author | Jeff Garzik <jeff@garzik.org> | 2007-09-25 00:14:03 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-09-25 00:14:03 -0400 |
commit | 402c79fb1944c8e003a32d07f31504b769fe2b52 (patch) | |
tree | e4f136b6a452e76ef016c1fd35d76238487d90d5 /drivers/net | |
parent | 21c0f275085e5b884a409d75a7deb73ece6477fb (diff) | |
parent | d78ae2dcc2acebb9a1048278f47f762c069db75c (diff) |
Merge branch 'r8169-for-jeff-20070919' of git://electric-eye.fr.zoreil.com/home/romieu/linux-2.6 into tmp
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/r8169.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index b85ab4a8f2a3..c921ec32c232 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c @@ -1228,7 +1228,10 @@ static void rtl8169_hw_phy_config(struct net_device *dev) return; } - /* phy config for RTL8169s mac_version C chip */ + if ((tp->mac_version != RTL_GIGA_MAC_VER_02) && + (tp->mac_version != RTL_GIGA_MAC_VER_03)) + return; + mdio_write(ioaddr, 31, 0x0001); //w 31 2 0 1 mdio_write(ioaddr, 21, 0x1000); //w 21 15 0 1000 mdio_write(ioaddr, 24, 0x65c7); //w 24 15 0 65c7 @@ -2567,6 +2570,15 @@ static void rtl8169_tx_interrupt(struct net_device *dev, (TX_BUFFS_AVAIL(tp) >= MAX_SKB_FRAGS)) { netif_wake_queue(dev); } + /* + * 8168 hack: TxPoll requests are lost when the Tx packets are + * too close. Let's kick an extra TxPoll request when a burst + * of start_xmit activity is detected (if it is not detected, + * it is slow enough). -- FR + */ + smp_rmb(); + if (tp->cur_tx != dirty_tx) + RTL_W8(TxPoll, NPQ); } } |