[ovs-git] [openvswitch/ovs] 5fc5c5: netdev: Dynamic per-port Flow API.

Ilya Maximets noreply at github.com
Tue Jun 11 08:50:34 UTC 2019


  Branch: refs/heads/master
  Home:   https://github.com/openvswitch/ovs
  Commit: 5fc5c50f3d9cda4512e3fc9ae7a1b6c27e342f7d
      https://github.com/openvswitch/ovs/commit/5fc5c50f3d9cda4512e3fc9ae7a1b6c27e342f7d
  Author: Ilya Maximets <i.maximets at samsung.com>
  Date:   2019-06-11 (Tue, 11 Jun 2019)

  Changed paths:
    M lib/automake.mk
    M lib/dpdk.c
    M lib/netdev-dpdk.c
    M lib/netdev-dpdk.h
    M lib/netdev-dummy.c
    M lib/netdev-linux.c
    M lib/netdev-linux.h
    A lib/netdev-offload-provider.h
    M lib/netdev-provider.h
    M lib/netdev-rte-offloads.c
    M lib/netdev-rte-offloads.h
    M lib/netdev-tc-offloads.c
    R lib/netdev-tc-offloads.h
    M lib/netdev-vport.c
    M lib/netdev.c
    M tests/dpif-netdev.at
    M tests/ofproto-macros.at

  Log Message:
  -----------
  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 at samsung.com>
Acked-by: Roi Dayan <roid at mellanox.com>


  Commit: d74ca2269e3696b07b7876e36e776759222a9bc5
      https://github.com/openvswitch/ovs/commit/d74ca2269e3696b07b7876e36e776759222a9bc5
  Author: Ilya Maximets <i.maximets at samsung.com>
  Date:   2019-06-11 (Tue, 11 Jun 2019)

  Changed paths:
    M Documentation/faq/design.rst
    M lib/dpctl.c
    M lib/dpctl.man
    M vswitchd/vswitch.xml

  Log Message:
  -----------
  dpctl: Update docs about dump-flows and HW offloading.

Since introduction of dynamic flow API for netdevs, tricky
accesses to uninitialized flow API are no longer possible.
So, ovs-dpctl doesn't support dumping HW offloaded flows now.
Claim this in docs and man pages. Additionally forbidden
'type' argument for 'ovs-dpctl dump-flows'.

Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
Acked-by: Roi Dayan <roid at mellanox.com>


  Commit: b6cabb8f8f80e8d460be237b6eebad270a42cfcb
      https://github.com/openvswitch/ovs/commit/b6cabb8f8f80e8d460be237b6eebad270a42cfcb
  Author: Ilya Maximets <i.maximets at samsung.com>
  Date:   2019-06-11 (Tue, 11 Jun 2019)

  Changed paths:
    M lib/automake.mk
    M lib/dpdk.c
    M lib/dpif-netdev.c
    M lib/dpif-netlink.c
    M lib/netdev-dpdk.c
    M lib/netdev-offload-provider.h
    A lib/netdev-offload.c
    A lib/netdev-offload.h
    M lib/netdev-provider.h
    M lib/netdev-rte-offloads.c
    R lib/netdev-rte-offloads.h
    M lib/netdev.c
    M lib/netdev.h
    M vswitchd/bridge.c

  Log Message:
  -----------
  netdev: Split up netdev offloading to separate module.

New module 'netdev-offload' created to manage different flow API
implementations. All the generic and provider independent code moved
there from the 'netdev' module.

Flow API providers further encapsulated.

The only function that was changed is 'netdev_any_oor'.
Now it uses offloading related hmap instead of common 'netdev_shash'.

Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
Acked-by: Ben Pfaff <blp at ovn.org>
Acked-by: Roi Dayan <roid at mellanox.com>


  Commit: 4f746d526df255b11babe93005948a028b49ef90
      https://github.com/openvswitch/ovs/commit/4f746d526df255b11babe93005948a028b49ef90
  Author: Ilya Maximets <i.maximets at samsung.com>
  Date:   2019-06-11 (Tue, 11 Jun 2019)

  Changed paths:
    M lib/automake.mk
    M lib/dpdk.c
    M lib/netdev-dummy.c
    A lib/netdev-offload-dpdk.c
    M lib/netdev-offload-provider.h
    A lib/netdev-offload-tc.c
    R lib/netdev-rte-offloads.c
    R lib/netdev-tc-offloads.c
    M lib/netdev.c

  Log Message:
  -----------
  netdev-offload: Rename offload providers.

Flow API providers renamed to be consistent with parent module
'netdev-offload' and look more like each other.

'_rte_' replaced with more convenient '_dpdk_'.

We'll have following structure:

  Common code:
    lib/netdev-offload-provider.h
    lib/netdev-offload.c
    lib/netdev-offload.h

  Providers:
    lib/netdev-offload-tc.c
    lib/netdev-offload-dpdk.c

'netdev-offload-dummy' still resides inside netdev-dummy, but it
makes no much sence to move it out of there.

Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
Acked-by: Ben Pfaff <blp at ovn.org>
Acked-by: Roi Dayan <roid at mellanox.com>


Compare: https://github.com/openvswitch/ovs/compare/7a65e5a9252a...4f746d526df2


More information about the git mailing list