|
@@ -175,8 +175,7 @@ static void update_ethertype(struct sk_buff *skb, struct ethhdr *hdr,
|
|
|
if (skb->ip_summed == CHECKSUM_COMPLETE) {
|
|
if (skb->ip_summed == CHECKSUM_COMPLETE) {
|
|
|
__be16 diff[] = { ~(hdr->h_proto), ethertype };
|
|
__be16 diff[] = { ~(hdr->h_proto), ethertype };
|
|
|
|
|
|
|
|
- skb->csum = ~csum_partial((char *)diff, sizeof(diff),
|
|
|
|
|
- ~skb->csum);
|
|
|
|
|
|
|
+ skb->csum = csum_partial((char *)diff, sizeof(diff), skb->csum);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
hdr->h_proto = ethertype;
|
|
hdr->h_proto = ethertype;
|
|
@@ -268,8 +267,7 @@ static int set_mpls(struct sk_buff *skb, struct sw_flow_key *flow_key,
|
|
|
if (skb->ip_summed == CHECKSUM_COMPLETE) {
|
|
if (skb->ip_summed == CHECKSUM_COMPLETE) {
|
|
|
__be32 diff[] = { ~(stack->label_stack_entry), lse };
|
|
__be32 diff[] = { ~(stack->label_stack_entry), lse };
|
|
|
|
|
|
|
|
- skb->csum = ~csum_partial((char *)diff, sizeof(diff),
|
|
|
|
|
- ~skb->csum);
|
|
|
|
|
|
|
+ skb->csum = csum_partial((char *)diff, sizeof(diff), skb->csum);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
stack->label_stack_entry = lse;
|
|
stack->label_stack_entry = lse;
|