netdev
[Top] [All Lists]

Re: [PATCH,RFT] 8139cp TSO support

To: Francois Romieu <romieu@xxxxxxxxxxxxx>
Subject: Re: [PATCH,RFT] 8139cp TSO support
From: Jeff Garzik <jgarzik@xxxxxxxxx>
Date: Sun, 29 Aug 2004 19:02:17 -0400
Cc: netdev@xxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
In-reply-to: <20040829222831.GA9496@electric-eye.fr.zoreil.com>
References: <20040829212205.GA2864@havoc.gtf.org> <20040829222831.GA9496@electric-eye.fr.zoreil.com>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.2) Gecko/20040803
Francois Romieu wrote:
Jeff Garzik <jgarzik@xxxxxxxxx> :
[...]

Also, the r8169 implementation should be similar, if someone (Francois?)
wants to tackle it.


I'll copy and test it tomorrow on r8169 if nobody beats me.

On a related note, 8139cp probably wants something like the patch below for
the usual SG handling (on top of 2.6.9-rc1 + -mm1 + TSO patch):

- suspicious length in pci_unmap_single;
- wait for the last frag before freeing the relevant skb;
- no need to crash when facing some unexpected csum combination.

Looks OK except for


diff -puN drivers/net/8139cp.c~8139cp-010 drivers/net/8139cp.c
--- linux-2.6.9-rc1/drivers/net/8139cp.c~8139cp-010 2004-08-29 23:47:07.000000000 +0200
+++ linux-2.6.9-rc1-fr/drivers/net/8139cp.c 2004-08-30 00:16:13.000000000 +0200
@@ -807,7 +807,6 @@ static int cp_start_xmit (struct sk_buff
cp->tx_skb[entry].skb = skb;
cp->tx_skb[entry].mapping = mapping;
- cp->tx_skb[entry].frag = 0;
entry = NEXT_TX(entry);
} else {
struct cp_desc *txd;

You definitely want to set .len on the no-frags path...


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