[ovs-dev] [PATCH v4 0/5] netdev datapath: Partial action offload

Sriharsha Basavapatna sriharsha.basavapatna at broadcom.com
Mon Jun 29 09:50:15 UTC 2020


This patchset extends the "Partial HW acceleration" mode to offload a
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.

This patchset utilizes the full-offload framework available in OVS-DPDK
to offload specific actions to HW. In this initial patchset we support
offloading of VXLAN encap action. The changes are based on the VXLAN encap
full-offload patchset currently being reviewed on ovs-dev: 



- Removed mega-ufid mapping code from dpif-netdev (patch #5) and updated the
  existing mega-ufid mapping code in netdev-offload-dpdk to support partial
  action offload.


- 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).


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         | 330 ++++++++++++++++++++++++++++++++------
 lib/netdev-dpdk.c         |   5 +
 lib/netdev-dpdk.h         |   1 +
 lib/netdev-offload-dpdk.c |  78 ++++++---
 lib/netdev-offload.h      |   2 +
 5 files changed, 352 insertions(+), 64 deletions(-)


More information about the dev mailing list