[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