[ovs-git] Open vSwitch: datapath: s/ODPAT_/ODP_ACTION_ATTR_/ to fit new naming scheme. (netlink)

dev at openvswitch.org dev at openvswitch.org
Fri Jan 28 20:21:11 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, netlink has been updated
  discards  9ff0bb7901b9f9e09eb913e520c3062e3ea7bd23 (commit)
  discards  ee9d736950c22b09cc94fc3a3a7e8de056bac116 (commit)
  discards  941bf9d2e7381520c2081fe4e7c047f640012edf (commit)
  discards  58efcc1d2d6fabfe47b4f9fc5289cc501f5f322c (commit)
  discards  636959c99fcec10b287a67ca40469c3fcec259d9 (commit)
  discards  274220966ccc99c63c2d1cbb860175fd50b50078 (commit)
  discards  d51274709fbf8ecd36f0ad94132fe1d3c00fa115 (commit)
  discards  c3f9c9928403f82c1285c5ec7e055c8f03330806 (commit)
  discards  7b64f97423a5876bceb8eb55b3d091932b07f04c (commit)
  discards  9469adff4ca71157a32b98eb56cef50e6ea4852d (commit)
  discards  ba49fedad452a08da1a34c3cfa05c2b7a11af5bf (commit)
  discards  578cd0b5d93395652e5e4a816de69373238ca8c9 (commit)
  discards  e973441606a3480973dd2b584a7b7eddb0a92ea0 (commit)
  discards  e693d1cfedaea4c56e20e29d9322b1f647e14ae0 (commit)
  discards  f68dba6ad120829b44284f8c26f8a8c0071bb4d8 (commit)
  discards  921d0dde14995a5d74935e519f0b9880a13733fc (commit)
  discards  b63be19efb70364f2040dd859a84d98e483e0d61 (commit)
  discards  fb1a26d7230d128fef26e6a30ff2657ea93879cd (commit)
  discards  ffd669fb5058da242f7e8e90ac6ce740934b987b (commit)
  discards  fe0fb8178a630135ffe84807b4ecfe107beeb7a3 (commit)
  discards  a5c255510e9ecd4351421e300cc944660c56117d (commit)
  discards  894f54073bc8acc7da0e211da94bf273d254a8ea (commit)
  discards  983292252bfe94789673795bbd975d5baab31a5a (commit)
  discards  d3fdd33715f913a7387dd8226652f5f4d1c1a4f4 (commit)
  discards  001d032a58f75bd7eabc0c26d23966d0bd2c3416 (commit)
  discards  4ae902323ef1ea54be36ac346654c297ac850b73 (commit)
  discards  2f41cedbdb6d4763a5243567ad1e163e990f7425 (commit)
  discards  917c97362120026c2a7ba68261c2960b3c0d2e5c (commit)
  discards  e8d013a12f912555ff6900e4e64ab09e01d3b538 (commit)
  discards  fadd8c29e0d717660db4d8ef5cc4e0c5301f79ad (commit)
  discards  7ee0041a47022a316722122af7ed729c4a22d1a3 (commit)
  discards  1ff436630f4a4b2ed439d7bb03ae154fdf5c81c0 (commit)
  discards  fa1710086262790ce2d9a68aed31df0029238bb2 (commit)
  discards  30feac2ba41277aa3a1307d13f058b9abfb2b399 (commit)
  discards  bca4ff99e680f6ffaa123ffd679fb680ba7edfed (commit)
  discards  486f049084a88701a30962587bfd5412d97e62d0 (commit)
  discards  10a0ec9ef5dd5a9d620b367b277e06420b49f021 (commit)
  discards  09a1ad0cc25b17f0bb7bc4acd655ca9f38a703f7 (commit)
  discards  ae77309679ba63608fc214cd37ce0a149765a3e9 (commit)
  discards  1f9f1e6bc57d4d1fcd77ff9289190b0c14ba0ea1 (commit)
  discards  c468fa3b791c738664c6fd4bd1badfba97e884ac (commit)
  discards  7affa6f1969856f70f12c83980f5105aea64bb64 (commit)
       via  750b81db8a31af67ba7ded35967d31963a48290e (commit)
       via  e6d543c5a209a2d3df7e5e7a00a17c46214ff171 (commit)
       via  6a76044b87fc87745e8bafe025cf74153226dbd2 (commit)
       via  8093b121610447fd98e14a1332148826da798b6a (commit)
       via  6dfad4b00f83ebaedd5082eecdc1d38ecb8bcf0d (commit)
       via  a5c2ec2c382c2f49ee902f839ed99934d2c3a492 (commit)
       via  4905585bfe1e15477669dd5b6d8404183a7ffa21 (commit)
       via  982b88105d0a82ab90b233bf68e4e51ac9cddd23 (commit)
       via  ed099e921e30d3720c5ad7d1b4f911bb23911bf3 (commit)
       via  057dd6d279c20e88f98bbe8328383564391bbc8f (commit)
       via  c0a0ac4f414cd17caead7c1066b016ddbc28b9ce (commit)
       via  e2c779b3c277c085fc0e1a3f5b00f0119430af74 (commit)
       via  9f2e8c9ef975181317ded7d71c8b5bec172ccb8f (commit)
       via  82272eded1ede569bcec3ba4ab212e5e3fb632ff (commit)
       via  c75d4dcf957f617b40ca89546545f075e2631226 (commit)
       via  f7cd0081f525dd1d45fafc68397b5393196e978d (commit)
       via  49954639ed8d827988495cd2f54dd1280cefa2ec (commit)
       via  d656937779f5b987ec021c21189a0deab29fd64d (commit)
       via  9c52546b52018970d97b33b31a0578497663737a (commit)
       via  693c4a01124ec5ad9253f8cfcfd99075a9d637f6 (commit)
       via  c33087b8507ff486acd13fea85506cfe96901b01 (commit)
       via  c62b0064a0cdbd5f3ecfc2cda90999a9d7ec551d (commit)
       via  e4add8967bd4fe1e78566ffbd2a61e8c2db6bc43 (commit)
       via  ba25b8f41f4db5ed5c91f53b9b83b57f242a82d6 (commit)
       via  c97fb13280c565f55ed0de7cf0bf06ffe8320b70 (commit)
       via  feebdea2e5550a71c7accda936b6a55962f60a04 (commit)
       via  bc4a05c639ee3789d009bb6143345cf121b2d4d4 (commit)
       via  996c1b3d7a4d6e82e1831ff8821e5fd7e1a5522c (commit)
       via  1ba530f4b2cd5476a224dbbf87a3089a831a24b6 (commit)
       via  ea7bd5973fb426f3a6ea66b0953c6000980e77ec (commit)
       via  c19e653509deb3f1002c4ed99714e16549ec74e9 (commit)
       via  7897d3fa21ec370997e4f108b01de2664bec0a67 (commit)
       via  c283069c71adc49c182a1ac569a05e2dca949eda (commit)
       via  4c738a8da5c73229ce0d4ab6f88d081886291f03 (commit)
       via  ffeda91a477a62d267696e08103f3ac6ec9a0102 (commit)
       via  6d9e6eb44fc82ae985e6e8db4f156ba56f8bea39 (commit)
       via  9fe3b9a2eeace9689def807e78e35c79e4b1814b (commit)
       via  51d4d59822785c1044cd96e6c73427347e0154c2 (commit)
       via  b0ec0f279ea4537cb421eba807254aba8f1971f2 (commit)
       via  856081f683d3e7d5b5fa07af4233d285eb205c47 (commit)
       via  36956a7d33c9ee204fcb184484a5aaacbd9ecef8 (commit)
       via  704a1e09e9b31ea39ca41c028c7c6aaf2482283a (commit)
       via  c662c789ed30a1e122967d5d183558e1bfe755a8 (commit)
       via  f441c1a854f243acf4a5abac4c3c612fe6937950 (commit)
       via  afde8bd6a6d9ec8207454dbd7a4b7a51b669c752 (commit)
       via  4a557a8e2dd0ab4d2a8fe7e0673177d682c6e9fd (commit)
      from  9ff0bb7901b9f9e09eb913e520c3062e3ea7bd23 (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 750b81db8a31af67ba7ded35967d31963a48290e
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=750b81db8a31af67ba7ded35967d31963a48290e
Author: Ben Pfaff <blp at nicira.com>
		
datapath: s/ODPAT_/ODP_ACTION_ATTR_/ to fit new naming scheme.
		
Jesse suggested this naming scheme, so I'm adjusting existing names to
fit it.

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


commit e6d543c5a209a2d3df7e5e7a00a17c46214ff171
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=e6d543c5a209a2d3df7e5e7a00a17c46214ff171
Author: Ben Pfaff <blp at nicira.com>
		
dpif: Remove dpif_get_all_names().
		
None of the remaining dpif implementations have more than one name per
dpif, so there's no need for this function anymore.

Suggested-by: Jesse Gross <jesse at nicira.com>
Acked-by: Jesse Gross <jesse at nicira.com>


commit 6a76044b87fc87745e8bafe025cf74153226dbd2
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=6a76044b87fc87745e8bafe025cf74153226dbd2
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Change dp_idx to dp_ifindex, the ifindex of the local port.
		
I can't see any real value in maintaining a dp_idx separate from the
ifindex of the local port.  With the current implementation it also
artificially limits the number of datapaths.

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


commit 8093b121610447fd98e14a1332148826da798b6a
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=8093b121610447fd98e14a1332148826da798b6a
Author: Ben Pfaff <blp at nicira.com>
		
dpif-linux: Replace 'minor' by 'dp_idx'.
		
The dp_idx used to be the character device minor number, but there's no
character device anymore, so rename for clarity.

Reviewed by Justin Pettit.


commit 6dfad4b00f83ebaedd5082eecdc1d38ecb8bcf0d
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=6dfad4b00f83ebaedd5082eecdc1d38ecb8bcf0d
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Convert ODP_FLOW_* commands to use AF_NETLINK socket layer.
		
This completes the transition to the Generic Netlink interface, and
so this commit restores support for Linux 2.6.18 and later.

Signed-off-by: Ben Pfaff <blp at nicira.com>


commit a5c2ec2c382c2f49ee902f839ed99934d2c3a492
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=a5c2ec2c382c2f49ee902f839ed99934d2c3a492
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Convert ODP_VPORT_* to use AF_NETLINK socket layer.
		
This commit calls genl_lock() and thus doesn't support Linux before
2.6.35, which wasn't exported before that version.  That problem will
be fixed once the whole userspace interface transitions to Generic
Netlink a few commits from now.

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


commit 4905585bfe1e15477669dd5b6d8404183a7ffa21
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=4905585bfe1e15477669dd5b6d8404183a7ffa21
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Convert ODP_DP_* commands to use AF_NETLINK socket layer.
		
This commit calls genl_lock() and thus doesn't support Linux before
2.6.35, which wasn't exported before that version.  That problem will
be fixed once the whole userspace interface transitions to Generic
Netlink a few commits from now.

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


commit 982b88105d0a82ab90b233bf68e4e51ac9cddd23
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=982b88105d0a82ab90b233bf68e4e51ac9cddd23
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Convert upcalls and ODP_EXECUTE to use AF_NETLINK socket layer.
		
This commit calls genl_lock() and thus doesn't support Linux before
2.6.35, which wasn't exported before that version.  That problem will
be fixed once the whole userspace interface transitions to Generic
Netlink a few commits from now.

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


commit ed099e921e30d3720c5ad7d1b4f911bb23911bf3
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=ed099e921e30d3720c5ad7d1b4f911bb23911bf3
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Adopt Generic Netlink-compatible locking.
		
The kernel Generic Netlink layer always holds a mutex (genl_lock) when it
invokes callbacks, so that means that there is no point in having
per-datapath mutexes or a separate vport lock.  This commit removes them.

This commit breaks support for Linux before 2.6.35 because it calls
genl_lock(), which wasn't exported before that version.  That problem will
be fixed once the whole userspace interface transitions to Generic
Netlink a few commits from now.

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


commit 057dd6d279c20e88f98bbe8328383564391bbc8f
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=057dd6d279c20e88f98bbe8328383564391bbc8f
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Eliminate vport_mutex by protecting vport table with RCU.
		
The vport_mutex really only protects the vport dev_table, which isn't very
much.  By getting rid of it we take one step toward simplifying the vswitch
locking, which will necessarily have to be based mainly around the Generic
Netlink genl_mutex once we switch to Generic Netlink.

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


commit c0a0ac4f414cd17caead7c1066b016ddbc28b9ce
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=c0a0ac4f414cd17caead7c1066b016ddbc28b9ce
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Backport more Netlink functions.
		
Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Jesse Gross <jesse at nicira.com>


commit e2c779b3c277c085fc0e1a3f5b00f0119430af74
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=e2c779b3c277c085fc0e1a3f5b00f0119430af74
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Backport genl_register_family_with_ops().
		
Besides the user introduced in this commit, the new Netlink-based datapath
communication code will use this function.

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


commit 9f2e8c9ef975181317ded7d71c8b5bec172ccb8f
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=9f2e8c9ef975181317ded7d71c8b5bec172ccb8f
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Extend compatibility code for genl_register_mc_group().
		
The existing compatibility code for genl_register_mc_group() always returns
the same value because the only caller (in brcompat_mod) only needs a
single multicast group.  However, when the datapath is converted over to
using Netlink in an upcoming commit, openvswitch_mod will start needing a
number of multicast groups, so this commit adds this ability.

The multicast group ranges differ for brcompat_mod and openvswitch_mod so
that they don't interfere with one another.  (This would waste time in
ovs-brcompatd and ovs-vswitchd, although it would not be fatal.)

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


commit 82272eded1ede569bcec3ba4ab212e5e3fb632ff
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=82272eded1ede569bcec3ba4ab212e5e3fb632ff
Author: Ben Pfaff <blp at nicira.com>
		
Eliminate ODPL_* from userspace-facing interface.
		
Reviewed by Justin Pettit.


commit c75d4dcf957f617b40ca89546545f075e2631226
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=c75d4dcf957f617b40ca89546545f075e2631226
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Get rid of ODPP_NONE.
		
This definition wasn't actually useful for the kernel--the only place that
it was used it didn't really have to be, so this commit removes it from
datapath-protocol.h.  It is still marginally useful in userspace, at least
as a value that converts to and from OpenFlow port number OFPP_NONE, so
move it to odp-util.c.

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


commit f7cd0081f525dd1d45fafc68397b5393196e978d
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=f7cd0081f525dd1d45fafc68397b5393196e978d
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Convert ODP_EXECUTE to use Netlink framing.
		
Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Jesse Gross <jesse at nicira.com>


commit 49954639ed8d827988495cd2f54dd1280cefa2ec
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=49954639ed8d827988495cd2f54dd1280cefa2ec
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Remove non-standard nla_put_be{16,32,64} functions.
		
These aren't part of any version of Linux, so delete them now that the code
does not use them.

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


commit d656937779f5b987ec021c21189a0deab29fd64d
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=d656937779f5b987ec021c21189a0deab29fd64d
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Convert datapath operations to use Netlink framing.
		
Signed-off-by: Ben Pfaff <blp at nicira.com>
Acked-by: Jesse Gross <jesse at nicira.com>


commit 9c52546b52018970d97b33b31a0578497663737a
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=9c52546b52018970d97b33b31a0578497663737a
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Convert ODP_FLOW_* and ODP_EXECUTE to put dp_idx into message.
		
When the datapath moves to the Netlink protocol it won't have a minor
number to use, so we have to put the dp_idx in the message.

This also changes the kernel implementation of ODP_FLOW_FLUSH to do the
datapath locking inside flush_flows() instead of inside openvswitch_ioctl()
but doesn't change that command's userspace interface, which still passes
a datapath number as the ioctl argument.

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


commit 693c4a01124ec5ad9253f8cfcfd99075a9d637f6
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=693c4a01124ec5ad9253f8cfcfd99075a9d637f6
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Eliminate 'flags' member from odp_flow.
		
Nothing was productively using the 'flags' member of odp_flow, so this
commit removes it.

ODPFF_ZERO_TCP_FLAGS isn't used at all (as of the previous commit).

ODPFF_EOF has been replaced by a special case of the 'key_len' member.
This will go away, too, once AF_NETLINK starts being used.

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


commit c33087b8507ff486acd13fea85506cfe96901b01
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=c33087b8507ff486acd13fea85506cfe96901b01
Author: Ben Pfaff <blp at nicira.com>
		
ofproto: Avoid using ODPFF_ZERO_TCP_FLAGS.
		
I'm planning to remove this flag, since it is a bit of a wart, so this
commit deletes its only actual user.

Reviewed by Ethan Jackson <ethan at nicira.com>.


commit c62b0064a0cdbd5f3ecfc2cda90999a9d7ec551d
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=c62b0064a0cdbd5f3ecfc2cda90999a9d7ec551d
Author: Ben Pfaff <blp at nicira.com>
		
ofproto: Generalize facet_put__() so that it is more useful.
		
This immediately makes it useful in facet_revalidate().  An upcoming
patch will add one more user.

This commit should not change any externally visible behavior.  It
is a pure code refactoring.

Reviewed by Ethan Jackson <ethan at nicira.com>.


commit e4add8967bd4fe1e78566ffbd2a61e8c2db6bc43
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=e4add8967bd4fe1e78566ffbd2a61e8c2db6bc43
Author: Ben Pfaff <blp at nicira.com>
		
ofproto: Fix test for installability change when revalidating.
		
ctx.may_set_up_flow will become the new facet->may_install, so it's that
value that we should check instead of the current facet->may_install when
deciding whether to update the datapath flow.

Reviewed by Ethan Jackson <ethan at nicira.com>.


commit ba25b8f41f4db5ed5c91f53b9b83b57f242a82d6
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=ba25b8f41f4db5ed5c91f53b9b83b57f242a82d6
Author: Ben Pfaff <blp at nicira.com>
		
dpif: Eliminate ODPPF_* constants from client-visible interface.
		
Following this commit, the ODPPF_* constants are only used in
Linux-specific parts of OVS userspace code.  This allows the actual Linux
datapath interface to evolve more freely.

Reviewed by Justin Pettit.


commit c97fb13280c565f55ed0de7cf0bf06ffe8320b70
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=c97fb13280c565f55ed0de7cf0bf06ffe8320b70
Author: Ben Pfaff <blp at nicira.com>
		
dpif: Eliminate "struct odp_flow_stats" from client-visible interface.
		
Following this commit, "struct odp_flow_stats" is only used in
Linux-specific parts of OVS userspace code.  This allows the actual Linux
datapath interface to evolve more freely.

Reviewed by Justin Pettit.


commit feebdea2e5550a71c7accda936b6a55962f60a04
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=feebdea2e5550a71c7accda936b6a55962f60a04
Author: Ben Pfaff <blp at nicira.com>
		
dpif: Eliminate "struct odp_flow" from client-visible interface.
		
Following this commit, "struct odp_flow" and related data structures are
only used in Linux-specific parts of OVS userspace code.  This allows the
actual Linux datapath interface to evolve more freely.

Reviewed by Justin Pettit.


commit bc4a05c639ee3789d009bb6143345cf121b2d4d4
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=bc4a05c639ee3789d009bb6143345cf121b2d4d4
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Change ODP_FLOW_GET to retrieve only a single flow at a time.
		
This brings the code closer to what the Netlink interface will need to
implement.

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


commit 996c1b3d7a4d6e82e1831ff8821e5fd7e1a5522c
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=996c1b3d7a4d6e82e1831ff8821e5fd7e1a5522c
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Drop port information from odp_stats.
		
As with n_flows, n_ports was used regularly by userspace to determine how
much memory to allocate when listing ports, but it is no longer needed for
that.  max_ports, on the other hand, is necessary but it is also a fixed
value for the kernel datapath right now and if we expand it we can also
come up with a way to report the expanded value.

The remaining members of odp_stats are actually real statistics that I
intend to keep.

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


commit 1ba530f4b2cd5476a224dbbf87a3089a831a24b6
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=1ba530f4b2cd5476a224dbbf87a3089a831a24b6
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Drop queue information from odp_stats.
		
This queue information will be available through the kernel socket layer
once we move over to Netlink socket as transports, so we might as well get
rid of the redundancy.

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


commit ea7bd5973fb426f3a6ea66b0953c6000980e77ec
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=ea7bd5973fb426f3a6ea66b0953c6000980e77ec
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Drop flow information from odp_stats.
		
Userspace used to use the n_flows information here to decide how much
memory needed to be allocated to list flows, but that isn't necessary any
longer now that listing flows uses an iterator abstraction.  The
cur_capacity and max_capacity members are just curiosities and don't
provide much information; if the implementation ever changes away from
the current hash table implementation then they could become meaningless
anyhow.

But more than anything, these aren't really the kind of statistics that
networking people usually care about.

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


commit c19e653509deb3f1002c4ed99714e16549ec74e9
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=c19e653509deb3f1002c4ed99714e16549ec74e9
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Change userspace vport interface to use Netlink attributes.
		
One of the goals for Open vSwitch is to decouple kernel and userspace
software, so that either one can be upgraded or rolled back independent of
the other.  To do this in full generality, it must be possible to add new
features to the kernel vport layer without changing userspace software.
The customary way to do this in the Linux networking stack is to use
Netlink and in particular Netlink attributes.  This commit adopts that
model for the vport layer.  It does not yet actually start using the
Netlink socket layer, which will come later.

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


commit 7897d3fa21ec370997e4f108b01de2664bec0a67
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=7897d3fa21ec370997e4f108b01de2664bec0a67
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Make VERIFY_NUL_STRING verify the string length too.
		
It's better to use HAVE_NLA_NUL_STRING than a version check because the
Xen 2.6.18 kernels backport NLA_NUL_STRING and the nla_policy changes.

Just defining NLA_NUL_STRING to an innocuous value doesn't work, because
Linux before 2.6.19 doesn't define a 'len' member in struct nla_policy at
all (it was named 'minlen' and had different semantics), so attempting to
initialize it caused compile errors.

Grouping things this way also makes it clearer what needs to be deleted
when upstreaming.

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


commit c283069c71adc49c182a1ac569a05e2dca949eda
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=c283069c71adc49c182a1ac569a05e2dca949eda
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Change vport type from string to integer enumeration.
		
I plan to make the vport type part of the standard header stuck on each
Netlink message related to a vport.  As such, it is more convenient to use
an integer than a string.  In addition, by being fundamentally different
from strings, using an integer may reduce the confusion we've had in the
past over the differences in userspace and kernel names for network device
and vport types.

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


commit 4c738a8da5c73229ce0d4ab6f88d081886291f03
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=4c738a8da5c73229ce0d4ab6f88d081886291f03
Author: Ben Pfaff <blp at nicira.com>
		
dpif: Eliminate "struct odp_port" from client-visible interface.
		
Following this commit, "struct odp_port" is only used in Linux-specific
parts of OVS userspace code.  This allows the actual Linux datapath
interface to evolve more freely.

Reviewed by Justin Pettit.


commit ffeda91a477a62d267696e08103f3ac6ec9a0102
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=ffeda91a477a62d267696e08103f3ac6ec9a0102
Author: Ben Pfaff <blp at nicira.com>
		
ovs-dpctl: Use netdev_get_config() to print vport configurations.
		
This is cleaner than parsing "odp_port"s directly.  It takes one step
toward eliminating use of odp_port from any userspace code outside of
lib/netdev-vport.c and lib/dpif-linux.c.

Reviewed by Justin Pettit.


commit 6d9e6eb44fc82ae985e6e8db4f156ba56f8bea39
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=6d9e6eb44fc82ae985e6e8db4f156ba56f8bea39
Author: Ben Pfaff <blp at nicira.com>
		
netdev: Make netdev arguments fetchable, and implement for netdev-vport.
		
