summaryrefslogtreecommitdiff
path: root/lib/netdev-vport.h
diff options
context:
space:
mode:
authorEthan Jackson <ethan@nicira.com>2012-12-20 15:32:03 -0800
committerEthan Jackson <ethan@nicira.com>2013-01-24 12:34:07 -0800
commit0a740f48293efa6162accc385f06def13b15f49b (patch)
treedfb0d7618f227c74faa5f4fe60d75d39f53ffaec /lib/netdev-vport.h
parentaf37354d92f45f1f276bb0bbf754b2851e29d14b (diff)
downloadopenvswitch-0a740f48293efa6162accc385f06def13b15f49b.tar.gz
ofproto-dpif: Implement patch ports in userspace.
This commit moves responsibility for implementing patch ports from the datapath to ofproto-dpif. There are two main reasons to do this. The first is a matter of design: ofproto-dpif both has more information than the datapath, and is better suited to handle the complexity required to implement patch ports. The second is performance. My setup is a virtual machine with two basic learning bridges connected by patch ports. I used ovs-benchmark to ping the virtual router IP residing outside the VM. Over a 60 second run, "ovs-benchmark rate" improves from 14618.1 to 19311.9 transactions per second, or a 32% improvement. Similarly, "ovs-benchmark latency" improves from 6ms to 4ms. Signed-off-by: Ethan Jackson <ethan@nicira.com>
Diffstat (limited to 'lib/netdev-vport.h')
-rw-r--r--lib/netdev-vport.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/netdev-vport.h b/lib/netdev-vport.h
index 31c119870..b372a7448 100644
--- a/lib/netdev-vport.h
+++ b/lib/netdev-vport.h
@@ -18,9 +18,9 @@
#define NETDEV_VPORT_H 1
#include <stdbool.h>
-#include "openvswitch/types.h"
struct dpif_linux_vport;
+struct dpif_flow_stats;
struct netdev;
struct netdev_stats;
@@ -30,7 +30,15 @@ const struct ofpbuf *netdev_vport_get_options(const struct netdev *);
enum ovs_vport_type netdev_vport_get_vport_type(const struct netdev *);
const char *netdev_vport_get_netdev_type(const struct dpif_linux_vport *);
+bool netdev_vport_is_patch(const struct netdev *);
int netdev_vport_get_stats(const struct netdev *, struct netdev_stats *);
+const char *netdev_vport_patch_peer(const struct netdev *netdev);
+
+void netdev_vport_patch_inc_rx(const struct netdev *,
+ const struct dpif_flow_stats *);
+void netdev_vport_patch_inc_tx(const struct netdev *,
+ const struct dpif_flow_stats *);
+
#endif /* netdev-vport.h */