The scalar Tx paths, with support for offloads and multiple mbufs
per packet, are almost identical across drivers ice, i40e, iavf and
the single-queue mode of idpf. Therefore, we can do some rework to
combine these code paths into a single function which is parameterized
by compile-time constants, allowing code saving to give us a single
path to optimize and maintain - apart from edge cases like IPSec
support in iavf.

The ixgbe driver has a number of similarities too, which we take
advantage of where we can, but the overall descriptor format is
sufficiently different that its main scalar code path is kept
separate.

Bruce Richardson (27):
  net/intel: create common Tx descriptor structure
  net/intel: use common tx ring structure
  net/intel: create common post-Tx cleanup function
  net/intel: consolidate definitions for Tx desc fields
  net/intel: create separate header for Tx scalar fns
  net/intel: add common fn to calculate needed descriptors
  net/ice: refactor context descriptor handling
  net/i40e: refactor context descriptor handling
  net/idpf: refactor context descriptor handling
  net/intel: consolidate checksum mask definition
  net/intel: create common checksum Tx offload function
  net/intel: create a common scalar Tx function
  net/i40e: use common scalar Tx function
  net/intel: add IPSec hooks to common Tx function
  net/intel: support configurable VLAN tag insertion on Tx
  net/iavf: use common scalar Tx function
  net/i40e: document requirement for QinQ support
  net/idpf: use common scalar Tx function
  net/intel: avoid writing the final pkt descriptor twice
  net/intel: write descriptors using non-volatile pointers
  net/intel: remove unnecessary flag clearing
  net/intel: mark mid-burst ring cleanup as unlikely
  net/intel: add special handling for single desc packets
  net/intel: use separate array for desc status tracking
  net/ixgbe: use separate array for desc status tracking
  net/intel: drop unused Tx queue used count
  net/intel: remove index for tracking end of packet

 doc/guides/nics/i40e.rst                      |  18 +
 drivers/net/intel/common/tx.h                 | 101 ++-
 drivers/net/intel/common/tx_scalar_fns.h      | 441 ++++++++++++
 drivers/net/intel/cpfl/cpfl_rxtx.c            |   4 +-
 drivers/net/intel/i40e/i40e_fdir.c            |  34 +-
 drivers/net/intel/i40e/i40e_rxtx.c            | 500 +++-----------
 drivers/net/intel/i40e/i40e_rxtx.h            |  17 +-
 .../net/intel/i40e/i40e_rxtx_vec_altivec.c    |  23 +-
 drivers/net/intel/i40e/i40e_rxtx_vec_avx2.c   |  34 +-
 drivers/net/intel/i40e/i40e_rxtx_vec_avx512.c |  50 +-
 drivers/net/intel/i40e/i40e_rxtx_vec_common.h |   6 +-
 drivers/net/intel/i40e/i40e_rxtx_vec_neon.c   |  23 +-
 drivers/net/intel/i40e/i40e_rxtx_vec_sse.c    |  23 +-
 drivers/net/intel/iavf/iavf_rxtx.c            | 642 ++++--------------
 drivers/net/intel/iavf/iavf_rxtx.h            |  30 +-
 drivers/net/intel/iavf/iavf_rxtx_vec_avx2.c   |  53 +-
 drivers/net/intel/iavf/iavf_rxtx_vec_avx512.c | 104 ++-
 drivers/net/intel/iavf/iavf_rxtx_vec_common.h |  36 +-
 drivers/net/intel/iavf/iavf_rxtx_vec_sse.c    |  27 +-
 drivers/net/intel/ice/ice_dcf_ethdev.c        |  10 +-
 drivers/net/intel/ice/ice_rxtx.c              | 590 +++++-----------
 drivers/net/intel/ice/ice_rxtx.h              |  15 +-
 drivers/net/intel/ice/ice_rxtx_vec_avx2.c     |  53 +-
 drivers/net/intel/ice/ice_rxtx_vec_avx512.c   |  51 +-
 drivers/net/intel/ice/ice_rxtx_vec_common.h   |  43 +-
 drivers/net/intel/ice/ice_rxtx_vec_sse.c      |  24 +-
 drivers/net/intel/idpf/idpf_common_rxtx.c     | 298 ++------
 drivers/net/intel/idpf/idpf_common_rxtx.h     |  21 +-
 .../net/intel/idpf/idpf_common_rxtx_avx2.c    |  53 +-
 .../net/intel/idpf/idpf_common_rxtx_avx512.c  |  53 +-
 drivers/net/intel/idpf/idpf_rxtx.c            |  17 +-
 drivers/net/intel/idpf/idpf_rxtx_vec_common.h |   6 +-
 drivers/net/intel/ixgbe/ixgbe_rxtx.c          | 103 ++-
 .../net/intel/ixgbe/ixgbe_rxtx_vec_common.c   |   1 -
 34 files changed, 1394 insertions(+), 2110 deletions(-)
 create mode 100644 drivers/net/intel/common/tx_scalar_fns.h

--
2.51.0

Reply via email to