• Herbert Xu's avatar
    [IPV6]: Added GSO support for TCPv6 · f83ef8c0
    Herbert Xu authored
    This patch adds GSO support for IPv6 and TCPv6.  This is based on a patch
    by Ananda Raju <Ananda.Raju@neterion.com>.  His original description is:
    
    	This patch enables TSO over IPv6. Currently Linux network stacks
    	restricts TSO over IPv6 by clearing of the NETIF_F_TSO bit from
    	"dev->features". This patch will remove this restriction.
    
    	This patch will introduce a new flag NETIF_F_TSO6 which will be used
    	to check whether device supports TSO over IPv6. If device support TSO
    	over IPv6 then we don't clear of NETIF_F_TSO and which will make the
    	TCP layer to create TSO packets. Any device supporting TSO over IPv6
    	will set NETIF_F_TSO6 flag in "dev->features" along with NETIF_F_TSO.
    
    	In case when user disables TSO using ethtool, NETIF_F_TSO will get
    	cleared from "dev->features". So even if we have NETIF_F_TSO6 we don't
    	get TSO packets created by TCP layer.
    
    	SKB_GSO_TCPV4 renamed to SKB_GSO_TCP to make it generic GSO packet.
    	SKB_GSO_UDPV4 renamed to SKB_GSO_UDP as UFO is not a IPv4 feature.
    	UFO is supported over IPv6 also
    
    	The following table shows there is significant improvement in
    	throughput with normal frames and CPU usage for both normal and jumbo.
    
    	--------------------------------------------------
    	|          |     1500        |      9600         |
    	|          ------------------|-------------------|
    	|          | thru     CPU    |  thru     CPU     |
    	--------------------------------------------------
    	| TSO OFF  | 2.00   5.5% id  |  5.66   20.0% id  |
    	--------------------------------------------------
    	| TSO ON   | 2.63   78.0 id  |  5.67   39.0% id  |
    	--------------------------------------------------
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f83ef8c0
s2io.c 214 KB