|
@@ -2256,14 +2256,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
|
|
|
segs = nskb;
|
|
|
tail = nskb;
|
|
|
|
|
|
- nskb->dev = skb->dev;
|
|
|
- skb_copy_queue_mapping(nskb, skb);
|
|
|
- nskb->priority = skb->priority;
|
|
|
- nskb->protocol = skb->protocol;
|
|
|
- nskb->vlan_tci = skb->vlan_tci;
|
|
|
- nskb->dst = dst_clone(skb->dst);
|
|
|
- memcpy(nskb->cb, skb->cb, sizeof(skb->cb));
|
|
|
- nskb->pkt_type = skb->pkt_type;
|
|
|
+ __copy_skb_header(nskb, skb);
|
|
|
nskb->mac_len = skb->mac_len;
|
|
|
|
|
|
skb_reserve(nskb, headroom);
|
|
@@ -2274,6 +2267,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
|
|
|
skb_copy_from_linear_data(skb, skb_put(nskb, doffset),
|
|
|
doffset);
|
|
|
if (!sg) {
|
|
|
+ nskb->ip_summed = CHECKSUM_NONE;
|
|
|
nskb->csum = skb_copy_and_csum_bits(skb, offset,
|
|
|
skb_put(nskb, len),
|
|
|
len, 0);
|
|
@@ -2283,8 +2277,6 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
|
|
|
frag = skb_shinfo(nskb)->frags;
|
|
|
k = 0;
|
|
|
|
|
|
- nskb->ip_summed = CHECKSUM_PARTIAL;
|
|
|
- nskb->csum = skb->csum;
|
|
|
skb_copy_from_linear_data_offset(skb, offset,
|
|
|
skb_put(nskb, hsize), hsize);
|
|
|
|