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

Ilya Maximets i.maximets at ovn.org
Tue Jan 7 19:34:57 UTC 2020


On 07.01.2020 20:28, Eli Britstein wrote:
> 
> On 1/7/2020 8:46 PM, Ilya Maximets wrote:
>> On 19.12.2019 12:54, 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, set
>>> TCP/UDP ports and tunnel push actions using the DPDK rte_flow API.
>>>
>>> v1 Travis passed: https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Felibritstein%2FOVS%2Fbuilds%2F614511472&data=02%7C01%7Celibr%40mellanox.com%7Cfb80a09d7b9a4b5dc7da08d793a1fac6%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637140196234511900&sdata=UqEGA9tXfFErL6KKI7P5X7Zvm0Krzq9KKTfvyL42T1Q%3D&reserved=0
>>> v2 Travis passed: https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Felibritstein%2FOVS%2Fbuilds%2F619262148&data=02%7C01%7Celibr%40mellanox.com%7Cfb80a09d7b9a4b5dc7da08d793a1fac6%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637140196234511900&sdata=mCB5n2eGbdhDBax7izO4UdIvdVhjZBgu6hOtF65EfCk%3D&reserved=0
>>> v3 Travis passed: https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Felibritstein%2FOVS%2Fbuilds%2F622253870&data=02%7C01%7Celibr%40mellanox.com%7Cfb80a09d7b9a4b5dc7da08d793a1fac6%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637140196234511900&sdata=UFfB8mkbOJkCMdk7QRa6CgXbHjlEGVPDx5KAx%2B%2FlLcI%3D&reserved=0
>>> v4 Travis passed: https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Felibritstein%2FOVS%2Fbuilds%2F625654160&data=02%7C01%7Celibr%40mellanox.com%7Cfb80a09d7b9a4b5dc7da08d793a1fac6%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637140196234511900&sdata=EkGoIBwCfTOb9d2EE5qDf9Akkbr6cK9JD%2BoUhK8kjrY%3D&reserved=0
>>> v5 Travis passed: https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Felibritstein%2FOVS%2Fbuilds%2F626692202&data=02%7C01%7Celibr%40mellanox.com%7Cfb80a09d7b9a4b5dc7da08d793a1fac6%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637140196234511900&sdata=4UXr57%2BFYhSo4Ujtc5L5F14TligA%2BTQCiM8O7WtheaE%3D&reserved=0
>>> v6 Travis passed: https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftravis-ci.org%2Felibritstein%2FOVS%2Fbuilds%2F627132194&data=02%7C01%7Celibr%40mellanox.com%7Cfb80a09d7b9a4b5dc7da08d793a1fac6%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637140196234511900&sdata=FvyoWaNsKKQR%2FDlM%2BjAWbberGIkKFi1076Z5lQOOmN4%3D&reserved=0
>>>
>>> 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.
>>>
>>> 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                   |  97 +++--
>>>   lib/dpctl.man                 |   2 +
>>>   lib/dpif-netdev.c             |  81 +++-
>>>   lib/netdev-dpdk.c             |  48 +++
>>>   lib/netdev-dpdk.h             |   8 +
>>>   lib/netdev-offload-dpdk.c     | 964 ++++++++++++++++++++++++++++++++----------
>>>   lib/netdev-offload-provider.h |   1 +
>>>   lib/netdev-offload.c          |  12 +
>>>   10 files changed, 972 insertions(+), 267 deletions(-)
>>>
>> Hi.  I still didn't reach the actual code review, but I applied the series
>> and tried to make some tests.  Few things:
>> 1. Unfortunately, with this patch-set applied, "make check-offloads" doesn't
>>     work at all.  I didn't investigate yet, but it seems that flow dumping is
>>     not working as expected.
> I see it doesn't work on master as well. I'll look for the offending commit.

It works on master (a13a02097) for me.  Doesn't work with patch-set applied.

>> 2. patch-set needs a rebase on current master.
>> 3. Since commit a13a0209750c ("userspace: Improved packet drop statistics.")
>>     you need to add support for explicit drop action as I told previously
>>     (OVS_ACTION_ATTR_DROP).
> OK.
>>
>> You may start fixing/implementing this.  Meanwhile, I'll continue my review
>> and investigation.
>>
>> Best regards, Ilya Maximets.


More information about the dev mailing list