diff options
author | Ilya Maximets <i.maximets@samsung.com> | 2019-05-07 12:24:07 +0300 |
---|---|---|
committer | Ilya Maximets <i.maximets@samsung.com> | 2019-06-11 09:39:36 +0300 |
commit | 5fc5c50f3d9cda4512e3fc9ae7a1b6c27e342f7d (patch) | |
tree | 6bd7e0c63484306b9fc6e30f257ec9ebb870683d /lib/netdev-vport.c | |
parent | 7a65e5a9252ac06df62707a571931f501747ecfc (diff) | |
download | openvswitch-5fc5c50f3d9cda4512e3fc9ae7a1b6c27e342f7d.tar.gz |
netdev: Dynamic per-port Flow API.
Current issues with Flow API:
* OVS calls offloading functions regardless of successful
flow API initialization. (ex. on init_flow_api failure)
* Static initilaization of Flow API for a netdev_class forbids
having different offloading types for different instances
of netdev with the same netdev_class. (ex. different vports in
'system' and 'netdev' datapaths at the same time)
Solution:
* Move Flow API from the netdev_class to netdev instance.
* Make Flow API dynamic, i.e. probe the APIs and choose the
suitable one.
Side effects:
* Flow API providers localized as possible in their modules.
* Now we have an ability to make runtime checks. For example,
we could check if particular device supports features we
need, like if dpdk device supports RSS+MARK action.
Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Acked-by: Roi Dayan <roid@mellanox.com>
Diffstat (limited to 'lib/netdev-vport.c')
-rw-r--r-- | lib/netdev-vport.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/lib/netdev-vport.c b/lib/netdev-vport.c index ab591667f..92a256af1 100644 --- a/lib/netdev-vport.c +++ b/lib/netdev-vport.c @@ -47,7 +47,6 @@ #include "unaligned.h" #include "unixctl.h" #include "openvswitch/vlog.h" -#include "netdev-tc-offloads.h" #ifdef __linux__ #include "netdev-linux.h" #endif @@ -1116,10 +1115,8 @@ netdev_vport_get_ifindex(const struct netdev *netdev_) } #define NETDEV_VPORT_GET_IFINDEX netdev_vport_get_ifindex -#define NETDEV_FLOW_OFFLOAD_API , LINUX_FLOW_OFFLOAD_API #else /* !__linux__ */ #define NETDEV_VPORT_GET_IFINDEX NULL -#define NETDEV_FLOW_OFFLOAD_API #endif /* __linux__ */ #define VPORT_FUNCTIONS_COMMON \ @@ -1133,8 +1130,7 @@ netdev_vport_get_ifindex(const struct netdev *netdev_) .get_etheraddr = netdev_vport_get_etheraddr, \ .get_stats = netdev_vport_get_stats, \ .get_pt_mode = netdev_vport_get_pt_mode, \ - .update_flags = netdev_vport_update_flags \ - NETDEV_FLOW_OFFLOAD_API + .update_flags = netdev_vport_update_flags #define TUNNEL_FUNCTIONS_COMMON \ VPORT_FUNCTIONS_COMMON, \ |