On 22 January 2017 at 08:13, Paul Blakey <[email protected]> wrote: > > > On 05/01/2017 03:26, Joe Stringer wrote: >> >> On 25 December 2016 at 03:39, Paul Blakey <[email protected]> wrote: >>> >>> Add a new configuration option - hw-offload that enables netdev >>> flow api. Enabling this option will allow offloading flows >>> using netdev implementation instead of the kernel datapath. >>> This configuration option defaults to false - disabled. >>> >>> Signed-off-by: Paul Blakey <[email protected]> >>> Reviewed-by: Roi Dayan <[email protected]> >>> --- >>> lib/netdev.c | 18 ++++++++++++++++++ >>> lib/netdev.h | 2 ++ >>> vswitchd/bridge.c | 2 ++ >>> vswitchd/vswitch.xml | 11 +++++++++++ >>> 4 files changed, 33 insertions(+) >>> >>> diff --git a/lib/netdev.c b/lib/netdev.c >>> index 3ac3c48..b289166 100644 >>> --- a/lib/netdev.c >>> +++ b/lib/netdev.c >>> @@ -2071,7 +2071,25 @@ netdev_init_flow_api(struct netdev *netdev) >>> { >>> const struct netdev_class *class = netdev->netdev_class; >>> >>> + if (!netdev_flow_api_enabled) { >>> + return EOPNOTSUPP; >>> + } >>> + >>> return (class->init_flow_api >>> ? class->init_flow_api(netdev) >>> : EOPNOTSUPP); >>> } >>> + >>> +bool netdev_flow_api_enabled = false; >>> + >>> +void >>> +netdev_set_flow_api_enabled(bool enabled) >>> +{ >>> + static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; >>> + >>> + if (ovsthread_once_start(&once)) { >>> + netdev_flow_api_enabled = enabled; >>> + VLOG_INFO("netdev: Flow API %s", enabled ? "Enabled" : >>> "Disabled"); >>> + ovsthread_once_done(&once); >>> + } >>> +} >> >> >> Requiring restart to apply this option seems a bit arbitrary, why not >> allow it to be changed at runtime? >> > > Because it isn't something that is supposed to change often, > It might cause problems if its enabled later on with different (netdev) > implementations. We can try and test changing it to runtime at a later time.
Forcing the user to restart OVS to make a database setting take effect is an unusual requirement. Even uncommon configurations that require datapath-level changes (eg, reconfiguring queues) is applied in OVS without requiring the user to intervene and restart. I understand that even DPDK init doesn't require restart any more. Here's another question: Let's say that hardware offloads is enabled and traffic runs. User turns it off, restarts OVS. What happens to the hardware flows? Presumably OVS doesn't manage them any more because hw-offloads is off, but they would continue to forward traffic. If OVS then gets different OpenFlow rules then the forwarding could be wrong. _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
