[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20070409.115921.45202402.davem@davemloft.net>
Date: Mon, 09 Apr 2007 11:59:21 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: herbert@...dor.apana.org.au
Cc: netdev@...r.kernel.org
Subject: Re: [NET]: Use csum_start offset instead of skb_transport_header
From: Herbert Xu <herbert@...dor.apana.org.au>
Date: Wed, 4 Apr 2007 12:05:30 +1000
> Hi Dave:
>
> I've finally managed to kill the Xen csum_blank/proto_data_valid hack.
> In the process I needed to make two more changes to Linux. Here are
> the patches against net-2.6.22.
>
> [NET]: Use csum_start offset instead of skb_transport_header
>
> The skb transport pointer is currently used to specify the start
> of the checksum region for transmit checksum offload. Unfortunately,
> the same pointer is also used during receive side processing.
>
> This creates a problem when we want to retransmit a received
> packet with partial checksums since the skb transport pointer
> would be overwritten.
>
> This patch solves this problem by creating a new 16-bit csum_start
> offset value to replace the skb transport header for the purpose
> of checksums. This offset is calculated from skb->head so that
> it does not have to change when skb->data changes.
>
> No extra space is required since csum_offset itself fits within
> a 16-bit word so we can use the other 16 bits for csum_start.
>
> For backwards compatibility, just before we push a packet with
> partial checksums off into the device driver, we set the skb
> transport header to what it would have been under the old scheme.
>
> Signed-off-by: Herbert Xu <herbert@...dor.apana.org.au>
Applied, nice work Herbert.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists