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://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 > > 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. 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). You may start fixing/implementing this. Meanwhile, I'll continue my review and investigation. Best regards, Ilya Maximets. _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev