mbox

[v3,00/34] add support for host based flow table management

Message ID 1586852011-37536-1-git-send-email-venkatkumar.duvvuru@broadcom.com (mailing list archive)
Headers

Message

Venkat Duvvuru April 14, 2020, 8:12 a.m. UTC
This patchset introduces a new mechanism to allow host-memory based
flow table management. This should allow higher flow scalability
than what is currently supported. This new approach also defines a
new rte_flow parser, and mapper which currently supports basic packet
classification in receive path. The patchset uses a newly implemented
control-plane firmware interface which optimizes flow insertions and
deletions.

This is a baseline patchset with limited scale. Follow on patches will
add support for more protocol headers, rte_flow attributes, actions
and such.

Currently the code path is disabled by default and can be enabled
using bnxt devargs. For ex: "-w 0000:0d:00.0,host-based-truflow=1”.

v2==>v3
=======
1. Fixed compilation issues reported by CI

Ajit Kumar Khaparde (1):
  net/bnxt: add updated dpdk hsi structure

Farah Smith (2):
  net/bnxt: add tf core identifier support
  net/bnxt: add tf core table scope support

Kishore Padmanabha (8):
  net/bnxt: match rte flow items with flow template patterns
  net/bnxt: match rte flow actions with flow template actions
  net/bnxt: add support for rte flow item parsing
  net/bnxt: add support for rte flow action parsing
  net/bnxt: add support for rte flow create driver hook
  net/bnxt: add support for rte flow validate driver hook
  net/bnxt: add support for rte flow destroy driver hook
  net/bnxt: add support for rte flow flush driver hook

Michael Wildt (4):
  net/bnxt: add initial tf core session open
  net/bnxt: add initial tf core session close support
  net/bnxt: add tf core session sram functions
  net/bnxt: add resource manager functionality

Mike Baucom (5):
  net/bnxt: add helper functions for blob/regfile ops
  net/bnxt: add support to process action tables
  net/bnxt: add support to process key tables
  net/bnxt: add support to free key and action tables
  net/bnxt: add support to alloc and program key and act tbls

Pete Spreadborough (2):
  net/bnxt: add truflow message handlers
  net/bnxt: add EM/EEM functionality

Randy Schacher (1):
  net/bnxt: update hwrm prep to use ptr

Shahaji Bhosle (2):
  net/bnxt: add initial tf core resource mgmt support
  net/bnxt: add tf core TCAM support

