[ovs-dev] vlan_deaccel_tag() and checksum

Ben Pfaff blp at nicira.com
Thu Feb 17 18:44:48 UTC 2011

It seems to me that vlan_deaccel_tag() needs to increase csum_start by
4 in the CHECKSUM_PARTIAL case, something like this following.  I
don't see anything like this in the other callers of __vlan_put_tag(),
but it looks like most of those wouldn't have CHECKSUM_PARTIAL skbs

Does this seem correct to you?

diff --git a/datapath/vlan.h b/datapath/vlan.h
index 02a6290..ceb49b0 100644
--- a/datapath/vlan.h
+++ b/datapath/vlan.h
@@ -53,6 +53,11 @@ static inline int vlan_deaccel_tag(struct sk_buff *skb)
 	if (unlikely(!skb))
 		return -ENOMEM;
+	if (get_ip_summed(skb) == OVS_CSUM_PARTIAL)
+		skb->csum_start += VLAN_HLEN;
 	vlan_set_tci(skb, 0);
 	return 0;

More information about the dev mailing list