|
@@ -3100,11 +3100,12 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
|
|
|
|
|
|
if (!sg && !nskb->remcsum_offload) {
|
|
|
nskb->ip_summed = CHECKSUM_NONE;
|
|
|
- nskb->csum = skb_copy_and_csum_bits(head_skb, offset,
|
|
|
- skb_put(nskb, len),
|
|
|
- len, 0);
|
|
|
+ SKB_GSO_CB(nskb)->csum =
|
|
|
+ skb_copy_and_csum_bits(head_skb, offset,
|
|
|
+ skb_put(nskb, len),
|
|
|
+ len, 0);
|
|
|
SKB_GSO_CB(nskb)->csum_start =
|
|
|
- skb_headroom(nskb) + doffset;
|
|
|
+ skb_headroom(nskb) + doffset;
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -3171,11 +3172,12 @@ skip_fraglist:
|
|
|
|
|
|
perform_csum_check:
|
|
|
if (!csum && !nskb->remcsum_offload) {
|
|
|
- nskb->csum = skb_checksum(nskb, doffset,
|
|
|
- nskb->len - doffset, 0);
|
|
|
nskb->ip_summed = CHECKSUM_NONE;
|
|
|
+ SKB_GSO_CB(nskb)->csum =
|
|
|
+ skb_checksum(nskb, doffset,
|
|
|
+ nskb->len - doffset, 0);
|
|
|
SKB_GSO_CB(nskb)->csum_start =
|
|
|
- skb_headroom(nskb) + doffset;
|
|
|
+ skb_headroom(nskb) + doffset;
|
|
|
}
|
|
|
} while ((offset += len) < head_skb->len);
|
|
|
|