Venkat Duvvuru (9):
  net/bnxt: fetch SVIF information from the firmware
  net/bnxt: fetch vnic info from DPDK port
  net/bnxt: add devargs parameter for host memory based TRUFLOW feature
  net/bnxt: add support for ULP session manager init
  net/bnxt: add support for ULP session manager cleanup
  net/bnxt: register tf rte flow ops
  net/bnxt: disable vector mode when host based TRUFLOW is enabled
  net/bnxt: add support for injecting mark into packet’s mbuf
  net/bnxt: enable meson build on truflow code

 drivers/net/bnxt/Makefile                       |   24 +
 drivers/net/bnxt/bnxt.h                         |   21 +-
 drivers/net/bnxt/bnxt_ethdev.c                  |  118 +-
 drivers/net/bnxt/bnxt_hwrm.c                    |  319 +-
 drivers/net/bnxt/bnxt_hwrm.h                    |   19 +
 drivers/net/bnxt/bnxt_rxr.c                     |  153 +-
 drivers/net/bnxt/hsi_struct_def_dpdk.h          | 3786 ++++++++++++++++++++---
 drivers/net/bnxt/meson.build                    |   26 +
 drivers/net/bnxt/tf_core/bitalloc.c             |  364 +++
 drivers/net/bnxt/tf_core/bitalloc.h             |  119 +
 drivers/net/bnxt/tf_core/hwrm_tf.h              |  992 ++++++
 drivers/net/bnxt/tf_core/lookup3.h              |  162 +
 drivers/net/bnxt/tf_core/rand.c                 |   47 +
 drivers/net/bnxt/tf_core/rand.h                 |   36 +
 drivers/net/bnxt/tf_core/stack.c                |  107 +
 drivers/net/bnxt/tf_core/stack.h                |  107 +
 drivers/net/bnxt/tf_core/tf_core.c              |  659 ++++
 drivers/net/bnxt/tf_core/tf_core.h              | 1376 ++++++++
 drivers/net/bnxt/tf_core/tf_em.c                |  515 +++
 drivers/net/bnxt/tf_core/tf_em.h                |  117 +
 drivers/net/bnxt/tf_core/tf_ext_flow_handle.h   |  166 +
 drivers/net/bnxt/tf_core/tf_msg.c               | 1248 ++++++++
 drivers/net/bnxt/tf_core/tf_msg.h               |  256 ++
 drivers/net/bnxt/tf_core/tf_msg_common.h        |   47 +
 drivers/net/bnxt/tf_core/tf_project.h           |   24 +
 drivers/net/bnxt/tf_core/tf_resources.h         |  542 ++++
 drivers/net/bnxt/tf_core/tf_rm.c                | 3297 ++++++++++++++++++++
 drivers/net/bnxt/tf_core/tf_rm.h                |  321 ++
 drivers/net/bnxt/tf_core/tf_session.h           |  300 ++
 drivers/net/bnxt/tf_core/tf_tbl.c               | 1836 +++++++++++
 drivers/net/bnxt/tf_core/tf_tbl.h               |  126 +
 drivers/net/bnxt/tf_core/tfp.c                  |  163 +
 drivers/net/bnxt/tf_core/tfp.h                  |  188 ++
 drivers/net/bnxt/tf_ulp/bnxt_tf_common.h        |   54 +
 drivers/net/bnxt/tf_ulp/bnxt_ulp.c              |  695 +++++
 drivers/net/bnxt/tf_ulp/bnxt_ulp.h              |  110 +
 drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c         |  303 ++
 drivers/net/bnxt/tf_ulp/ulp_flow_db.c           |  626 ++++
 drivers/net/bnxt/tf_ulp/ulp_flow_db.h           |  156 +
 drivers/net/bnxt/tf_ulp/ulp_mapper.c            | 1502 +++++++++
 drivers/net/bnxt/tf_ulp/ulp_mapper.h            |   69 +
 drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c          |  271 ++
 drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h          |  111 +
 drivers/net/bnxt/tf_ulp/ulp_matcher.c           |  188 ++
 drivers/net/bnxt/tf_ulp/ulp_matcher.h           |   35 +
 drivers/net/bnxt/tf_ulp/ulp_rte_parser.c        | 1208 ++++++++
 drivers/net/bnxt/tf_ulp/ulp_rte_parser.h        |  203 ++
 drivers/net/bnxt/tf_ulp/ulp_template_db.c       | 1713 ++++++++++
 drivers/net/bnxt/tf_ulp/ulp_template_db.h       |  354 +++
 drivers/net/bnxt/tf_ulp/ulp_template_field_db.h |  133 +
 drivers/net/bnxt/tf_ulp/ulp_template_struct.h   |  266 ++
 drivers/net/bnxt/tf_ulp/ulp_utils.c             |  521 ++++
 drivers/net/bnxt/tf_ulp/ulp_utils.h             |  279 ++
 53 files changed, 25883 insertions(+), 495 deletions(-)
 create mode 100644 drivers/net/bnxt/tf_core/bitalloc.c
 create mode 100644 drivers/net/bnxt/tf_core/bitalloc.h
 create mode 100644 drivers/net/bnxt/tf_core/hwrm_tf.h
 create mode 100644 drivers/net/bnxt/tf_core/lookup3.h
 create mode 100644 drivers/net/bnxt/tf_core/rand.c
 create mode 100644 drivers/net/bnxt/tf_core/rand.h
 create mode 100644 drivers/net/bnxt/tf_core/stack.c
 create mode 100644 drivers/net/bnxt/tf_core/stack.h
 create mode 100644 drivers/net/bnxt/tf_core/tf_core.c
 create mode 100644 drivers/net/bnxt/tf_core/tf_core.h
 create mode 100644 drivers/net/bnxt/tf_core/tf_em.c
 create mode 100644 drivers/net/bnxt/tf_core/tf_em.h
 create mode 100644 drivers/net/bnxt/tf_core/tf_ext_flow_handle.h
 create mode 100644 drivers/net/bnxt/tf_core/tf_msg.c
 create mode 100644 drivers/net/bnxt/tf_core/tf_msg.h
 create mode 100644 drivers/net/bnxt/tf_core/tf_msg_common.h
 create mode 100644 drivers/net/bnxt/tf_core/tf_project.h
 create mode 100644 drivers/net/bnxt/tf_core/tf_resources.h
 create mode 100644 drivers/net/bnxt/tf_core/tf_rm.c
 create mode 100644 drivers/net/bnxt/tf_core/tf_rm.h
 create mode 100644 drivers/net/bnxt/tf_core/tf_session.h
 create mode 100644 drivers/net/bnxt/tf_core/tf_tbl.c
 create mode 100644 drivers/net/bnxt/tf_core/tf_tbl.h
 create mode 100644 drivers/net/bnxt/tf_core/tfp.c
 create mode 100644 drivers/net/bnxt/tf_core/tfp.h
 create mode 100644 drivers/net/bnxt/tf_ulp/bnxt_tf_common.h
 create mode 100644 drivers/net/bnxt/tf_ulp/bnxt_ulp.c
 create mode 100644 drivers/net/bnxt/tf_ulp/bnxt_ulp.h
 create mode 100644 drivers/net/bnxt/tf_ulp/bnxt_ulp_flow.c
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_flow_db.c
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_flow_db.h
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_mapper.c
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_mapper.h
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_mark_mgr.c
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_mark_mgr.h
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_matcher.c
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_matcher.h
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_rte_parser.h
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_template_db.c
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_template_db.h
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_template_field_db.h
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_template_struct.h
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_utils.c
 create mode 100644 drivers/net/bnxt/tf_ulp/ulp_utils.h