numam-dpdk/drivers/net/mlx5
Xiaoyu Min 4d368e1da3 net/mlx5: support flow counter action for HWS
This commit adds HW steering counter action support.
The pool mechanism is the basic data structure for the HW steering
counter.

The HW steering's counter pool is based on the rte_ring of zero-copy
variation.

There are two global rte_rings:
1. free_list:
     Store the counters indexes, which are ready for use.
2. wait_reset_list:
     Store the counters indexes, which are just freed from the user and
     need to query the hardware counter to get the reset value before
     this counter can be reused again.

The counter pool also supports cache per HW steering's queues, which are
also based on the rte_ring of zero-copy variation.

The cache can be configured in size, preload, threshold, and fetch size,
they are all exposed via device args.

The main operations of the counter pool are as follows:

 - Get one counter from the pool:
   1. The user call _get_* API.
   2. If the cache is enabled, dequeue one counter index from the local
      cache:
      2. A: if the dequeued one from the local cache is still in reset
        status (counter's query_gen_when_free is equal to pool's query
        gen):
        I. Flush all counters in the local cache back to global
           wait_reset_list.
        II. Fetch _fetch_sz_ counters into the cache from the global
            free list.
        III. Fetch one counter from the cache.
   3. If the cache is empty, fetch _fetch_sz_ counters from the global
      free list into the cache and fetch one counter from the cache.
 - Free one counter into the pool:
   1. The user calls _put_* API.
   2. Put the counter into the local cache.
   3. If the local cache is full:
      A: Write back all counters above _threshold_ into the global
         wait_reset_list.
      B: Also, write back this counter into the global wait_reset_list.

When the local cache is disabled, _get_/_put_ cache directly from/into
global list.

Signed-off-by: Xiaoyu Min <jackmin@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
2022-10-26 13:33:39 +02:00
..
hws net/mlx5/hws: enable hardware steering 2022-10-26 13:33:36 +02:00
linux net/mlx5: add extended metadata mode for HWS 2022-10-26 13:33:38 +02:00
windows common/mlx5: add send to kernel flow action 2022-10-26 13:33:28 +02:00
meson.build net/mlx5: support flow counter action for HWS 2022-10-26 13:33:39 +02:00
mlx5_defs.h net/mlx5: support flow counter action for HWS 2022-10-26 13:33:39 +02:00
mlx5_devx.c net/mlx5/hws: enable hardware steering 2022-10-26 13:33:36 +02:00
mlx5_devx.h net/mlx5: support descriptor LWM for Rx queue 2022-06-23 17:23:29 +02:00
mlx5_ethdev.c net/mlx5: allow hairpin Rx queue in locked memory 2022-10-08 18:30:50 +02:00
mlx5_flow_aso.c net/mlx5: support flow counter action for HWS 2022-10-26 13:33:39 +02:00
mlx5_flow_dv.c net/mlx5: add extended metadata mode for HWS 2022-10-26 13:33:38 +02:00
mlx5_flow_flex.c net/mlx5: fix flex item header length translation 2022-03-02 17:36:47 +01:00
mlx5_flow_hw.c net/mlx5: support flow counter action for HWS 2022-10-26 13:33:39 +02:00
mlx5_flow_meter.c net/mlx5: support flow meter action for HWS 2022-10-26 13:33:39 +02:00
mlx5_flow_verbs.c net/mlx5: support flow port action with HWS 2022-10-26 13:33:38 +02:00
mlx5_flow.c net/mlx5: support flow counter action for HWS 2022-10-26 13:33:39 +02:00
mlx5_flow.h net/mlx5: support flow counter action for HWS 2022-10-26 13:33:39 +02:00
mlx5_hws_cnt.c net/mlx5: support flow counter action for HWS 2022-10-26 13:33:39 +02:00
mlx5_hws_cnt.h net/mlx5: support flow counter action for HWS 2022-10-26 13:33:39 +02:00
mlx5_mac.c net/mlx5: support Sub-Function 2021-07-22 00:11:14 +02:00
mlx5_rss.c net/mlx5: fix RETA update without stopping device 2021-11-10 15:44:44 +01:00
mlx5_rx.c net/mlx5: fix Rx queue recovery mechanism 2022-08-29 12:53:49 +02:00
mlx5_rx.h net/mlx5: support Rx descriptor threshold event 2022-06-23 17:25:02 +02:00
mlx5_rxmode.c net/mlx5: concentrate all device configurations 2022-02-21 11:36:51 +01:00
mlx5_rxq.c net/mlx5: fix LRO requirements check 2022-10-02 09:13:51 +02:00
mlx5_rxtx_vec_altivec.h avoid AltiVec keyword vector 2022-05-25 11:49:39 +02:00
mlx5_rxtx_vec_neon.h fix spelling in comments and strings 2022-01-11 12:16:53 +01:00
mlx5_rxtx_vec_sse.h fix spelling in comments and strings 2022-01-11 12:16:53 +01:00
mlx5_rxtx_vec.c net/mlx5: improve stride parameter names 2021-12-05 12:22:09 +01:00
mlx5_rxtx_vec.h ethdev: add namespace 2021-10-22 18:15:38 +02:00
mlx5_rxtx.c net/mlx5: move Rx queue DevX resource 2021-11-04 22:55:48 +01:00
mlx5_rxtx.h common/mlx5: share MR mempool registration 2021-10-21 15:58:00 +02:00
mlx5_stats.c net/mlx5: fix Rx/Tx stats concurrency 2022-04-21 12:50:26 +02:00
mlx5_testpmd.c net/mlx5: add test for external Rx queue 2022-07-05 20:02:57 +02:00
mlx5_testpmd.h app/testpmd: add host shaper command 2022-06-23 17:25:04 +02:00
mlx5_trigger.c net/mlx5: add extended metadata mode for HWS 2022-10-26 13:33:38 +02:00
mlx5_tx_empw.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx_mpw.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx_nompw.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx_txpp.c net/mlx5: separate Tx burst functions to different files 2021-04-15 08:24:59 +02:00
mlx5_tx.c net/mlx5: separate per port configuration 2022-02-21 11:36:54 +01:00
mlx5_tx.h net/mlx5: fix Tx check for hardware descriptor length 2022-10-02 09:13:53 +02:00
mlx5_txpp.c common/mlx5: share interrupt management 2022-06-23 17:24:59 +02:00
mlx5_txq.c bus/pci: make driver-only headers private 2022-09-23 16:14:34 +02:00
mlx5_utils.c net/mlx5: fix indexed pool fetch overlap 2022-03-01 22:24:22 +01:00
mlx5_utils.h net/mlx5: remove unused function 2022-02-23 15:57:33 +01:00
mlx5_vlan.c net/mlx5: concentrate all device configurations 2022-02-21 11:36:51 +01:00
mlx5.c net/mlx5: support flow counter action for HWS 2022-10-26 13:33:39 +02:00
mlx5.h net/mlx5: support flow counter action for HWS 2022-10-26 13:33:39 +02:00
rte_pmd_mlx5.h net/mlx5: add API to configure host port shaper 2022-06-23 17:25:04 +02:00
version.map version: 22.11-rc0 2022-07-21 12:13:48 +02:00