mbox series

[v4,00/86] Provide flow filter API and statistics

Message ID 20241029164243.1648775-1-sil-plv@napatech.com (mailing list archive)
Headers
Series Provide flow filter API and statistics |

Message

Serhii Iliushyk Oct. 29, 2024, 4:41 p.m. UTC
The list of updates provided by the patchset:
  - FW version
  - Speed capabilities
  - Link status (Link update only)
  - Unicast MAC filter
  - Multicast MAC filter
  - Promiscuous mode (Enable only. The device always run promiscuous mode)
  - Multiple TX and RX queues.
  - Scattered and gather for TX and RX.
  - RSS hash
  - RSS key update
  - RSS based on VLAN or 5-tuple.
  - RSS using different combinations of fields: L3 only, L4 only or both, and
      source only, destination only or both.
  - Several RSS hash keys, one for each flow type.
  - Default RSS operation with no hash key specification.
  - VLAN filtering.
  - RX VLAN stripping via raw decap.
  - TX VLAN insertion via raw encap.
  - Flow API.
  - Multiple process.
  - Tunnel types: GTP.
  - Tunnel HW offload: Packet type, inner/outer RSS, IP and UDP checksum
      verification.
  - Support for multiple rte_flow groups.
  - Encapsulation and decapsulation of GTP data.
  - Packet modification: NAT, TTL decrement, DSCP tagging
  - Traffic mirroring.
  - Jumbo frame support.
  - Port and queue statistics.
  - RMON statistics in extended stats.
  - Flow metering, including meter policy API.
  - Link state information.
  - CAM and TCAM based matching.
  - Exact match of 140 million flows and policies.
  - Basic stats
  - Extended stats
  - Flow metering, including meter policy API.
  - Flow update. Update of the action list for specific flow
  - Asynchronous flow API
  - MTU update

Update: the pthread API was replaced with RTE spinlock in the separate patch.

Danylo Vodopianov (43):
  net/ntnic: add API for configuration NT flow dev
  net/ntnic: add item UDP
  net/ntnic: add action TCP
  net/ntnic: add action VLAN
  net/ntnic: add item SCTP
  net/ntnic: add items IPv6 and ICMPv6
  net/ntnic: add action modify filed
  net/ntnic: add items gtp and actions raw encap/decap
  net/ntnic: add cat module
  net/ntnic: add SLC LR module
  net/ntnic: add PDB module
  net/ntnic: add QSL module
  net/ntnic: add KM module
  net/ntnic: add hash API
  net/ntnic: add TPE module
  net/ntnic: add FLM module
  net/ntnic: add flm rcp module
  net/ntnic: add learn flow queue handling
  net/ntnic: match and action db attributes were added
  net/ntnic: add statistics API
  net/ntnic: add rpf module
  net/ntnic: add statistics poll
  net/ntnic: added flm stat interface
  net/ntnic: add tsm module
  net/ntnic: add xstats
  net/ntnic: added flow statistics
  net/ntnic: add scrub registers
  net/ntnic: add flow aging API
  net/ntnic: add aging API to the inline profile
  net/ntnic: add flow info and flow configure APIs
  net/ntnic: add flow aging event
  net/ntnic: add termination thread
  net/ntnic: add aging documentation
  net/ntnic: add meter API
  net/ntnic: add meter module
  net/ntnic: update meter documentation
  net/ntnic: add action update
  net/ntnic: add flow action update
  net/ntnic: flow update was added
  net/ntnic: add async create/destroy API declaration
  net/ntnic: add async template API declaration
  net/ntnic: add async flow create/delete API implementation
  net/ntnic: add async template APIs implementation

Oleksandr Kolomeiets (18):
  net/ntnic: add flow dump feature
  net/ntnic: add flow flush
  net/ntnic: sort FPGA registers alphanumerically
  net/ntnic: add CSU module registers
  net/ntnic: add FLM module registers
  net/ntnic: add HFU module registers
  net/ntnic: add IFR module registers
  net/ntnic: add MAC Rx module registers
  net/ntnic: add MAC Tx module registers
  net/ntnic: add RPP LR module registers
  net/ntnic: add SLC LR module registers
  net/ntnic: add Tx CPY module registers
  net/ntnic: add Tx INS module registers
  net/ntnic: add Tx RPL module registers
  net/ntnic: add STA module
  net/ntnic: add TSM module
  net/ntnic: update documentation
  net/ntnic: add MTU configuration

Serhii Iliushyk (25):
  net/ntnic: add flow filter API
  net/ntnic: add minimal create/destroy flow operations
  net/ntnic: add internal flow create/destroy API
  net/ntnic: add minimal NT flow inline profile
  net/ntnic: add management API for NT flow profile
  net/ntnic: add NT flow profile management implementation
  net/ntnic: add create/destroy implementation for NT flows
  net/ntnic: add infrastructure for for flow actions and items
  net/ntnic: add action queue
  net/ntnic: add action mark
  net/ntnic: add ation jump
  net/ntnic: add action drop
  net/ntnic: add item eth
  net/ntnic: add item IPv4
  net/ntnic: add item ICMP
  net/ntnic: add item port ID
  net/ntnic: add item void
  net/ntnic: add GMF (Generic MAC Feeder) module
  net/ntnic: update alignment for virt queue structs
  net/ntnic: enable RSS feature
  net/ntnic: update documentation for flow actions update
  net/ntnic: migrate to the RTE spinlock
  net/ntnic: remove unnecessary type cast
  net/ntnic: update async flow API documentation
  net/ntnic: update documentation for set MTU

 doc/guides/nics/features/ntnic.ini            |   33 +
 doc/guides/nics/ntnic.rst                     |   52 +
 doc/guides/rel_notes/release_24_11.rst        |    7 +
 drivers/net/ntnic/adapter/nt4ga_adapter.c     |   29 +-
 .../net/ntnic/adapter/nt4ga_stat/nt4ga_stat.c |  598 ++
 drivers/net/ntnic/dbsconfig/ntnic_dbsconfig.c |    7 +-
 .../net/ntnic/include/common_adapter_defs.h   |   15 +
 drivers/net/ntnic/include/create_elements.h   |   73 +
 drivers/net/ntnic/include/flow_api.h          |  142 +-
 drivers/net/ntnic/include/flow_api_engine.h   |  380 +
 drivers/net/ntnic/include/flow_filter.h       |    1 +
 drivers/net/ntnic/include/hw_mod_backend.h    |  256 +
 drivers/net/ntnic/include/nt4ga_adapter.h     |    2 +
 drivers/net/ntnic/include/ntdrv_4ga.h         |    5 +
 drivers/net/ntnic/include/ntnic_stat.h        |  265 +
 drivers/net/ntnic/include/ntos_drv.h          |   24 +
 .../ntnic/include/stream_binary_flow_api.h    |   67 +
 .../link_mgmt/link_100g/nt4ga_link_100g.c     |    8 +
 drivers/net/ntnic/meson.build                 |   20 +
 .../net/ntnic/nthw/core/include/nthw_core.h   |    1 +
 .../net/ntnic/nthw/core/include/nthw_gmf.h    |   64 +
 .../net/ntnic/nthw/core/include/nthw_i2cm.h   |    4 +-
 .../net/ntnic/nthw/core/include/nthw_rmc.h    |    6 +
 .../net/ntnic/nthw/core/include/nthw_rpf.h    |   49 +
 .../net/ntnic/nthw/core/include/nthw_tsm.h    |   56 +
 drivers/net/ntnic/nthw/core/nthw_fpga.c       |   47 +
 drivers/net/ntnic/nthw/core/nthw_gmf.c        |  133 +
 drivers/net/ntnic/nthw/core/nthw_rmc.c        |   30 +
 drivers/net/ntnic/nthw/core/nthw_rpf.c        |  120 +
 drivers/net/ntnic/nthw/core/nthw_tsm.c        |  167 +
 drivers/net/ntnic/nthw/flow_api/flow_api.c    |  935 ++-
 drivers/net/ntnic/nthw/flow_api/flow_group.c  |   99 +
 drivers/net/ntnic/nthw/flow_api/flow_hasher.c |  156 +
 drivers/net/ntnic/nthw/flow_api/flow_hasher.h |   21 +
 .../net/ntnic/nthw/flow_api/flow_id_table.c   |  145 +
 .../net/ntnic/nthw/flow_api/flow_id_table.h   |   26 +
 drivers/net/ntnic/nthw/flow_api/flow_km.c     | 1171 ++++
 .../ntnic/nthw/flow_api/hw_mod/hw_mod_cat.c   |  457 ++
 .../ntnic/nthw/flow_api/hw_mod/hw_mod_flm.c   |  723 ++
 .../ntnic/nthw/flow_api/hw_mod/hw_mod_hsh.c   |  179 +
 .../ntnic/nthw/flow_api/hw_mod/hw_mod_km.c    |  380 +
 .../ntnic/nthw/flow_api/hw_mod/hw_mod_pdb.c   |  144 +
 .../ntnic/nthw/flow_api/hw_mod/hw_mod_qsl.c   |  218 +
 .../nthw/flow_api/hw_mod/hw_mod_slc_lr.c      |  100 +
 .../ntnic/nthw/flow_api/hw_mod/hw_mod_tpe.c   |  853 +++
 .../flow_api/profile_inline/flm_age_queue.c   |  164 +
 .../flow_api/profile_inline/flm_age_queue.h   |   42 +
 .../flow_api/profile_inline/flm_evt_queue.c   |  293 +
 .../flow_api/profile_inline/flm_evt_queue.h   |   55 +
 .../flow_api/profile_inline/flm_lrn_queue.c   |   70 +
 .../flow_api/profile_inline/flm_lrn_queue.h   |   25 +
 .../profile_inline/flow_api_hw_db_inline.c    | 3000 ++++++++
 .../profile_inline/flow_api_hw_db_inline.h    |  394 ++
 .../profile_inline/flow_api_profile_inline.c  | 6086 +++++++++++++++++
 .../profile_inline/flow_api_profile_inline.h  |  132 +
 .../flow_api_profile_inline_config.h          |  127 +
 .../ntnic/nthw/flow_filter/flow_nthw_flm.c    |   47 +-
 .../net/ntnic/nthw/model/nthw_fpga_model.c    |   12 +
 .../net/ntnic/nthw/model/nthw_fpga_model.h    |    1 +
 drivers/net/ntnic/nthw/nthw_rac.c             |   38 +-
 drivers/net/ntnic/nthw/nthw_rac.h             |    2 +-
 .../net/ntnic/nthw/ntnic_meter/ntnic_meter.c  |  483 ++
 drivers/net/ntnic/nthw/rte_pmd_ntnic.h        |   43 +
 drivers/net/ntnic/nthw/stat/nthw_stat.c       |  498 ++
 .../supported/nthw_fpga_9563_055_049_0000.c   | 3317 ++++++---
 .../ntnic/nthw/supported/nthw_fpga_mod_defs.h |   11 +-
 .../nthw/supported/nthw_fpga_mod_str_map.c    |    2 +
 .../ntnic/nthw/supported/nthw_fpga_reg_defs.h |    5 +
 .../supported/nthw_fpga_reg_defs_mac_rx.h     |   29 +
 .../supported/nthw_fpga_reg_defs_mac_tx.h     |   21 +
 .../nthw/supported/nthw_fpga_reg_defs_rpf.h   |   19 +
 .../nthw/supported/nthw_fpga_reg_defs_sta.h   |   48 +
 .../nthw/supported/nthw_fpga_reg_defs_tsm.h   |  205 +
 drivers/net/ntnic/ntnic_ethdev.c              |  813 ++-
 drivers/net/ntnic/ntnic_filter/ntnic_filter.c | 1348 ++++
 drivers/net/ntnic/ntnic_mod_reg.c             |  111 +
 drivers/net/ntnic/ntnic_mod_reg.h             |  331 +
 drivers/net/ntnic/ntnic_xstats/ntnic_xstats.c |  829 +++
 drivers/net/ntnic/ntutil/nt_util.h            |   12 +
 79 files changed, 25772 insertions(+), 1109 deletions(-)
 create mode 100644 drivers/net/ntnic/adapter/nt4ga_stat/nt4ga_stat.c
 create mode 100644 drivers/net/ntnic/include/common_adapter_defs.h
 create mode 100644 drivers/net/ntnic/include/create_elements.h
 create mode 100644 drivers/net/ntnic/nthw/core/include/nthw_gmf.h
 create mode 100644 drivers/net/ntnic/nthw/core/include/nthw_rpf.h
 create mode 100644 drivers/net/ntnic/nthw/core/include/nthw_tsm.h
 create mode 100644 drivers/net/ntnic/nthw/core/nthw_gmf.c
 create mode 100644 drivers/net/ntnic/nthw/core/nthw_rpf.c
 create mode 100644 drivers/net/ntnic/nthw/core/nthw_tsm.c
 create mode 100644 drivers/net/ntnic/nthw/flow_api/flow_group.c
 create mode 100644 drivers/net/ntnic/nthw/flow_api/flow_hasher.c
 create mode 100644 drivers/net/ntnic/nthw/flow_api/flow_hasher.h
 create mode 100644 drivers/net/ntnic/nthw/flow_api/flow_id_table.c
 create mode 100644 drivers/net/ntnic/nthw/flow_api/flow_id_table.h
 create mode 100644 drivers/net/ntnic/nthw/flow_api/profile_inline/flm_age_queue.c
 create mode 100644 drivers/net/ntnic/nthw/flow_api/profile_inline/flm_age_queue.h
 create mode 100644 drivers/net/ntnic/nthw/flow_api/profile_inline/flm_evt_queue.c
 create mode 100644 drivers/net/ntnic/nthw/flow_api/profile_inline/flm_evt_queue.h
 create mode 100644 drivers/net/ntnic/nthw/flow_api/profile_inline/flm_lrn_queue.c
 create mode 100644 drivers/net/ntnic/nthw/flow_api/profile_inline/flm_lrn_queue.h
 create mode 100644 drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_hw_db_inline.c
 create mode 100644 drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_hw_db_inline.h
 create mode 100644 drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_profile_inline.c
 create mode 100644 drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_profile_inline.h
 create mode 100644 drivers/net/ntnic/nthw/flow_api/profile_inline/flow_api_profile_inline_config.h
 create mode 100644 drivers/net/ntnic/nthw/ntnic_meter/ntnic_meter.c
 create mode 100644 drivers/net/ntnic/nthw/rte_pmd_ntnic.h
 create mode 100644 drivers/net/ntnic/nthw/stat/nthw_stat.c
 create mode 100644 drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_mac_rx.h
 create mode 100644 drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_mac_tx.h
 create mode 100644 drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_rpf.h
 create mode 100644 drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_sta.h
 create mode 100644 drivers/net/ntnic/nthw/supported/nthw_fpga_reg_defs_tsm.h
 create mode 100644 drivers/net/ntnic/ntnic_filter/ntnic_filter.c
 create mode 100644 drivers/net/ntnic/ntnic_xstats/ntnic_xstats.c
  

