|
@@ -175,10 +175,7 @@ static int pop_mpls(struct sk_buff *skb, struct sw_flow_key *key,
|
|
if (unlikely(err))
|
|
if (unlikely(err))
|
|
return err;
|
|
return err;
|
|
|
|
|
|
- if (skb->ip_summed == CHECKSUM_COMPLETE)
|
|
|
|
- skb->csum = csum_sub(skb->csum,
|
|
|
|
- csum_partial(skb_mpls_header(skb),
|
|
|
|
- MPLS_HLEN, 0));
|
|
|
|
|
|
+ skb_postpull_rcsum(skb, skb_mpls_header(skb), MPLS_HLEN);
|
|
|
|
|
|
memmove(skb_mac_header(skb) + MPLS_HLEN, skb_mac_header(skb),
|
|
memmove(skb_mac_header(skb) + MPLS_HLEN, skb_mac_header(skb),
|
|
skb->mac_len);
|
|
skb->mac_len);
|
|
@@ -230,9 +227,7 @@ static int __pop_vlan_tci(struct sk_buff *skb, __be16 *current_tci)
|
|
if (unlikely(err))
|
|
if (unlikely(err))
|
|
return err;
|
|
return err;
|
|
|
|
|
|
- if (skb->ip_summed == CHECKSUM_COMPLETE)
|
|
|
|
- skb->csum = csum_sub(skb->csum, csum_partial(skb->data
|
|
|
|
- + (2 * ETH_ALEN), VLAN_HLEN, 0));
|
|
|
|
|
|
+ skb_postpull_rcsum(skb, skb->data + (2 * ETH_ALEN), VLAN_HLEN);
|
|
|
|
|
|
vhdr = (struct vlan_hdr *)(skb->data + ETH_HLEN);
|
|
vhdr = (struct vlan_hdr *)(skb->data + ETH_HLEN);
|
|
*current_tci = vhdr->h_vlan_TCI;
|
|
*current_tci = vhdr->h_vlan_TCI;
|