[NET]: Replace CHECKSUM_HW by CHECKSUM_PARTIAL/CHECKSUM_COMPLETE
Replace CHECKSUM_HW by CHECKSUM_PARTIAL (for outgoing packets, whose checksum still needs to be completed) and CHECKSUM_COMPLETE (for incoming packets, device supplied full checksum). Patch originally from Herbert Xu, updated by myself for 2.6.18-rc3. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
8584d6df39
commit
84fa7933a3
@@ -577,7 +577,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss
|
||||
TCP_SKB_CB(buff)->sacked = TCP_SKB_CB(skb)->sacked;
|
||||
TCP_SKB_CB(skb)->sacked &= ~TCPCB_AT_TAIL;
|
||||
|
||||
if (!skb_shinfo(skb)->nr_frags && skb->ip_summed != CHECKSUM_HW) {
|
||||
if (!skb_shinfo(skb)->nr_frags && skb->ip_summed != CHECKSUM_PARTIAL) {
|
||||
/* Copy and checksum data tail into the new buffer. */
|
||||
buff->csum = csum_partial_copy_nocheck(skb->data + len, skb_put(buff, nsize),
|
||||
nsize, 0);
|
||||
@@ -586,7 +586,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss
|
||||
|
||||
skb->csum = csum_block_sub(skb->csum, buff->csum, len);
|
||||
} else {
|
||||
skb->ip_summed = CHECKSUM_HW;
|
||||
skb->ip_summed = CHECKSUM_PARTIAL;
|
||||
skb_split(skb, buff, len);
|
||||
}
|
||||
|
||||
@@ -689,7 +689,7 @@ int tcp_trim_head(struct sock *sk, struct sk_buff *skb, u32 len)
|
||||
__pskb_trim_head(skb, len - skb_headlen(skb));
|
||||
|
||||
TCP_SKB_CB(skb)->seq += len;
|
||||
skb->ip_summed = CHECKSUM_HW;
|
||||
skb->ip_summed = CHECKSUM_PARTIAL;
|
||||
|
||||
skb->truesize -= len;
|
||||
sk->sk_wmem_queued -= len;
|
||||
@@ -1062,7 +1062,7 @@ static int tso_fragment(struct sock *sk, struct sk_buff *skb, unsigned int len,
|
||||
/* This packet was never sent out yet, so no SACK bits. */
|
||||
TCP_SKB_CB(buff)->sacked = 0;
|
||||
|
||||
buff->ip_summed = skb->ip_summed = CHECKSUM_HW;
|
||||
buff->ip_summed = skb->ip_summed = CHECKSUM_PARTIAL;
|
||||
skb_split(skb, buff, len);
|
||||
|
||||
/* Fix up tso_factor for both original and new SKB. */
|
||||
@@ -1206,8 +1206,7 @@ static int tcp_mtu_probe(struct sock *sk)
|
||||
TCP_SKB_CB(nskb)->flags = TCPCB_FLAG_ACK;
|
||||
TCP_SKB_CB(nskb)->sacked = 0;
|
||||
nskb->csum = 0;
|
||||
if (skb->ip_summed == CHECKSUM_HW)
|
||||
nskb->ip_summed = CHECKSUM_HW;
|
||||
nskb->ip_summed = skb->ip_summed;
|
||||
|
||||
len = 0;
|
||||
while (len < probe_size) {
|
||||
@@ -1231,7 +1230,7 @@ static int tcp_mtu_probe(struct sock *sk)
|
||||
~(TCPCB_FLAG_FIN|TCPCB_FLAG_PSH);
|
||||
if (!skb_shinfo(skb)->nr_frags) {
|
||||
skb_pull(skb, copy);
|
||||
if (skb->ip_summed != CHECKSUM_HW)
|
||||
if (skb->ip_summed != CHECKSUM_PARTIAL)
|
||||
skb->csum = csum_partial(skb->data, skb->len, 0);
|
||||
} else {
|
||||
__pskb_trim_head(skb, copy);
|
||||
@@ -1572,10 +1571,9 @@ static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *skb, int m
|
||||
|
||||
memcpy(skb_put(skb, next_skb_size), next_skb->data, next_skb_size);
|
||||
|
||||
if (next_skb->ip_summed == CHECKSUM_HW)
|
||||
skb->ip_summed = CHECKSUM_HW;
|
||||
skb->ip_summed = next_skb->ip_summed;
|
||||
|
||||
if (skb->ip_summed != CHECKSUM_HW)
|
||||
if (skb->ip_summed != CHECKSUM_PARTIAL)
|
||||
skb->csum = csum_block_add(skb->csum, next_skb->csum, skb_size);
|
||||
|
||||
/* Update sequence range on original skb. */
|
||||
|
Reference in New Issue
Block a user