netdev
[Top] [All Lists]

Re: [E1000-devel] Transmission limit

To: sfeldma@xxxxxxxxx
Subject: Re: [E1000-devel] Transmission limit
From: Robert Olsson <Robert.Olsson@xxxxxxxxxxx>
Date: Thu, 2 Dec 2004 19:23:24 +0100
Cc: Robert Olsson <Robert.Olsson@xxxxxxxxxxx>, Lennert Buytenhek <buytenh@xxxxxxxxxxxxxx>, jamal <hadi@xxxxxxxxxx>, P@xxxxxxxxxxxxxx, mellia@xxxxxxxxxxxxxxxxxxxx, e1000-devel@xxxxxxxxxxxxxxxxxxxxx, Jorge Manuel Finochietto <jorge.finochietto@xxxxxxxxx>, Giulio Galante <galante@xxxxxxxxx>, netdev@xxxxxxxxxxx
In-reply-to: <1101919791.5198.15.camel@xxxxxxxxxxxxxxxxxxxxx>
References: <1101467291.24742.70.camel@xxxxxxxxxxxxxxxxxxxxxx> <41A73826.3000109@xxxxxxxxxxxxxx> <16807.20052.569125.686158@xxxxxxxxxxxx> <1101484740.24742.213.camel@xxxxxxxxxxxxxxxxxxxxxx> <41A76085.7000105@xxxxxxxxxxxxxx> <1101499285.1079.45.camel@xxxxxxxxxxxxxxxx> <16811.8052.678955.795327@xxxxxxxxxxxx> <1101821501.1043.43.camel@xxxxxxxxxxxxxxxx> <20041130134600.GA31515@xxxxxxxxxxxxxxxxx> <1101824754.1044.126.camel@xxxxxxxxxxxxxxxx> <20041201001107.GE4203@xxxxxxxxxxxxxxxxx> <1101863399.4663.54.camel@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> <16813.58484.343629.570703@xxxxxxxxxxxx> <1101919791.5198.15.camel@xxxxxxxxxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
Hello!

Below is little patch to clean skb at xmit. It's old jungle trick Jamal
and I used w. tulip. Note we can now even decrease the size of TX ring.

It can increase TX performance from 800 kpps to
  1125128pps 576Mb/sec (576065536bps) errors: 0
  1124946pps 575Mb/sec (575972352bps) errors: 0

But suffers from scheduling problems as the previous patch. Often we just get
  582108pps 298Mb/sec (298039296bps) errors: 0

When the sender CPU free (it's) skb's. we might get some "TX free affinity"
which are unrelated to irq affinity of course not 100% perfect.
 
And some of Scotts may still be used. 

--- drivers/net/e1000/e1000.h.orig      2004-12-01 13:59:36.000000000 +0100
+++ drivers/net/e1000/e1000.h   2004-12-02 20:11:31.000000000 +0100
@@ -103,7 +103,7 @@
 #define E1000_MAX_INTR 10
 
 /* TX/RX descriptor defines */
-#define E1000_DEFAULT_TXD                  256
+#define E1000_DEFAULT_TXD                  128
 #define E1000_MAX_TXD                      256
 #define E1000_MIN_TXD                       80
 #define E1000_MAX_82544_TXD               4096
--- drivers/net/e1000/e1000_main.c.orig 2004-12-01 13:59:36.000000000 +0100
+++ drivers/net/e1000/e1000_main.c      2004-12-02 20:37:40.000000000 +0100
@@ -1820,6 +1820,10 @@
                return NETDEV_TX_LOCKED; 
        } 
 
+
+       if( adapter->tx_ring.next_to_use - adapter->tx_ring.next_to_clean > 80 )
+               e1000_clean_tx_ring(adapter);
+
        /* need: count + 2 desc gap to keep tail from touching
         * head, otherwise try next time */
        if(E1000_DESC_UNUSED(&adapter->tx_ring) < count + 2) {


                                                  --ro

<Prev in Thread] Current Thread [Next in Thread>