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 <pa...@mellanox.com> Signed-off-by: Shahar Klein <shah...@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 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev