[ovs-git] Open vSwitch: datapath: Further mirror checksum offloading state on old kernels. (master)

dev at openvswitch.org dev at openvswitch.org
Thu Jun 16 21:50:19 UTC 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Open vSwitch".

The branch, master has been updated
       via  c3729ee42dc25a8240cee6c0041b7db3e4070414 (commit)
       via  e6269c12f294f71c9e6a31c153a12cf26124c235 (commit)
       via  bf16ba4a9b1b4a38c867349e70e39d551b406b32 (commit)
       via  10db8b20d2ed55417f625a3212db3b5cef0331d2 (commit)
       via  1d0f14d4c1da6e67234c0c43db66721cd7fbac98 (commit)
      from  b328b55b4a34b2bb4ea22d5a58ae10f3779cb761 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit c3729ee42dc25a8240cee6c0041b7db3e4070414
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=c3729ee42dc25a8240cee6c0041b7db3e4070414
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Further mirror checksum offloading state on old kernels.
		
Older kernels (those before 2.6.22) rely on implicit assumptions
to determine checksum offloading status.  These assumptions tend
to break down when doing switching because it sits in the middle
of the transmit and receive path.  Newer kernels deal with this
problem by adding more explicit information about how to checksum.
This replicates that behavior by mirroring the state from newer
kernels in private OVS storage on the kernels that lack it.  On
ingress and egress we then map that state onto the appropriate
location for the given kernel and can consistently manipulate it
within OVS.  Some of this was already done for the checksum type
but this makes it more robust and expands it to the checksum start
and offset as well.

Signed-off-by: Jesse Gross <jesse at nicira.com>
Acked-by: Ben Pfaff <blp at nicira.com>


commit e6269c12f294f71c9e6a31c153a12cf26124c235
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=e6269c12f294f71c9e6a31c153a12cf26124c235
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Drop set_skb_csum_bits().
		
Various older kernels have had different bugs with copying checksum
state when a complete copy of a packet is made.  However, it is not
actually necessary to make these copies and all occurrences have
now been removed.  Therefore, we can also remove the workarounds to
deal with these bugs.

Signed-off-by: Jesse Gross <jesse at nicira.com>
Acked-by: Ben Pfaff <blp at nicira.com>


commit bf16ba4a9b1b4a38c867349e70e39d551b406b32
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=bf16ba4a9b1b4a38c867349e70e39d551b406b32
Author: Jesse Gross <jesse at nicira.com>
		
tunneling: Avoid extra copying if expanding headroom.
		
Currently if we need additional headroom before encapsulating a
packet a clone is made before expanding headroom or if we are
just trying to make the headroom writable then we copy both
the struct sk_buff and the paged data.  Both of these are unnecessary
and we end up freeing the original copy.  We can remove these copies
and simplify the code by just expanding the linear data area.

Signed-off-by: Jesse Gross <jesse at nicira.com>
Acked-by: Ben Pfaff <blp at nicira.com>


commit 10db8b20d2ed55417f625a3212db3b5cef0331d2
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=10db8b20d2ed55417f625a3212db3b5cef0331d2
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Simplify make_writable().
		
The current implementation of make_writable() is both overly complex
and unnecessarily aggressive about copying data.  We can improve
performance by only making a copy of the data if someone else holds
a reference to the portion of the data that we want to modify.  This
means that if a clone is held by the TCP stack for retransmission then
we do not need to make a copy if we are changing the IP header because
it will get regenerated on retransmit anyways.  Even when it is necessary
to copy we avoid duplicating struct sk_buff.

Signed-off-by: Jesse Gross <jesse at nicira.com>
Acked-by: Ben Pfaff <blp at nicira.com>


commit 1d0f14d4c1da6e67234c0c43db66721cd7fbac98
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=1d0f14d4c1da6e67234c0c43db66721cd7fbac98
Author: Jesse Gross <jesse at nicira.com>
		
datapath: Use strip_vlan() for modify_vlan_tci().
		
The sematics for setting a vlan tag are to modify the existing tag
if one exists.  This can be expressed as removing the existing tag
first and then adding a new one.  This simplifies the code by not
requiring two copies of the logic that manipulates non-accelerated
vlans and should not make a performance difference because the vlan
tag is contained in a single cache line.

Signed-off-by: Jesse Gross <jesse at nicira.com>
Acked-by: Ben Pfaff <blp at nicira.com>


-----------------------------------------------------------------------

Summary of changes:
 datapath/actions.c            |  178 +++++++++++++++------------------
 datapath/checksum.c           |  226 ++++++++++++++++++++++++++++-------------
 datapath/checksum.h           |  110 +++++++++++---------
 datapath/datapath.c           |    8 +--
 datapath/datapath.h           |    7 +-
 datapath/tunnel.c             |   66 +++++-------
 datapath/vport-internal_dev.c |    7 +-
 datapath/vport-netdev.c       |   15 +--
 8 files changed, 345 insertions(+), 272 deletions(-)


hooks/post-receive
-- 
Open vSwitch



More information about the git mailing list