Hi, This RFC patchset extends the "Partial HW acceleration" mode to offload part of the action processing to HW, instead of offloading just lookup (MARK/RSS), for "vhost-user" ports. This is referred to as "Partial Action Offload". This mode does not require SRIOV/switchdev configuration. In this mode, forwarding (output) action is still performed by OVS-DPDK SW datapath.
Note: This RFC patchset assumes that the full-offload framework is available in OVS-DPDK and utilizes it to offload specific actions to HW. In this initial patchset we support offloading of VXLAN encap action. The changes are based on the VXLAN full offload patchset currently being reviewed on ovs-dev: https://mail.openvswitch.org/pipermail/ovs-dev/2020-January/367010.html I would appreciate feedback on this approach to support partial action offload for vhost-user ports. Thanks, -Harsha ****** v2-->v3: - Added more commit log comments in the refactoring patch (#1). - Removed wrapper function for should_partial_offload_egress(). - Removed partial offload check for output action in parse_flow_actions(). - Changed patch sequence (skip-encap and get-stats before offload patch). - Removed locking code (details in email), added inline comments. - Moved mega-ufid mapping code from skip-encap (#3) to the offload patch (#5). v1-->v2: Fixed review comments from Eli: - Revamped action list parsing to reject multiple clone/output actions - Updated comments to reflect support for single clone/output action - Removed place-holder function for ingress partial action offload - Created a separate patch (#2) to query dpdk-vhost netdevs - Set transfer attribute to 0 for partial action offload - Updated data type of 'dp_flow' in 'dp_netdev_execute_aux' - Added a mutex to synchronize between offload and datapath threads - Avoid fall back to mark/rss when egress partial offload fails - Drop count action for partial action offload Other changes: - Avoid duplicate offload requests for the same mega-ufid (from PMD threads) - Added a coverage counter to track pkts with tnl-push partial offloaded - Fixed dp_netdev_pmd_remove_flow() to delete partial offloaded flow ****** Sriharsha Basavapatna (5): dpif-netdev: Refactor dp_netdev_flow_offload_put() netdev-dpdk: provide a function to identify dpdk-vhost netdevs dpif-netdev: Skip encap action during datapath execution dpif-netdev: Support flow_get() with partial-action-offload dpif-netdev: Support partial-action-offload of VXLAN encap flow lib/dpif-netdev.c | 471 ++++++++++++++++++++++++++++++++++---- lib/netdev-dpdk.c | 5 + lib/netdev-dpdk.h | 1 + lib/netdev-offload-dpdk.c | 43 +++- lib/netdev-offload.h | 2 + 5 files changed, 467 insertions(+), 55 deletions(-) -- 2.25.0.rc2 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