This gives network device implementations the opportunity to fetch an
existing device's configuration and store it as their arguments, so that
netdev clients can find out how an existing device is configured.

So far netdev-vport is the only implementation that needs to use this.

The next commit will add use by clients.

Reviewed by Justin Pettit.


commit 9fe3b9a2eeace9689def807e78e35c79e4b1814b
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=9fe3b9a2eeace9689def807e78e35c79e4b1814b
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Drop datapath index and port number from Ethtool output.
		
I introduced this a long time ago as an efficient way for userspace to find
out whether and where an internal device was attached, but I've always
considered it an ugly kluge.  Now that ODP_VPORT_QUERY can fetch a vport's
info regardless of datapath, it is no longer necessary.  This commit
stops using Ethtool for this purpose and drops the feature.

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


commit 51d4d59822785c1044cd96e6c73427347e0154c2
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=51d4d59822785c1044cd96e6c73427347e0154c2
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Make it possible to query vports by name regardless of datapath.
		
Until now it has only been possible to query a vport if you know what
datapath it is on.  This doesn't really make sense, so this commit removes
that restriction.  It is a little bigger than one might naturally expect
because locking changes are required.

This also allows us to get rid of the ETHTOOL_GDRVINFO kluge that has
bothered me for a long time.  The next commit does that.

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


commit b0ec0f279ea4537cb421eba807254aba8f1971f2
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=b0ec0f279ea4537cb421eba807254aba8f1971f2
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Change listing ports to use an iterator concept.
		
One of the goals for Open vSwitch is to decouple kernel and userspace
software, so that either one can be upgraded or rolled back independent of
the other.  To do this in full generality, it must be possible to add new
features to the kernel vport layer without changing userspace software.  In
turn, that means that the odp_port structure must become variable-length.
This does not, however, fit in well with the ODP_PORT_LIST ioctl in its
current form, because that would require userspace to know how much space
to allocate for each port in advance, or to allocate as much space as
could possibly be needed.  Neither choice is very attractive.

This commit prepares for a different solution, by replacing ODP_PORT_LIST
by a new ioctl ODP_VPORT_DUMP that retrieves information about a single
vport from the datapath on each call.  It is much cleaner to allocate the
maximum amount of space for a single vport than to do so for possibly a
large number of vports.

It would be faster to retrieve a number of vports in batch instead of just
one at a time, but that will naturally happen later when the kernel
datapath interface is changed to use Netlink, so this patch does not bother
with it.

The Netlink version won't need to take the starting port number from
userspace, since Netlink sockets can keep track of that state as part
of their "dump" feature.

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


commit 856081f683d3e7d5b5fa07af4233d285eb205c47
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=856081f683d3e7d5b5fa07af4233d285eb205c47
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Report kernel's flow key when passing packets up to userspace.
		
One of the goals for Open vSwitch is to decouple kernel and userspace
software, so that either one can be upgraded or rolled back independent of
the other.  To do this in full generality, it must be possible to change
the kernel's idea of the flow key separately from the userspace version.

This commit takes one step in that direction by making the kernel report
its idea of the flow that a packet belongs to whenever it passes a packet
up to userspace.  This means that userspace can intelligently figure out
what to do:

   - If userspace's notion of the flow for the packet matches the kernel's,
     then nothing special is necessary.

   - If the kernel has a more specific notion for the flow than userspace,
     for example if the kernel decoded IPv6 headers but userspace stopped
     at the Ethernet type (because it does not understand IPv6), then again
     nothing special is necessary: userspace can still set up the flow in
     the usual way.

   - If userspace has a more specific notion for the flow than the kernel,
     for example if userspace decoded an IPv6 header but the kernel
     stopped at the Ethernet type, then userspace can forward the packet
     manually, without setting up a flow in the kernel.  (This case is
     bad from a performance point of view, but at least it is correct.)

This commit does not actually make userspace flexible enough to handle
changes in the kernel flow key structure, although userspace does now
have enough information to do that intelligently.  This will have to wait
for later commits.

