summaryrefslogtreecommitdiffstats
path: root/net/openvswitch/vport.h
diff options
context:
space:
mode:
authorPravin B Shelar <pshelar@nicira.com>2013-06-13 11:11:44 -0700
committerJesse Gross <jesse@nicira.com>2013-06-14 15:09:12 -0700
commitb34df5e805a6e98cae0bc5bc80c1b52d9ff811de (patch)
treecc8d94ee92741fe21380180aeff3a6f12bb44adb /net/openvswitch/vport.h
parent45bfa52e36ef016b789eca73c7847db3f7b4742d (diff)
downloadlinux-b34df5e805a6e98cae0bc5bc80c1b52d9ff811de.tar.gz
linux-b34df5e805a6e98cae0bc5bc80c1b52d9ff811de.tar.bz2
linux-b34df5e805a6e98cae0bc5bc80c1b52d9ff811de.zip
openvswitch: make skb->csum consistent with rest of networking stack.
Following patch keeps skb->csum correct across ovs. Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Signed-off-by: Jesse Gross <jesse@nicira.com>
Diffstat (limited to 'net/openvswitch/vport.h')
-rw-r--r--net/openvswitch/vport.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/net/openvswitch/vport.h b/net/openvswitch/vport.h
index 1cef5cd3be47..293278c4c2df 100644
--- a/net/openvswitch/vport.h
+++ b/net/openvswitch/vport.h
@@ -192,4 +192,11 @@ void ovs_vport_record_error(struct vport *, enum vport_err_type err_type);
extern const struct vport_ops ovs_netdev_vport_ops;
extern const struct vport_ops ovs_internal_vport_ops;
+static inline void ovs_skb_postpush_rcsum(struct sk_buff *skb,
+ const void *start, unsigned int len)
+{
+ if (skb->ip_summed == CHECKSUM_COMPLETE)
+ skb->csum = csum_add(skb->csum, csum_partial(start, len, 0));
+}
+
#endif /* vport.h */