[ovs-dev] [PATCH ovs V1 4/9] dpif-hw-acc: add a user offload policy framework

Paul Blakey paulb at mellanox.com
Tue Nov 1 14:53:25 UTC 2016


Added a new framework so user can specify which flows
to try and offload.
A new map was added to save each flow's policy.

Signed-off-by: Paul Blakey <paulb at mellanox.com>
Signed-off-by: Shahar Klein <shahark at mellanox.com>
---
 lib/automake.mk         |  2 ++
 lib/dpif-hw-acc.c       |  2 ++
 lib/dpif-hw-acc.h       |  1 -
 lib/hw-offload-policy.c | 23 +++++++++++++++++++++++
 lib/hw-offload-policy.h | 20 ++++++++++++++++++++
 5 files changed, 47 insertions(+), 1 deletion(-)
 create mode 100644 lib/hw-offload-policy.c
 create mode 100644 lib/hw-offload-policy.h

diff --git a/lib/automake.mk b/lib/automake.mk
index be2c8eb..9b2741b 100644
--- a/lib/automake.mk
+++ b/lib/automake.mk
@@ -343,6 +343,8 @@ lib_libopenvswitch_la_SOURCES += \
 	lib/dpif-netlink.h \
 	lib/tc.h \
 	lib/tc.c \
+	lib/hw-offload-policy.c \
+	lib/hw-offload-policy.h \
 	lib/dpif-hw-acc.c \
 	lib/dpif-hw-acc.h \
 	lib/if-notifier.c \
diff --git a/lib/dpif-hw-acc.c b/lib/dpif-hw-acc.c
index 5f65904..16dd497 100644
--- a/lib/dpif-hw-acc.c
+++ b/lib/dpif-hw-acc.c
@@ -42,6 +42,8 @@
 #include "openvswitch/vlog.h"
 #include "netdev-provider.h"
 #include "dpif-hw-acc.h"
+#include "tc.h"
+#include "hw-offload-policy.h"
 
 VLOG_DEFINE_THIS_MODULE(dpif_hw_acc);
 
diff --git a/lib/dpif-hw-acc.h b/lib/dpif-hw-acc.h
index 10467e3..23bd7ec 100644
--- a/lib/dpif-hw-acc.h
+++ b/lib/dpif-hw-acc.h
@@ -31,5 +31,4 @@ struct ufid_handle_hash_data {
     struct netdev *netdev;
     odp_port_t port;
 };
-
 #endif
diff --git a/lib/hw-offload-policy.c b/lib/hw-offload-policy.c
new file mode 100644
index 0000000..f2f5652
--- /dev/null
+++ b/lib/hw-offload-policy.c
@@ -0,0 +1,23 @@
+#include <config.h>
+#include "dpif.h"
+#include "openvswitch/types.h"
+#include "hw-offload-policy.h"
+#include "dpif-hw-acc.h"
+
+enum dpif_hw_offload_policy
+HW_offload_test_put(struct dpif_hw_acc *dpif, struct dpif_flow_put *put)
+{
+    return DPIF_HW_OFFLOAD_ONLY;
+}
+
+enum dpif_hw_offload_policy
+HW_offload_test_del(struct dpif *dpif, struct dpif_flow_del *del)
+{
+    return DPIF_HW_OFFLOAD_ONLY;
+}
+
+enum dpif_hw_offload_policy
+HW_offload_test_get(struct dpif *dpif, struct dpif_flow_get *get)
+{
+    return DPIF_HW_OFFLOAD_ONLY;
+}
diff --git a/lib/hw-offload-policy.h b/lib/hw-offload-policy.h
new file mode 100644
index 0000000..10c0087
--- /dev/null
+++ b/lib/hw-offload-policy.h
@@ -0,0 +1,20 @@
+
+#ifndef HW_OFFLOAD_POLICY_H
+#define HW_OFFLOAD_POLICY_H 1
+
+#include "dpif-hw-acc.h"
+
+enum dpif_hw_offload_policy {
+    DPIF_HW_NO_OFFLAOAD = 1,    /* no offload - SW only */
+    DPIF_HW_OFFLOAD_ONLY,       /* if fails fall back to SW */
+    DPIF_HW_OFFLOAD_SPLIT,
+};
+
+enum dpif_hw_offload_policy HW_offload_test_put(struct dpif_hw_acc *dpif,
+                                                struct dpif_flow_put *put);
+enum dpif_hw_offload_policy HW_offload_test_del(struct dpif *dpif,
+                                                struct dpif_flow_del *del);
+enum dpif_hw_offload_policy HW_offload_test_get(struct dpif *dpif,
+                                                struct dpif_flow_get *get);
+
+#endif
-- 
1.8.3.1




More information about the dev mailing list