[ovs-dev] [PATCH ovs V3 00/25] Introducing HW offload support for openvswitch

Chandran, Sugesh sugesh.chandran at intel.com
Mon Feb 13 23:52:47 UTC 2017


Hi Paul & Roi,
Thank you for the patch series, 
Please find my comments inline in the following mails.
I am trying to build it in OVS-DPDK and its failing on my board? JFYI I Rebased over commit e6932e5dd59fe2bd7d90ef365bdd95707cd369d0.


Regards
_Sugesh


> -----Original Message-----
> From: Roi Dayan [mailto:roid at mellanox.com]
> Sent: Wednesday, February 8, 2017 3:29 PM
> To: dev at openvswitch.org
> Cc: Paul Blakey <paulb at mellanox.com>; Or Gerlitz
> <ogerlitz at mellanox.com>; Hadar Hen Zion <hadarh at mellanox.com>; Shahar
> Klein <shahark at mellanox.com>; Mark Bloch <markb at mellanox.com>; Rony
> Efraim <ronye at mellanox.com>; Fastabend, John R
> <john.r.fastabend at intel.com>; Joe Stringer <joe at ovn.org>; Andy
> Gospodarek <andy at greyhouse.net>; Lance Richardson
> <lrichard at redhat.com>; Marcelo Ricardo Leitner <mleitner at redhat.com>;
> Simon Horman <simon.horman at netronome.com>; Jiri Pirko
> <jiri at mellanox.com>; Chandran, Sugesh <sugesh.chandran at intel.com>; Roi
> Dayan <roid at mellanox.com>
> Subject: [PATCH ovs V3 00/25] Introducing HW offload support for
> openvswitch
> 
> This patch series introduces rule offload functionality to dpif-netlink via
> netdev ports new flow offloading API. The user can specify whether to
> enable rule offloading or not via OVS configuration. Netdev providers are
> able to implement netdev flow offload API in order to offload rules.
> 
> This patch series also implements one offload scheme for netdev-linux, using
> TC flower classifier, which was chosen because its sort of natural to state OVS
> DP rules for this classifier. However, the code can be extended to support
> other classifiers such as U32, eBPF, etc which support offload as well.
> 
> The use-case we are currently addressing is the newly sriov switchdev mode
> in the Linux kernel which was introduced in version 4.8 [1][2].
> This series was tested against sriov vfs vports representors of the Mellanox
> 100G ConnectX-4 series exposed by the mlx5 kernel driver.
> 
> 
> V2->V3:
>     - Code styling fixes
>     - Bug fixes
>     - Using already available macros/functions to match current OVS code
>     - Refactored code according to V2 review
>     - Replaced bool option skip-hw for string option tc-policy
>     - Added hw offload tests using policy skip_hw
>     - Fixed most compatability compiling issues
>         - Travis
>             https://travis-ci.org/roidayan/ovs/builds/199610124
>         - AppVeyor
>             https://ci.appveyor.com/project/roidayan/ovs/build/1.0.14
>     - Fixed compiling with DPDK enabled
> 
>     TODO:
>     - need to fix datapath compiling issues found in travis after adding tc
>       compatability headers
>     - need to fix failing test cases because of get_ifindex
> 
> 
> V1->V2:
>     - Added generic netdev flow offloads API.
>     - Implemented relevant flow API in netdev-linux (and netdev-vport).
>     - Added a other_config hw-offload option to enable offloading (defaults to
> false).
>     - Fixed coding style to conform with OVS.
>     - Policy removed for now. (Will be discussed how best implemented later).
> 
> 
> Thanks,
> Paul & Roi
> 
> 
> Paul Blakey (25):
>   tc: Add tc flower interface
>   netdev-linux: Move some tc related functions to tc.c
>   netdev: Adding a new netdev api to be used for offloading flows
>   other-config: Add hw-offload switch to control netdev flow offloading
>   other-config: Add tc-policy switch to control tc flower flag
>   dpif: Save added ports in a port map for netdev flow api use
>   dpif-netlink: Flush added ports using netdev flow api
>   netdev-tc-offloads: Implement netdev flow flush using tc interface
>   dpif-netlink: Dump netdevs flows on flow dump
>   netdev-tc-offloads: Add ufid to tc/netdev map
>   netdev-tc-offloads: Implement netdev flow dump api using tc interface
>   dpif-netlink: Use netdev flow put api to insert a flow
>   netdev-tc-offloads: Add flower mask to priority map
>   netdev-tc-offloads: Implement netdev flow put using tc interface
>   dpif-netlink: Delete a flow from netdev
>   netdev-tc-offloads: Implement netdev flow del using tc interface
>   dpif-netlink: Use netdev flow get api to query a flow
>   netdev-tc-offloads: Implement flow get using tc interface
>   netdev-linux: Disallow setting policing when configured with hw
>     offload
>   netdev-vport: Implement netdev vport get_ifindex on Linux
>   netdev-vport: Use common offloads interface
>   netdev-tc-offloads: Add ingress on netdev flow api init
>   dpctl: Add an option to dump only certain kinds of flows
>   tests: Add system-offloads-testsuite
>   compat: Add tc compatibility headers for old kernels
> 
>  acinclude.m4                         |   26 +
>  configure.ac                         |    1 +
>  include/automake.mk                  |    1 +
>  include/linux/automake.mk            |    4 +
>  include/linux/pkt_cls.h              |  579 ++++++++++++++++++
>  include/linux/tc_act/tc_tunnel_key.h |   48 ++
>  include/linux/tc_act/tc_vlan.h       |   44 ++
>  lib/automake.mk                      |    4 +
>  lib/dpctl.c                          |   21 +-
>  lib/dpif-netdev.c                    |    3 +-
>  lib/dpif-netlink.c                   |  484 ++++++++++++++-
>  lib/dpif-provider.h                  |    6 +-
>  lib/dpif.c                           |   29 +-
>  lib/dpif.h                           |    5 +-
>  lib/netdev-bsd.c                     |    2 +
>  lib/netdev-dpdk.c                    |    1 +
>  lib/netdev-dummy.c                   |    2 +
>  lib/netdev-linux.c                   |  194 ++----
>  lib/netdev-linux.h                   |   11 +
>  lib/netdev-provider.h                |   53 ++
>  lib/netdev-tc-offloads.c             |  820 ++++++++++++++++++++++++++
>  lib/netdev-tc-offloads.h             |   42 ++
>  lib/netdev-vport.c                   |   50 +-
>  lib/netdev.c                         |  326 ++++++++++
>  lib/netdev.h                         |   40 ++
>  lib/odp-util.c                       |   53 ++
>  lib/odp-util.h                       |    3 +
>  lib/tc.c                             | 1076 ++++++++++++++++++++++++++++++++++
>  lib/tc.h                             |  120 ++++
>  ofproto/ofproto-dpif-upcall.c        |    3 +-
>  ofproto/ofproto-dpif.c               |    2 +-
>  tests/.gitignore                     |    1 +
>  tests/automake.mk                    |   16 +
>  tests/ofproto-macros.at              |    6 +-
>  tests/system-offloaded-traffic.at    |   67 +++
>  tests/system-offloads-testsuite.at   |   25 +
>  vswitchd/bridge.c                    |    1 +
>  vswitchd/vswitch.xml                 |   28 +
>  38 files changed, 4019 insertions(+), 178 deletions(-)  create mode 100644
> include/linux/automake.mk  create mode 100644 include/linux/pkt_cls.h
> create mode 100644 include/linux/tc_act/tc_tunnel_key.h
>  create mode 100644 include/linux/tc_act/tc_vlan.h  create mode 100644
> lib/netdev-tc-offloads.c  create mode 100644 lib/netdev-tc-offloads.h  create
> mode 100644 lib/tc.c  create mode 100644 lib/tc.h  create mode 100644
> tests/system-offloaded-traffic.at  create mode 100644 tests/system-
> offloads-testsuite.at
> 
> --
> 2.7.4



More information about the dev mailing list