This commit is bigger than it would otherwise be because it is rolled
together with changing "struct odp_msg" to a sequence of Netlink
attributes.  The alternative, to do each of those changes in a separate
patch, seemed like overkill because it meant that either we would have to
introduce and then kill off Netlink attributes for in_port and tun_id, if
Netlink conversion went first, or shove yet another variable-length header
into the stuff already after odp_msg, if adding the flow key to odp_msg
went first.

This commit will slow down performance of checksumming packets sent up to
userspace.  I'm not entirely pleased with how I did it.  I considered a
couple of alternatives, but none of them seemed that much better.
Suggestions welcome.  Not changing anything wasn't an option,
unfortunately.  At any rate some slowdown will become unavoidable when OVS
actually starts using Netlink instead of just Netlink framing.

(Actually, I thought of one option where we could avoid that: make
userspace do the checksum instead, by passing csum_start and csum_offset as
part of what goes to userspace.  But that's not perfect either.)

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


commit 36956a7d33c9ee204fcb184484a5aaacbd9ecef8
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=36956a7d33c9ee204fcb184484a5aaacbd9ecef8
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Convert odp_flow_key to use Netlink attributes instead.
		
One of the goals for Open vSwitch is to decouple kernel and userspace
software, so that either one can be upgraded or rolled back independent of
the other.  To do this in full generality, it must be possible to change
the kernel's idea of the flow key separately from the userspace version.
In turn, that means that flow keys must become variable-length.  This
commit makes that change using Netlink attribute sequences.

This commit does not actually make userspace flexible enough to handle
changes in the kernel flow key structure, because userspace doesn't yet
have enough information to do that intelligently.  Upcoming commits will
fix that.

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


commit 704a1e09e9b31ea39ca41c028c7c6aaf2482283a
Diffs: http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=commitdiff;h=704a1e09e9b31ea39ca41c028c7c6aaf2482283a
Author: Ben Pfaff <blp at nicira.com>
		
datapath: Change listing flows to use an iterator concept.
		
One of the goals for Open vSwitch is to decouple kernel and userspace
software, so that either one can be upgraded or rolled back independent of
the other.  To do this in full generality, it must be possible to change
the kernel's idea of the flow key separately from the userspace version.
In turn, that means that flow keys must become variable-length.  This does
not, however, fit in well with the ODP_FLOW_LIST ioctl in its current form,
because that would require userspace to know how much space to allocate
for each flow's key in advance, or to allocate as much space as could
possibly be needed.  Neither choice is very attractive.

This commit prepares for a different solution, by replacing ODP_FLOW_LIST
by a new ioctl ODP_FLOW_DUMP that retrieves a single flow from the datapath
on each call.  It is much cleaner to allocate the maximum amount of space
for a single flow key than to do so for possibly a very large number of
flow keys.

As a side effect, this patch also fixes a race condition that sometimes
made "ovs-dpctl dump-flows" print an error: previously, flows were listed
and then their actions were retrieved, which left a window in which
ovs-vswitchd could delete the flow.  Now dumping a flow and its actions is
a single step, closing that window.

Dumping all of the flows in a datapath is no longer an atomic step, so now
it is possible to miss some flows or see a single flow twice during
iteration, if the flow table is modified by another process.  It doesn't
look like this should be a problem for ovs-vswitchd.

It would be faster to retrieve a number of flows in batch instead of just
one at a time, but that will naturally happen later when the kernel
datapath interface is changed to use Netlink, so this patch does not bother
with it.

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


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

Summary of changes:
 datapath/datapath.c                                |  124 ++++++++++++--------
 datapath/linux-2.6/compat-2.6/genetlink.inc        |    7 +
 .../linux-2.6/compat-2.6/include/net/genetlink.h   |    8 ++
 datapath/vport.c                                   |    7 +-
 debian/openvswitch-common.manpages                 |    1 -
 lib/stream.c                                       |    6 +-
 ovsdb/ovsdb-server.c                               |    2 +-
 tests/ofp-print.at                                 |    7 +-
 8 files changed, 103 insertions(+), 59 deletions(-)


hooks/post-receive
-- 
Open vSwitch




More information about the git mailing list