Driver patch to look at...

Randy Stewart randall at lakerest.net
Mon Feb 4 18:28:37 UTC 2013


I am beating the heck out of it on my 9.x testbed where I lifted it from.

I don't have any ix or ixgbe cards to play with yet though..

R
On Feb 4, 2013, at 1:11 PM, Jack Vogel wrote:

> 
> 
> On Mon, Feb 4, 2013 at 9:22 AM, Randy Stewart <randall at lakerest.net> wrote:
> All:
> 
> I have been working with TCP in gigabit networks (igb driver actually) and have
> found a very nasty problem with the way the driver is doing its put back when
> it fills the out-bound transmit queue.
> 
> Basically it has taken a packet from the head of the ring buffer, and then
> realizes it can't fit it into the transmit queue. So it just re-enqueue's it
> into the ring buffer. Whats wrong with that? Well most of the time there
> are anywhere from 10-50 packets (maybe more) in that ring buffer when you are
> operating at full speed (or trying to). This means you will see 10 duplicate
> ACKs, do a fast retransmit and cut your cwnd in half.. not very nice actually.
> 
> The patch I have attached makes it so that
> 
> 1) There are ways to swap back.
> 2) Use the peek in the ring buffer and only
>    dequeue the packet if we put it into the transmit ring
> 3) If something goes wrong and the transmit frees the packet we dequeue it.
> 4) If the transmit changed it (defrag etc) then swap out the new mbuf that
>    has taken its place.
> 
> I have fixed the four intel drivers that had this systemic issue, but there
> are still more to fix.
> 
> Comments/review .. rotten egg's etc.. would be most welcome before
> I commit this..
> 
> Jack are you out there?
> 
> 
> Yes, I'm usually perceived as being 'out there' :)  If you had addressed it to 'jfv' rather than 'jv' it would have worked better.
> 
> I have no theoretical objection to this, how much testing has it had?
> 
> Jack
> 

-----
Randall Stewart
randall at lakerest.net






More information about the freebsd-net mailing list