Ananda Raju <[EMAIL PROTECTED]> wrote:
>        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.

Thanks, looks good over all.
 
>        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

This bit is wrong though.  TCPv4 and TCPv6 packets can't share the same
GSO feature bit.  The reason is that GSO/TSO is no longer just activated
by dev->features.  Bridges can forward GSO/TSO packets through at any time.
This is why it is crucial that each packet specficies exactly the features
that it requires from the hardware.

For UFO, it's OK to have just SKB_GSO_UDP since IIRC your card is the only
one that supports it and it supports both protocols anyway.

> diff -upNr netdev.org/include/linux/skbuff.h 
> netdev.ipv6_tso/include/linux/skbuff.h
> --- netdev.org/include/linux/skbuff.h   2006-06-27 07:30:36.000000000 -0700
> +++ netdev.ipv6_tso/include/linux/skbuff.h      2006-06-27 07:38:48.000000000 
> -0700
> @@ -170,8 +170,9 @@ enum {
> };
> 
> enum {
> -       SKB_GSO_TCPV4 = 1 << 0,
> -       SKB_GSO_UDPV4 = 1 << 1,
> +       SKB_GSO_TCP = 1 << 0,
> +       SKB_GSO_UDP = 1 << 1,
> +       SKB_GSO_TCPV6 = 1 << 2,
> };

BTW, you should rediff against Dave's current tree which has a few
extra bits there.

You should also leave TCPV4 as is and just add the TCPV6 bit.
 
> diff -upNr netdev.org/net/ipv4/tcp_output.c 
> netdev.ipv6_tso/net/ipv4/tcp_output.c
> --- netdev.org/net/ipv4/tcp_output.c    2006-06-27 07:30:36.000000000 -0700
> +++ netdev.ipv6_tso/net/ipv4/tcp_output.c       2006-06-27 07:38:48.000000000 
> -0700
> @@ -525,7 +525,7 @@ static void tcp_set_skb_tso_segs(struct 
>                factor /= mss_now;
>                skb_shinfo(skb)->gso_segs = factor;
>                skb_shinfo(skb)->gso_size = mss_now;
> -               skb_shinfo(skb)->gso_type = SKB_GSO_TCPV4;
> +               skb_shinfo(skb)->gso_type = SKB_GSO_TCP;

You need to set SKB_GSO_TCPV6 for IPv6 packets here.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to