[ovs-dev] [PATCH V7 00/18] netdev datapath actions offload

Ilya Maximets i.maximets at ovn.org
Thu Jan 16 13:39:26 UTC 2020


On 13.01.2020 19:17, Ilya Maximets wrote:
> On 09.01.2020 08:46, Eli Britstein wrote:
>> Currently, netdev datapath offload only accelerates the flow match
>> sequence by associating a mark per flow. This series introduces the full
>> offload of netdev datapath flows by having the HW also perform the flow
>> actions.
>>
>> This series adds HW offload for output, drop, set MAC, set IPv4 and set
>> TCP/UDP ports actions using the DPDK rte_flow API.
>>
>> v1 Travis passed: https://travis-ci.org/elibritstein/OVS/builds/614511472
>> v2 Travis passed: https://travis-ci.org/elibritstein/OVS/builds/619262148
>> v3 Travis passed: https://travis-ci.org/elibritstein/OVS/builds/622253870
>> v4 Travis passed: https://travis-ci.org/elibritstein/OVS/builds/625654160
>> v5 Travis passed: https://travis-ci.org/elibritstein/OVS/builds/626692202
>> v6 Travis passed: https://travis-ci.org/elibritstein/OVS/builds/627132194
>> v7 Travis passed: https://travis-ci.org/elibritstein/OVS/builds/634603553
>>
>> v1-v2:
>> - fallback to mark/rss in case of any failure of action offload.
>> - dp_layer changed to "in_hw" in case the flow is offloaded.
>> - using netdev_ports_get instead of dp_netdev_lookup_port in stats reading.
>> - using flow_dump_next API instead of a new API.
>> - validity checks for last action of output and clone.
>> - count action should be done for drop as well.
>> - validity check for output action.
>> - added doc in Documentation/howto/dpdk.rst.
>> v2-v3:
>> - removed refactoring for netdev-offload-dpdk-flow.c file.
>> - dropped flush commits.
>> - dbg prints rate-limited, and outside lock.
>> - added validity check for output action - same flow_api handle for both netdevs.
>> - added a mutex to protect possible concurrent deletion/querying of a flow.
>> - statistics are collected using flow_get API.
>> - added more documentation in Documentation/howto/dpdk.rst.
>> v3-v4:
>> - debug prints moved to netdev-offload-dpdk.c.
>> - flow get returns full stats, not diff.
>> - removed additional fields from offload_info and dp_netdev_flow.
>> - read HW stats during dpif_netdev_flow_get as well as
>>   dpif_netdev_flow_dump_next.
>> - moved actions offload framework just before support commit.
>> - fixed memory leak in rewrite code.
>> - dropped clone commit - will be posted in next series.
>> v4-v5:
>> - statistics collecting changed to populate dp_layer and offloaded
>>   attributes. dp_layer changed to "dpdk" for fully offloaded by dpdk.
>> - display offloaded:partial for partially offloaded flows.
>> - support filter types "dpdk" and "partially-offloaded" in
>>   dpctl/dump-flows type=X.
>> - simplify code readability of rewrite commits.
>> v5-v6:
>> - debug prints improvement for partial offload installations. dbg prints
>>   for failed actions, warn for other failure.
>> - fixed memory leak in case retrieved dpdk port-id is invalid.
>> v6-v7:
>> - rebase to support explicit drop action.
>> - fix dpctl/dump-flows issues discovered by make check-offloads.
>>
>> Eli Britstein (17):
>>   netdev-offload-dpdk: Refactor flow patterns
>>   netdev-offload-dpdk: Refactor action items freeing scheme
>>   netdev-offload-dpdk: Dynamically allocate pattern items
>>   netdev-offload-dpdk: Improve HW offload flow debuggability
>>   netdev-dpdk: Introduce rte flow query function
>>   netdev-offload-dpdk: Return UFID-rte_flow entry in find method
>>   netdev-offload-dpdk: Framework for actions offload
>>   netdev-offload-dpdk: Implement flow get method
>>   dpctl: Support dump-flows filters "dpdk" and "partially-offloaded"
>>   dpif-netdev: Populate dpif class field in offload struct
>>   netdev-dpdk: Getter function for dpdk port id API
>>   netdev-offload: Introduce a function to validate same flow api handle
>>   netdev-offload-dpdk: Support offload of output action
>>   netdev-offload-dpdk: Support offload of drop action
>>   netdev-offload-dpdk: Support offload of set MAC actions
>>   netdev-offload-dpdk: Support offload of set IPv4 actions
>>   netdev-offload-dpdk: Support offload of set TCP/UDP ports actions
>>
>> Ophir Munk (1):
>>   dpif-netdev: Update offloaded flows statistics
>>
>>  Documentation/howto/dpdk.rst  |  21 +-
>>  NEWS                          |   5 +
>>  lib/dpctl.c                   |  28 +-
>>  lib/dpctl.man                 |   2 +
>>  lib/dpif-netdev.c             |  81 +++-
>>  lib/netdev-dpdk.c             |  48 +++
>>  lib/netdev-dpdk.h             |   8 +
>>  lib/netdev-offload-dpdk.c     | 967 ++++++++++++++++++++++++++++++++----------
>>  lib/netdev-offload-provider.h |   1 +
>>  lib/netdev-offload.c          |  12 +
>>  10 files changed, 927 insertions(+), 246 deletions(-)
>>
> 
> Thanks for v7!  This version looks OK to me except few minor style issues
> that I could fix myself before applying.  Tomorrow I'm going to run few
> tests with this version and will apply the series on Wednesday in case
> no serious issues will be observed.

So, I fixed all the issues I found in my review and testing.  However,
I didn't test the 'good' case where offloading really works due to lack
of relevant hardware.

I applied the series to master.  It'll be good if you'll take current
master branch and run your tests on the actual offloading capable hardware,
so we could fix possible issues until official OVS release next month.

Thanks!

Best regards, Ilya Maximets.


More information about the dev mailing list