Comments

Ferruh Yigit Oct. 30, 2024, 2:01 a.m. UTC | #1
On 10/29/2024 4:41 PM, Serhii Iliushyk wrote:
> The list of updates provided by the patchset:
>   - FW version
>   - Speed capabilities
>   - Link status (Link update only)
>   - Unicast MAC filter
>   - Multicast MAC filter
>   - Promiscuous mode (Enable only. The device always run promiscuous mode)
>   - Multiple TX and RX queues.
>   - Scattered and gather for TX and RX.
>   - RSS hash
>   - RSS key update
>   - RSS based on VLAN or 5-tuple.
>   - RSS using different combinations of fields: L3 only, L4 only or both, and
>       source only, destination only or both.
>   - Several RSS hash keys, one for each flow type.
>   - Default RSS operation with no hash key specification.
>   - VLAN filtering.
>   - RX VLAN stripping via raw decap.
>   - TX VLAN insertion via raw encap.
>   - Flow API.
>   - Multiple process.
>   - Tunnel types: GTP.
>   - Tunnel HW offload: Packet type, inner/outer RSS, IP and UDP checksum
>       verification.
>   - Support for multiple rte_flow groups.
>   - Encapsulation and decapsulation of GTP data.
>   - Packet modification: NAT, TTL decrement, DSCP tagging
>   - Traffic mirroring.
>   - Jumbo frame support.
>   - Port and queue statistics.
>   - RMON statistics in extended stats.
>   - Flow metering, including meter policy API.
>   - Link state information.
>   - CAM and TCAM based matching.
>   - Exact match of 140 million flows and policies.
>   - Basic stats
>   - Extended stats
>   - Flow metering, including meter policy API.
>   - Flow update. Update of the action list for specific flow
>   - Asynchronous flow API
>   - MTU update
> 
> Update: the pthread API was replaced with RTE spinlock in the separate patch.
> 
> Danylo Vodopianov (43):
>   net/ntnic: add API for configuration NT flow dev
>   net/ntnic: add item UDP
>   net/ntnic: add action TCP
>   net/ntnic: add action VLAN
>   net/ntnic: add item SCTP
>   net/ntnic: add items IPv6 and ICMPv6
>   net/ntnic: add action modify filed
>   net/ntnic: add items gtp and actions raw encap/decap
>   net/ntnic: add cat module
>   net/ntnic: add SLC LR module
>   net/ntnic: add PDB module
>   net/ntnic: add QSL module
>   net/ntnic: add KM module
>   net/ntnic: add hash API
>   net/ntnic: add TPE module
>   net/ntnic: add FLM module
>   net/ntnic: add flm rcp module
>   net/ntnic: add learn flow queue handling
>   net/ntnic: match and action db attributes were added
>   net/ntnic: add statistics API
>   net/ntnic: add rpf module
>   net/ntnic: add statistics poll
>   net/ntnic: added flm stat interface
>   net/ntnic: add tsm module
>   net/ntnic: add xstats
>   net/ntnic: added flow statistics
>   net/ntnic: add scrub registers
>   net/ntnic: add flow aging API
>   net/ntnic: add aging API to the inline profile
>   net/ntnic: add flow info and flow configure APIs
>   net/ntnic: add flow aging event
>   net/ntnic: add termination thread
>   net/ntnic: add aging documentation
>   net/ntnic: add meter API
>   net/ntnic: add meter module
>   net/ntnic: update meter documentation
>   net/ntnic: add action update
>   net/ntnic: add flow action update
>   net/ntnic: flow update was added
>   net/ntnic: add async create/destroy API declaration
>   net/ntnic: add async template API declaration
>   net/ntnic: add async flow create/delete API implementation
>   net/ntnic: add async template APIs implementation
> 
> Oleksandr Kolomeiets (18):
>   net/ntnic: add flow dump feature
>   net/ntnic: add flow flush
>   net/ntnic: sort FPGA registers alphanumerically
>   net/ntnic: add CSU module registers
>   net/ntnic: add FLM module registers
>   net/ntnic: add HFU module registers
>   net/ntnic: add IFR module registers
>   net/ntnic: add MAC Rx module registers
>   net/ntnic: add MAC Tx module registers
>   net/ntnic: add RPP LR module registers
>   net/ntnic: add SLC LR module registers
>   net/ntnic: add Tx CPY module registers
>   net/ntnic: add Tx INS module registers
>   net/ntnic: add Tx RPL module registers
>   net/ntnic: add STA module
>   net/ntnic: add TSM module
>   net/ntnic: update documentation
>   net/ntnic: add MTU configuration
> 
> Serhii Iliushyk (25):
>   net/ntnic: add flow filter API
>   net/ntnic: add minimal create/destroy flow operations
>   net/ntnic: add internal flow create/destroy API
>   net/ntnic: add minimal NT flow inline profile
>   net/ntnic: add management API for NT flow profile
>   net/ntnic: add NT flow profile management implementation
>   net/ntnic: add create/destroy implementation for NT flows
>   net/ntnic: add infrastructure for for flow actions and items
>   net/ntnic: add action queue
>   net/ntnic: add action mark
>   net/ntnic: add ation jump
>   net/ntnic: add action drop
>   net/ntnic: add item eth
>   net/ntnic: add item IPv4
>   net/ntnic: add item ICMP
>   net/ntnic: add item port ID
>   net/ntnic: add item void
>   net/ntnic: add GMF (Generic MAC Feeder) module
>   net/ntnic: update alignment for virt queue structs
>   net/ntnic: enable RSS feature
>   net/ntnic: update documentation for flow actions update
>   net/ntnic: migrate to the RTE spinlock
>   net/ntnic: remove unnecessary type cast
>   net/ntnic: update async flow API documentation
>   net/ntnic: update documentation for set MTU
>

Hi Serhii,

After each patch, driver should build fine, this is required for git
bisect testing, but in this patch series build fails after some patches,
can you please check?

Also a minor comment, in some patch titles 'API' is used, in DPDK scope
API is functions exposed from library to application use, so almost all
use of API is wrong, can you please update them?
Like "net/ntnic: add flow filter API" can become "net/ntnic: support
flow filter"