Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d78ae2dcc2acebb9a1048278f47f762c069db75c
Commit:     d78ae2dcc2acebb9a1048278f47f762c069db75c
Parent:     65d916d95314566f426cc40ff0f17b754a773b0b
Author:     Francois Romieu <[EMAIL PROTECTED]>
AuthorDate: Sun Aug 26 20:08:19 2007 +0200
Committer:  Francois Romieu <[EMAIL PROTECTED]>
CommitDate: Wed Sep 19 21:52:18 2007 +0200

    r8169: workaround against ignored TxPoll writes (8168)
    
    The 8168 ignores the requests to fetch the Tx descriptors when
    the relevant TxPoll bit is already set. It easily kills the
    performances of the 8168. David Gundersen has noticed that it
    is enough to wait for the completion of the DMA transfer (NPQ
    bit is cleared) before writing the TxPoll register again.
    
    The extra IO traffic added by the proposed workaround could be
    minimalized but it is not a high-priority task.
    
    Fix for:
    http://bugzilla.kernel.org/show_bug.cgi?id=7924
    http://bugzilla.kernel.org/show_bug.cgi?id=8688
    (http://bugzilla.kernel.org/show_bug.cgi?id=7555 ?)
    
    Signed-off-by: Francois Romieu <[EMAIL PROTECTED]>
    Cc: David Gundersen <[EMAIL PROTECTED]>
    Cc: Edward Hsu <[EMAIL PROTECTED]>
---
 drivers/net/r8169.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index d9bb51b..c921ec3 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -2570,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);
        }
 }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to