diff mbox series

[v5,2/3] doc: add flow API features tables

Message ID 20210407223320.2952469-3-thomas@monjalon.net (mailing list archive)
State New
Delegated to: Thomas Monjalon
Headers show
Series rte_flow doc matrix | expand

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Thomas Monjalon April 7, 2021, 10:33 p.m. UTC
The NICs overview table lists all supported features per driver.
There was a single row for "Flow API",
although rte_flow is composed of many items and actions.

The row "Flow API" is replaced with two new tables for items and actions.

Also, since rte_flow is not implemented in all drivers,
it would be ugly to add empty sections in some files.
That's why the error message for missing INI section is removed.

The lists are sorted alphabetically.
The extra files for some VF and vectorized data paths are not filled.

Signed-off-by: Asaf Penso <asafp@nvidia.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 .gitignore                                 |   2 +
 doc/guides/conf.py                         |  18 ++--
 doc/guides/nics/features.rst               |  11 --
 doc/guides/nics/features/bnxt.ini          |  26 ++++-
 doc/guides/nics/features/cxgbe.ini         |  31 +++++-
 doc/guides/nics/features/default.ini       | 116 ++++++++++++++++++++-
 doc/guides/nics/features/dpaa2.ini         |  19 +++-
 doc/guides/nics/features/e1000.ini         |  14 +++
 doc/guides/nics/features/enic.ini          |  29 +++++-
 doc/guides/nics/features/failsafe.ini      |   1 -
 doc/guides/nics/features/hinic.ini         |  16 ++-
 doc/guides/nics/features/hns3.ini          |  23 +++-
 doc/guides/nics/features/hns3_vf.ini       |   1 -
 doc/guides/nics/features/i40e.ini          |  31 +++++-
 doc/guides/nics/features/iavf.ini          |  29 +++++-
 doc/guides/nics/features/ice.ini           |  33 +++++-
 doc/guides/nics/features/ice_dcf.ini       |   1 -
 doc/guides/nics/features/igb.ini           |   1 -
 doc/guides/nics/features/igc.ini           |  12 ++-
 doc/guides/nics/features/ipn3ke.ini        |  15 ++-
 doc/guides/nics/features/ixgbe.ini         |  24 ++++-
 doc/guides/nics/features/mlx4.ini          |  13 ++-
 doc/guides/nics/features/mlx5.ini          |  71 ++++++++++++-
 doc/guides/nics/features/mvpp2.ini         |  14 +++
 doc/guides/nics/features/octeontx2.ini     |  42 +++++++-
 doc/guides/nics/features/octeontx2_vec.ini |   1 -
 doc/guides/nics/features/octeontx2_vf.ini  |   1 -
 doc/guides/nics/features/qede.ini          |  11 +-
 doc/guides/nics/features/sfc.ini           |  35 ++++++-
 doc/guides/nics/features/tap.ini           |  15 ++-
 doc/guides/nics/features/txgbe.ini         |  24 ++++-
 doc/guides/nics/overview.rst               |   8 ++
 32 files changed, 644 insertions(+), 44 deletions(-)

Comments

Kiran Kumar Kokkilagadda April 8, 2021, 8:45 a.m. UTC | #1
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Thursday, April 8, 2021 4:03 AM
> To: dev@dpdk.org
> Cc: ferruh.yigit@intel.com; andrew.rybchenko@oktetlabs.ru; Asaf Penso
> <asafp@nvidia.com>; Ajit Khaparde <ajit.khaparde@broadcom.com>; Somnath
> Kotur <somnath.kotur@broadcom.com>; Rahul Lakkireddy
> <rahul.lakkireddy@chelsio.com>; Hemant Agrawal
> <hemant.agrawal@nxp.com>; Sachin Saxena <sachin.saxena@oss.nxp.com>;
> Jeff Guo <jia.guo@intel.com>; Haiyue Wang <haiyue.wang@intel.com>; John
> Daley <johndale@cisco.com>; Hyong Youb Kim <hyonkim@cisco.com>; Gaetan
> Rivet <grive@u256.net>; Ziyang Xuan <xuanziyang2@huawei.com>; Xiaoyun
> Wang <cloud.wangxiaoyun@huawei.com>; Guoyang Zhou
> <zhouguoyang@huawei.com>; Min Hu (Connor) <humin29@huawei.com>;
> Yisen Zhuang <yisen.zhuang@huawei.com>; Lijun Ou <oulijun@huawei.com>;
> Beilei Xing <beilei.xing@intel.com>; Jingjing Wu <jingjing.wu@intel.com>;
> Qiming Yang <qiming.yang@intel.com>; Qi Zhang <qi.z.zhang@intel.com>;
> Rosen Xu <rosen.xu@intel.com>; Matan Azrad <matan@nvidia.com>; Shahaf
> Shuler <shahafs@nvidia.com>; Viacheslav Ovsiienko <viacheslavo@nvidia.com>;
> Liron Himi <lironh@marvell.com>; Jerin Jacob Kollanukkaran
> <jerinj@marvell.com>; Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>;
> Kiran Kumar Kokkilagadda <kirankumark@marvell.com>; Rasesh Mody
> <rmody@marvell.com>; Devendra Singh Rawat <dsinghrawat@marvell.com>;
> Igor Russkikh <irusskikh@marvell.com>; Keith Wiles <keith.wiles@intel.com>;
> Jiawen Wu <jiawenwu@trustnetic.com>; Jian Wang
> <jianwang@trustnetic.com>
> Subject: [EXT] [PATCH v5 2/3] doc: add flow API features tables
> 
> External Email
> 
> ----------------------------------------------------------------------
> The NICs overview table lists all supported features per driver.
> There was a single row for "Flow API",
> although rte_flow is composed of many items and actions.
> 
> The row "Flow API" is replaced with two new tables for items and actions.
> 
> Also, since rte_flow is not implemented in all drivers, it would be ugly to add
> empty sections in some files.
> That's why the error message for missing INI section is removed.
> 
> The lists are sorted alphabetically.
> The extra files for some VF and vectorized data paths are not filled.
> 
> Signed-off-by: Asaf Penso <asafp@nvidia.com>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Acked-by: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>

> ---
>  .gitignore                                 |   2 +
>  doc/guides/conf.py                         |  18 ++--
>  doc/guides/nics/features.rst               |  11 --
>  doc/guides/nics/features/bnxt.ini          |  26 ++++-
>  doc/guides/nics/features/cxgbe.ini         |  31 +++++-
>  doc/guides/nics/features/default.ini       | 116 ++++++++++++++++++++-
>  doc/guides/nics/features/dpaa2.ini         |  19 +++-
>  doc/guides/nics/features/e1000.ini         |  14 +++
>  doc/guides/nics/features/enic.ini          |  29 +++++-
>  doc/guides/nics/features/failsafe.ini      |   1 -
>  doc/guides/nics/features/hinic.ini         |  16 ++-
>  doc/guides/nics/features/hns3.ini          |  23 +++-
>  doc/guides/nics/features/hns3_vf.ini       |   1 -
>  doc/guides/nics/features/i40e.ini          |  31 +++++-
>  doc/guides/nics/features/iavf.ini          |  29 +++++-
>  doc/guides/nics/features/ice.ini           |  33 +++++-
>  doc/guides/nics/features/ice_dcf.ini       |   1 -
>  doc/guides/nics/features/igb.ini           |   1 -
>  doc/guides/nics/features/igc.ini           |  12 ++-
>  doc/guides/nics/features/ipn3ke.ini        |  15 ++-
>  doc/guides/nics/features/ixgbe.ini         |  24 ++++-
>  doc/guides/nics/features/mlx4.ini          |  13 ++-
>  doc/guides/nics/features/mlx5.ini          |  71 ++++++++++++-
>  doc/guides/nics/features/mvpp2.ini         |  14 +++
>  doc/guides/nics/features/octeontx2.ini     |  42 +++++++-
>  doc/guides/nics/features/octeontx2_vec.ini |   1 -
>  doc/guides/nics/features/octeontx2_vf.ini  |   1 -
>  doc/guides/nics/features/qede.ini          |  11 +-
>  doc/guides/nics/features/sfc.ini           |  35 ++++++-
>  doc/guides/nics/features/tap.ini           |  15 ++-
>  doc/guides/nics/features/txgbe.ini         |  24 ++++-
>  doc/guides/nics/overview.rst               |   8 ++
>  32 files changed, 644 insertions(+), 44 deletions(-)
> 
> diff --git a/.gitignore b/.gitignore
> index f73d93ca53..b19c0717e6 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -3,6 +3,8 @@
> 
>  # ignore generated documentation tables  doc/guides/nics/overview_table.txt
> +doc/guides/nics/rte_flow_actions_table.txt
> +doc/guides/nics/rte_flow_items_table.txt
>  doc/guides/cryptodevs/overview_feature_table.txt
>  doc/guides/cryptodevs/overview_cipher_table.txt
>  doc/guides/cryptodevs/overview_auth_table.txt
> diff --git a/doc/guides/conf.py b/doc/guides/conf.py index
> ec59aeae7e..70213843c1 100644
> --- a/doc/guides/conf.py
> +++ b/doc/guides/conf.py
> @@ -216,14 +216,8 @@ def generate_overview_table(output_filename,
> table_id, section, table_name, titl
>          # Initialize the dict with the default.ini value.
>          ini_data[ini_filename] = valid_features.copy()
> 
> -        # Check for a valid ini section.
> +        # Check for a section.
>          if not config.has_section(section):
> -            print("{}: File '{}' has no [{}] secton".format(warning,
> -                                                            ini_filename,
> -                                                            section),
> -                                                            file=stderr)
> -            if stop_on_error:
> -                raise Exception('Warning is treated as a failure')
>              continue
> 
>          # Check for valid features names.
> @@ -379,6 +373,16 @@ def setup(app):
>                              'Features',
>                              'Features availability in networking drivers',
>                              'Feature')
> +    table_file = dirname(__file__) + '/nics/rte_flow_items_table.txt'
> +    generate_overview_table(table_file, 2,
> +                            'rte_flow items',
> +                            'rte_flow items availability in networking drivers',
> +                            'Item')
> +    table_file = dirname(__file__) + '/nics/rte_flow_actions_table.txt'
> +    generate_overview_table(table_file, 3,
> +                            'rte_flow actions',
> +                            'rte_flow actions availability in networking drivers',
> +                            'Action')
>      table_file = dirname(__file__) + '/cryptodevs/overview_feature_table.txt'
>      generate_overview_table(table_file, 1,
>                              'Features', diff --git a/doc/guides/nics/features.rst
> b/doc/guides/nics/features.rst index f6d30d0af3..403c2b03a3 100644
> --- a/doc/guides/nics/features.rst
> +++ b/doc/guides/nics/features.rst
> @@ -397,17 +397,6 @@ Supports configuring link flow control.
>    ``rte_eth_dev_priority_flow_ctrl_set()``.
> 
> 
> -.. _nic_features_flow_api:
> -
> -Flow API
> ---------
> -
> -Supports flow API family.
> -
> -* **[implements] eth_dev_ops**: ``flow_ops_get``.
> -* **[implements] rte_flow_ops**: ``All``.
> -
> -
>  .. _nic_features_rate_limitation:
> 
>  Rate limitation
> diff --git a/doc/guides/nics/features/bnxt.ini
> b/doc/guides/nics/features/bnxt.ini
> index 79335783ec..291faaad05 100644
> --- a/doc/guides/nics/features/bnxt.ini
> +++ b/doc/guides/nics/features/bnxt.ini
> @@ -27,7 +27,6 @@ VMDq                 = Y
>  SR-IOV               = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  CRC offload          = Y
>  L3 checksum offload  = Y
>  L4 checksum offload  = Y
> @@ -52,3 +51,28 @@ x86-32               = Y
>  x86-64               = Y
>  Usage doc            = Y
>  Perf doc             = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +pf                   = Y
> +phy_port             = Y
> +port_id              = Y
> +tcp                  = Y
> +udp                  = Y
> +vf                   = Y
> +vlan                 = Y
> +vxlan                = Y
> +
> +[rte_flow actions]
> +count                = Y
> +drop                 = Y
> +mark                 = Y
> +pf                   = Y
> +phy_port             = Y
> +port_id              = Y
> +rss                  = Y
> +vf                   = Y
> +vxlan_decap          = Y
> +vxlan_encap          = Y
> diff --git a/doc/guides/nics/features/cxgbe.ini
> b/doc/guides/nics/features/cxgbe.ini
> index 276879ec1a..a3ecf12aad 100644
> --- a/doc/guides/nics/features/cxgbe.ini
> +++ b/doc/guides/nics/features/cxgbe.ini
> @@ -17,7 +17,6 @@ RSS hash             = Y
>  RSS key update       = Y
>  RSS reta update      = Y
>  Flow control         = Y
> -Flow API             = Y
>  CRC offload          = Y
>  VLAN offload         = Y
>  FEC                  = Y
> @@ -34,3 +33,33 @@ Linux                = Y
>  x86-32               = Y
>  x86-64               = Y
>  Usage doc            = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +pf                   = Y
> +phy_port             = Y
> +tcp                  = Y
> +udp                  = Y
> +vf                   = Y
> +vlan                 = Y
> +
> +[rte_flow actions]
> +count                = Y
> +drop                 = Y
> +mac_swap             = Y
> +of_pop_vlan          = Y
> +of_push_vlan         = Y
> +of_set_vlan_pcp      = Y
> +of_set_vlan_vid      = Y
> +phy_port             = Y
> +queue                = Y
> +set_ipv4_dst         = Y
> +set_ipv4_src         = Y
> +set_ipv6_dst         = Y
> +set_ipv6_src         = Y
> +set_mac_dst          = Y
> +set_mac_src          = Y
> +set_tp_dst           = Y
> +set_tp_src           = Y
> diff --git a/doc/guides/nics/features/default.ini
> b/doc/guides/nics/features/default.ini
> index 8046bd121e..f16cbb66e3 100644
> --- a/doc/guides/nics/features/default.ini
> +++ b/doc/guides/nics/features/default.ini
> @@ -38,7 +38,6 @@ SR-IOV               =
>  DCB                  =
>  VLAN filter          =
>  Flow control         =
> -Flow API             =
>  Rate limitation      =
>  Traffic mirroring    =
>  Inline crypto        =
> @@ -77,3 +76,118 @@ x86-64               =
>  Usage doc            =
>  Design doc           =
>  Perf doc             =
> +
> +[rte_flow items]
> +ah                   =
> +any                  =
> +arp_eth_ipv4         =
> +ecpri                =
> +esp                  =
> +eth                  =
> +e_tag                =
> +fuzzy                =
> +geneve               =
> +geneve_opt           =
> +gre                  =
> +gre_key              =
> +gtp                  =
> +gtpc                 =
> +gtpu                 =
> +gtp_psc              =
> +higig2               =
> +icmp                 =
> +icmp6                =
> +icmp6_nd_na          =
> +icmp6_nd_ns          =
> +icmp6_nd_opt         =
> +icmp6_nd_opt_sla_eth =
> +icmp6_nd_opt_tla_eth =
> +igmp                 =
> +invert               =
> +ipv4                 =
> +ipv6                 =
> +ipv6_ext             =
> +ipv6_frag_ext        =
> +l2tpv3oip            =
> +mark                 =
> +meta                 =
> +mpls                 =
> +nsh                  =
> +nvgre                =
> +pf                   =
> +pfcp                 =
> +phy_port             =
> +port_id              =
> +pppoe                =
> +pppoed               =
> +pppoes               =
> +pppoe_proto_id       =
> +raw                  =
> +sctp                 =
> +tag                  =
> +tcp                  =
> +udp                  =
> +vf                   =
> +vlan                 =
> +void                 =
> +vxlan                =
> +vxlan_gpe            =
> +
> +[rte_flow actions]
> +age                  =
> +count                =
> +dec_tcp_ack          =
> +dec_tcp_seq          =
> +dec_ttl              =
> +drop                 =
> +flag                 =
> +inc_tcp_ack          =
> +inc_tcp_seq          =
> +jump                 =
> +mac_swap             =
> +mark                 =
> +meter                =
> +modify_field         =
> +nvgre_decap          =
> +nvgre_encap          =
> +of_copy_ttl_in       =
> +of_copy_ttl_out      =
> +of_dec_mpls_ttl      =
> +of_dec_nw_ttl        =
> +of_pop_mpls          =
> +of_pop_vlan          =
> +of_push_mpls         =
> +of_push_vlan         =
> +of_set_mpls_ttl      =
> +of_set_nw_ttl        =
> +of_set_vlan_pcp      =
> +of_set_vlan_vid      =
> +passthru             =
> +pf                   =
> +phy_port             =
> +port_id              =
> +queue                =
> +raw_decap            =
> +raw_encap            =
> +rss                  =
> +sample               =
> +security             =
> +set_ipv4_dscp        =
> +set_ipv4_dst         =
> +set_ipv4_src         =
> +set_ipv6_dscp        =
> +set_ipv6_dst         =
> +set_ipv6_src         =
> +set_mac              =
> +set_mac_dst          =
> +set_mac_src          =
> +set_meta             =
> +set_tag              =
> +set_tp_dst           =
> +set_tp_src           =
> +set_ttl              =
> +shared               =
> +vf                   =
> +void                 =
> +vxlan_decap          =
> +vxlan_encap          =
> diff --git a/doc/guides/nics/features/dpaa2.ini
> b/doc/guides/nics/features/dpaa2.ini
> index 59bd1a2ced..8e3d74cbb5 100644
> --- a/doc/guides/nics/features/dpaa2.ini
> +++ b/doc/guides/nics/features/dpaa2.ini
> @@ -18,7 +18,6 @@ Unicast MAC filter   = Y
>  RSS hash             = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  VLAN offload         = Y
>  L3 checksum offload  = Y
>  L4 checksum offload  = Y
> @@ -31,3 +30,21 @@ FW version           = Y
>  Linux                = Y
>  ARMv8                = Y
>  Usage doc            = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +gre                  = Y
> +icmp                 = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +meta                 = Y
> +raw                  = Y
> +sctp                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +queue                = Y
> +rss                  = Y
> diff --git a/doc/guides/nics/features/e1000.ini
> b/doc/guides/nics/features/e1000.ini
> index 7a224cc535..5af6040e37 100644
> --- a/doc/guides/nics/features/e1000.ini
> +++ b/doc/guides/nics/features/e1000.ini
> @@ -29,3 +29,17 @@ FreeBSD              = Y
>  Linux                = Y
>  x86-32               = Y
>  x86-64               = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +raw                  = Y
> +sctp                 = Y
> +tcp                  = Y
> +udp                  = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +queue                = Y
> +rss                  = Y
> diff --git a/doc/guides/nics/features/enic.ini b/doc/guides/nics/features/enic.ini
> index 16d6aabe47..a582616c07 100644
> --- a/doc/guides/nics/features/enic.ini
> +++ b/doc/guides/nics/features/enic.ini
> @@ -25,7 +25,6 @@ Inner RSS            = Y
>  SR-IOV               = Y
>  CRC offload          = Y
>  VLAN offload         = Y
> -Flow API             = Y
>  L3 checksum offload  = Y
>  L4 checksum offload  = Y
>  Inner L3 checksum    = Y
> @@ -39,3 +38,31 @@ Linux                = Y
>  x86-32               = Y
>  x86-64               = Y
>  Usage doc            = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +raw                  = Y
> +sctp                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +vxlan                = Y
> +
> +[rte_flow actions]
> +count                = Y
> +drop                 = Y
> +flag                 = Y
> +jump                 = Y
> +mark                 = Y
> +of_pop_vlan          = Y
> +of_push_vlan         = Y
> +of_set_vlan_pcp      = Y
> +of_set_vlan_vid      = Y
> +passthru             = Y
> +port_id              = Y
> +queue                = Y
> +rss                  = Y
> +vxlan_decap          = Y
> +vxlan_encap          = Y
> diff --git a/doc/guides/nics/features/failsafe.ini
> b/doc/guides/nics/features/failsafe.ini
> index b6f3dcee61..8a2b92fc9c 100644
> --- a/doc/guides/nics/features/failsafe.ini
> +++ b/doc/guides/nics/features/failsafe.ini
> @@ -19,7 +19,6 @@ Unicast MAC filter   = Y
>  Multicast MAC filter = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  Packet type parsing  = Y
>  Basic stats          = Y
>  Stats per queue      = Y
> diff --git a/doc/guides/nics/features/hinic.ini
> b/doc/guides/nics/features/hinic.ini
> index 988a0ad574..4ea7368704 100644
> --- a/doc/guides/nics/features/hinic.ini
> +++ b/doc/guides/nics/features/hinic.ini
> @@ -32,10 +32,24 @@ Inner L4 checksum    = Y
>  Basic stats          = Y
>  Extended stats       = Y
>  Stats per queue      = Y
> -Flow API             = Y
>  Flow control         = Y
>  FW version           = Y
>  Multiprocess aware   = Y
>  Linux                = Y
>  x86-64               = Y
>  ARMv8                = Y
> +
> +[rte_flow items]
> +any                  = Y
> +eth                  = Y
> +icmp                 = Y
> +icmp6                = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vxlan                = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +queue                = Y
> diff --git a/doc/guides/nics/features/hns3.ini
> b/doc/guides/nics/features/hns3.ini
> index 3988be4fba..ecb3eed5aa 100644
> --- a/doc/guides/nics/features/hns3.ini
> +++ b/doc/guides/nics/features/hns3.ini
> @@ -26,7 +26,6 @@ RSS reta update      = Y
>  DCB                  = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  CRC offload          = Y
>  VLAN offload         = Y
>  FEC                  = Y
> @@ -46,3 +45,25 @@ Module EEPROM dump   = Y
>  Multiprocess aware   = Y
>  Linux                = Y
>  ARMv8                = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +geneve               = Y
> +icmp                 = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +nvgre                = Y
> +sctp                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +vxlan                = Y
> +vxlan_gpe            = Y
> +
> +[rte_flow actions]
> +count                = Y
> +drop                 = Y
> +flag                 = Y
> +mark                 = Y
> +queue                = Y
> +rss                  = Y
> diff --git a/doc/guides/nics/features/hns3_vf.ini
> b/doc/guides/nics/features/hns3_vf.ini
> index 1640669a98..489963fafd 100644
> --- a/doc/guides/nics/features/hns3_vf.ini
> +++ b/doc/guides/nics/features/hns3_vf.ini
> @@ -24,7 +24,6 @@ RSS hash             = Y
>  RSS key update       = Y
>  RSS reta update      = Y
>  VLAN filter          = Y
> -Flow API             = Y
>  CRC offload          = Y
>  VLAN offload         = Y
>  L3 checksum offload  = Y
> diff --git a/doc/guides/nics/features/i40e.ini b/doc/guides/nics/features/i40e.ini
> index 542432c41d..1f3f5eb3ff 100644
> --- a/doc/guides/nics/features/i40e.ini
> +++ b/doc/guides/nics/features/i40e.ini
> @@ -27,7 +27,6 @@ SR-IOV               = Y
>  DCB                  = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  Traffic mirroring    = Y
>  CRC offload          = Y
>  VLAN offload         = Y
> @@ -52,3 +51,33 @@ x86-32               = Y
>  x86-64               = Y
>  ARMv8                = Y
>  Power8               = Y
> +
> +[rte_flow items]
> +ah                   = Y
> +esp                  = Y
> +eth                  = Y
> +gre                  = Y
> +gtpc                 = Y
> +gtpu                 = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +l2tpv3oip            = Y
> +mpls                 = Y
> +nvgre                = Y
> +raw                  = Y
> +sctp                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vf                   = Y
> +vlan                 = Y
> +vxlan                = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +flag                 = Y
> +mark                 = Y
> +passthru             = Y
> +pf                   = Y
> +queue                = Y
> +rss                  = Y
> +vf                   = Y
> diff --git a/doc/guides/nics/features/iavf.ini b/doc/guides/nics/features/iavf.ini
> index 980680e568..4864c19b57 100644
> --- a/doc/guides/nics/features/iavf.ini
> +++ b/doc/guides/nics/features/iavf.ini
> @@ -19,7 +19,6 @@ Multicast MAC filter = Y
>  RSS hash             = Y
>  RSS key update       = Y
>  RSS reta update      = Y
> -Flow API             = Y
>  VLAN filter          = Y
>  CRC offload          = Y
>  VLAN offload         = Y
> @@ -34,3 +33,31 @@ FreeBSD              = Y
>  Linux                = Y
>  x86-32               = Y
>  x86-64               = Y
> +
> +[rte_flow items]
> +ah                   = Y
> +arp_eth_ipv4         = Y
> +ecpri                = Y
> +esp                  = Y
> +eth                  = Y
> +gtpc                 = Y
> +gtpu                 = Y
> +gtp_psc              = Y
> +icmp                 = Y
> +icmp6                = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +l2tpv3oip            = Y
> +pfcp                 = Y
> +sctp                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +
> +[rte_flow actions]
> +count                = Y
> +drop                 = Y
> +mark                 = Y
> +passthru             = Y
> +queue                = Y
> +rss                  = Y
> diff --git a/doc/guides/nics/features/ice.ini b/doc/guides/nics/features/ice.ini
> index e30a7d2e57..c3a8a1b676 100644
> --- a/doc/guides/nics/features/ice.ini
> +++ b/doc/guides/nics/features/ice.ini
> @@ -21,7 +21,6 @@ Unicast MAC filter   = Y
>  RSS hash             = Y
>  RSS key update       = Y
>  RSS reta update      = Y
> -Flow API             = Y
>  VLAN filter          = Y
>  CRC offload          = Y
>  VLAN offload         = Y
> @@ -42,3 +41,35 @@ FreeBSD              = Y
>  Linux                = Y
>  x86-32               = Y
>  x86-64               = Y
> +
> +[rte_flow items]
> +ah                   = Y
> +arp_eth_ipv4         = Y
> +esp                  = Y
> +eth                  = Y
> +gtpu                 = Y
> +gtp_psc              = Y
> +icmp                 = Y
> +icmp6                = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +l2tpv3oip            = Y
> +nvgre                = Y
> +pfcp                 = Y
> +pppoed               = Y
> +pppoes               = Y
> +pppoe_proto_id       = Y
> +sctp                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +vxlan                = Y
> +
> +[rte_flow actions]
> +count                = Y
> +drop                 = Y
> +mark                 = Y
> +passthru             = Y
> +queue                = Y
> +rss                  = Y
> +vf                   = Y
> diff --git a/doc/guides/nics/features/ice_dcf.ini
> b/doc/guides/nics/features/ice_dcf.ini
> index f4998152df..ae79b6a515 100644
> --- a/doc/guides/nics/features/ice_dcf.ini
> +++ b/doc/guides/nics/features/ice_dcf.ini
> @@ -8,7 +8,6 @@ Queue start/stop     = Y
>  Jumbo frame          = Y
>  Scattered Rx         = Y
>  RSS hash             = P
> -Flow API             = Y
>  CRC offload          = Y
>  L3 checksum offload  = P
>  L4 checksum offload  = P
> diff --git a/doc/guides/nics/features/igb.ini b/doc/guides/nics/features/igb.ini
> index 2925a8031d..f4f6e9a4cb 100644
> --- a/doc/guides/nics/features/igb.ini
> +++ b/doc/guides/nics/features/igb.ini
> @@ -24,7 +24,6 @@ SR-IOV               = Y
>  DCB                  = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  CRC offload          = Y
>  VLAN offload         = Y
>  QinQ offload         = Y
> diff --git a/doc/guides/nics/features/igc.ini b/doc/guides/nics/features/igc.ini
> index 300d37e81a..f810c2df4e 100644
> --- a/doc/guides/nics/features/igc.ini
> +++ b/doc/guides/nics/features/igc.ini
> @@ -32,6 +32,16 @@ RSS key update       = Y
>  RSS reta update      = Y
>  VLAN filter          = Y
>  VLAN offload         = Y
> -Flow API             = P
>  Linux                = Y
>  x86-64               = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +tcp                  = Y
> +udp                  = Y
> +
> +[rte_flow actions]
> +queue                = Y
> +rss                  = Y
> diff --git a/doc/guides/nics/features/ipn3ke.ini
> b/doc/guides/nics/features/ipn3ke.ini
> index 82de553eb2..5586f7cb33 100644
> --- a/doc/guides/nics/features/ipn3ke.ini
> +++ b/doc/guides/nics/features/ipn3ke.ini
> @@ -26,7 +26,6 @@ SR-IOV               = Y
>  DCB                  = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  Traffic mirroring    = Y
>  CRC offload          = Y
>  VLAN offload         = Y
> @@ -48,3 +47,17 @@ FreeBSD              = Y
>  Linux                = Y
>  x86-32               = Y
>  x86-64               = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +ipv4                 = Y
> +mpls                 = Y
> +nvgre                = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +vxlan                = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +mark                 = Y
> diff --git a/doc/guides/nics/features/ixgbe.ini
> b/doc/guides/nics/features/ixgbe.ini
> index c5e6e14aac..93a9cc18ab 100644
> --- a/doc/guides/nics/features/ixgbe.ini
> +++ b/doc/guides/nics/features/ixgbe.ini
> @@ -26,7 +26,6 @@ SR-IOV               = Y
>  DCB                  = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  Rate limitation      = Y
>  Traffic mirroring    = Y
>  Inline crypto        = Y
> @@ -55,3 +54,26 @@ Linux                = Y
>  ARMv8                = Y
>  x86-32               = Y
>  x86-64               = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +e_tag                = Y
> +fuzzy                = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +nvgre                = Y
> +raw                  = Y
> +sctp                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +vxlan                = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +mark                 = Y
> +pf                   = Y
> +queue                = Y
> +rss                  = Y
> +security             = Y
> +vf                   = Y
> diff --git a/doc/guides/nics/features/mlx4.ini
> b/doc/guides/nics/features/mlx4.ini
> index ebb9ccf767..c394dfcefe 100644
> --- a/doc/guides/nics/features/mlx4.ini
> +++ b/doc/guides/nics/features/mlx4.ini
> @@ -22,7 +22,6 @@ RSS hash             = Y
>  SR-IOV               = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  CRC offload          = Y
>  L3 checksum offload  = Y
>  L4 checksum offload  = Y
> @@ -38,3 +37,15 @@ Power8               = Y
>  x86-32               = Y
>  x86-64               = Y
>  Usage doc            = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +ipv4                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +queue                = Y
> +rss                  = Y
> diff --git a/doc/guides/nics/features/mlx5.ini
> b/doc/guides/nics/features/mlx5.ini
> index ddd131da16..15b1897c21 100644
> --- a/doc/guides/nics/features/mlx5.ini
> +++ b/doc/guides/nics/features/mlx5.ini
> @@ -28,7 +28,6 @@ Inner RSS            = Y
>  SR-IOV               = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  CRC offload          = Y
>  VLAN offload         = Y
>  L3 checksum offload  = Y
> @@ -52,3 +51,73 @@ Power8               = Y
>  x86-32               = Y
>  x86-64               = Y
>  Usage doc            = Y
> +
> +[rte_flow items]
> +ecpri                = Y
> +eth                  = Y
> +geneve               = Y
> +geneve_opt           = Y
> +gre                  = Y
> +gre_key              = Y
> +gtp                  = Y
> +gtp_psc              = Y
> +icmp                 = Y
> +icmp6                = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +ipv6_frag_ext        = Y
> +mark                 = Y
> +meta                 = Y
> +mpls                 = Y
> +nvgre                = Y
> +phy_port             = Y
> +port_id              = Y
> +tag                  = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +vxlan                = Y
> +vxlan_gpe            = Y
> +
> +[rte_flow actions]
> +age                  = I
> +count                = Y
> +dec_tcp_ack          = Y
> +dec_tcp_seq          = Y
> +dec_ttl              = Y
> +drop                 = Y
> +flag                 = Y
> +inc_tcp_ack          = Y
> +inc_tcp_seq          = Y
> +jump                 = Y
> +mark                 = Y
> +meter                = Y
> +modify_field         = Y
> +nvgre_decap          = Y
> +nvgre_encap          = Y
> +of_pop_vlan          = Y
> +of_push_vlan         = Y
> +of_set_vlan_pcp      = Y
> +of_set_vlan_vid      = Y
> +port_id              = Y
> +queue                = Y
> +raw_decap            = Y
> +raw_encap            = Y
> +rss                  = I
> +sample               = Y
> +set_ipv4_dscp        = Y
> +set_ipv4_dst         = Y
> +set_ipv4_src         = Y
> +set_ipv6_dscp        = Y
> +set_ipv6_dst         = Y
> +set_ipv6_src         = Y
> +set_mac_dst          = Y
> +set_mac_src          = Y
> +set_meta             = Y
> +set_tag              = Y
> +set_tp_dst           = Y
> +set_tp_src           = Y
> +set_ttl              = Y
> +shared               = Y
> +vxlan_decap          = Y
> +vxlan_encap          = Y
> diff --git a/doc/guides/nics/features/mvpp2.ini
> b/doc/guides/nics/features/mvpp2.ini
> index ef47546d1c..2ce0ca817a 100644
> --- a/doc/guides/nics/features/mvpp2.ini
> +++ b/doc/guides/nics/features/mvpp2.ini
> @@ -23,3 +23,17 @@ Basic stats          = Y
>  Extended stats       = Y
>  ARMv8                = Y
>  Usage doc            = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +raw                  = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +meter                = Y
> +queue                = Y
> diff --git a/doc/guides/nics/features/octeontx2.ini
> b/doc/guides/nics/features/octeontx2.ini
> index c0bcb8278e..fa49868cb3 100644
> --- a/doc/guides/nics/features/octeontx2.ini
> +++ b/doc/guides/nics/features/octeontx2.ini
> @@ -30,7 +30,6 @@ Inner RSS            = Y
>  Inline protocol      = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  Rate limitation      = Y
>  Jumbo frame          = Y
>  Scattered Rx         = Y
> @@ -54,3 +53,44 @@ Registers dump       = Y
>  Linux                = Y
>  ARMv8                = Y
>  Usage doc            = Y
> +
> +[rte_flow items]
> +any                  = Y
> +arp_eth_ipv4         = Y
> +esp                  = Y
> +eth                  = Y
> +e_tag                = Y
> +geneve               = Y
> +gre                  = Y
> +gre_key              = Y
> +gtpc                 = Y
> +gtpu                 = Y
> +higig2               = Y
> +icmp                 = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +ipv6_ext             = Y
> +mpls                 = Y
> +nvgre                = Y
> +raw                  = Y
> +sctp                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +vxlan                = Y
> +vxlan_gpe            = Y
> +
> +[rte_flow actions]
> +count                = Y
> +drop                 = Y
> +flag                 = Y
> +mark                 = Y
> +of_pop_vlan          = Y
> +of_push_vlan         = Y
> +of_set_vlan_pcp      = Y
> +of_set_vlan_vid      = Y
> +pf                   = Y
> +queue                = Y
> +rss                  = Y
> +security             = Y
> +vf                   = Y
> diff --git a/doc/guides/nics/features/octeontx2_vec.ini
> b/doc/guides/nics/features/octeontx2_vec.ini
> index 7025e140ad..376a1d6cc1 100644
> --- a/doc/guides/nics/features/octeontx2_vec.ini
> +++ b/doc/guides/nics/features/octeontx2_vec.ini
> @@ -27,7 +27,6 @@ RSS reta update      = Y
>  Inner RSS            = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  Rate limitation      = Y
>  Jumbo frame          = Y
>  VLAN offload         = Y
> diff --git a/doc/guides/nics/features/octeontx2_vf.ini
> b/doc/guides/nics/features/octeontx2_vf.ini
> index 7f5e5b8bba..8141aadf85 100644
> --- a/doc/guides/nics/features/octeontx2_vf.ini
> +++ b/doc/guides/nics/features/octeontx2_vf.ini
> @@ -23,7 +23,6 @@ RSS reta update      = Y
>  Inner RSS            = Y
>  Inline protocol      = Y
>  VLAN filter          = Y
> -Flow API             = Y
>  Rate limitation      = Y
>  Jumbo frame          = Y
>  Scattered Rx         = Y
> diff --git a/doc/guides/nics/features/qede.ini
> b/doc/guides/nics/features/qede.ini
> index 852cecb3d3..e65d5d076e 100644
> --- a/doc/guides/nics/features/qede.ini
> +++ b/doc/guides/nics/features/qede.ini
> @@ -20,7 +20,6 @@ RSS key update       = Y
>  RSS reta update      = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  CRC offload          = Y
>  VLAN offload         = Y
>  L3 checksum offload  = Y
> @@ -39,3 +38,13 @@ ARMv8                = Y
>  x86-32               = Y
>  x86-64               = Y
>  Usage doc            = Y
> +
> +[rte_flow items]
> +ipv4                 = Y
> +ipv6                 = Y
> +tcp                  = Y
> +udp                  = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +queue                = Y
> diff --git a/doc/guides/nics/features/sfc.ini b/doc/guides/nics/features/sfc.ini
> index 7e29568e5f..9e66ec4293 100644
> --- a/doc/guides/nics/features/sfc.ini
> +++ b/doc/guides/nics/features/sfc.ini
> @@ -24,7 +24,6 @@ RSS key update       = Y
>  RSS reta update      = Y
>  SR-IOV               = Y
>  Flow control         = Y
> -Flow API             = Y
>  VLAN offload         = P
>  L3 checksum offload  = Y
>  L4 checksum offload  = Y
> @@ -41,3 +40,37 @@ FreeBSD              = Y
>  Linux                = Y
>  ARMv8                = Y
>  x86-64               = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +geneve               = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +nvgre                = Y
> +pf                   = Y
> +phy_port             = Y
> +port_id              = Y
> +pppoed               = Y
> +pppoes               = Y
> +tcp                  = Y
> +udp                  = Y
> +vf                   = Y
> +vlan                 = Y
> +vxlan                = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +flag                 = Y
> +mark                 = Y
> +of_pop_vlan          = Y
> +of_push_vlan         = Y
> +of_set_vlan_pcp      = Y
> +of_set_vlan_vid      = Y
> +pf                   = Y
> +phy_port             = Y
> +port_id              = Y
> +queue                = Y
> +rss                  = Y
> +vf                   = Y
> +vxlan_decap          = Y
> +vxlan_encap          = Y
> diff --git a/doc/guides/nics/features/tap.ini b/doc/guides/nics/features/tap.ini
> index be5e53dbe9..b4a356e5d5 100644
> --- a/doc/guides/nics/features/tap.ini
> +++ b/doc/guides/nics/features/tap.ini
> @@ -11,7 +11,6 @@ Rx interrupt         = Y
>  Promiscuous mode     = Y
>  Allmulticast mode    = Y
>  Basic stats          = Y
> -Flow API             = Y
>  L3 checksum offload  = Y
>  L4 checksum offload  = Y
>  MTU update           = Y
> @@ -26,3 +25,17 @@ Power8               = Y
>  x86-32               = Y
>  x86-64               = Y
>  Usage doc            = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +passthru             = Y
> +queue                = Y
> +rss                  = Y
> diff --git a/doc/guides/nics/features/txgbe.ini
> b/doc/guides/nics/features/txgbe.ini
> index a3fdee9f8a..61cb3f6d9f 100644
> --- a/doc/guides/nics/features/txgbe.ini
> +++ b/doc/guides/nics/features/txgbe.ini
> @@ -26,7 +26,6 @@ SR-IOV               = Y
>  DCB                  = Y
>  VLAN filter          = Y
>  Flow control         = Y
> -Flow API             = Y
>  Rate limitation      = Y
>  Inline crypto        = Y
>  CRC offload          = P
> @@ -52,3 +51,26 @@ Linux                = Y
>  ARMv8                = Y
>  x86-32               = Y
>  x86-64               = Y
> +
> +[rte_flow items]
> +eth                  = Y
> +e_tag                = Y
> +fuzzy                = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +nvgre                = Y
> +raw                  = Y
> +sctp                 = Y
> +tcp                  = Y
> +udp                  = Y
> +vlan                 = Y
> +vxlan                = Y
> +
> +[rte_flow actions]
> +drop                 = Y
> +mark                 = Y
> +pf                   = Y
> +queue                = Y
> +rss                  = Y
> +security             = Y
> +vf                   = Y
> diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst index
> 20cd52b097..67575c699c 100644
> --- a/doc/guides/nics/overview.rst
> +++ b/doc/guides/nics/overview.rst
> @@ -32,3 +32,11 @@ More details about features can be found in
> :doc:`features`.
> 
>     Features marked with "P" are partially supported. Refer to the appropriate
>     NIC guide in the following sections for details.
> +
> +.. include:: rte_flow_items_table.txt
> +
> +.. include:: rte_flow_actions_table.txt
> +
> +.. Note::
> +
> +   rte_flow actions marked with "I" can be indirect as well.
> --
> 2.31.1
Ferruh Yigit May 14, 2021, 10:42 a.m. UTC | #2
On 4/7/2021 11:33 PM, Thomas Monjalon wrote:
> The NICs overview table lists all supported features per driver.
> There was a single row for "Flow API",
> although rte_flow is composed of many items and actions.
> 
> The row "Flow API" is replaced with two new tables for items and actions.
> 
> Also, since rte_flow is not implemented in all drivers,
> it would be ugly to add empty sections in some files.
> That's why the error message for missing INI section is removed.
> 
> The lists are sorted alphabetically.
> The extra files for some VF and vectorized data paths are not filled.
> 
> Signed-off-by: Asaf Penso <asafp@nvidia.com>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

<...>

> +[rte_flow items]
> +eth                  = Y
> +ipv4                 = Y
> +ipv6                 = Y
> +pf                   = Y
> +phy_port             = Y
> +port_id              = Y
> +tcp                  = Y
> +udp                  = Y
> +vf                   = Y
> +vlan                 = Y
> +vxlan                = Y
> +
> +[rte_flow actions]
> +count                = Y
> +drop                 = Y
> +mark                 = Y
> +pf                   = Y
> +phy_port             = Y
> +port_id              = Y
> +rss                  = Y
> +vf                   = Y
> +vxlan_decap          = Y
> +vxlan_encap          = Y

Indeed this is a matrix, isn't it, not all flow items support all flow actions,
but not sure if it is possible to figure out that matrix.
Thomas Monjalon May 14, 2021, 11:52 a.m. UTC | #3
14/05/2021 12:42, Ferruh Yigit:
> On 4/7/2021 11:33 PM, Thomas Monjalon wrote:
> > The NICs overview table lists all supported features per driver.
> > There was a single row for "Flow API",
> > although rte_flow is composed of many items and actions.
> > 
> > The row "Flow API" is replaced with two new tables for items and actions.
> > 
> > Also, since rte_flow is not implemented in all drivers,
> > it would be ugly to add empty sections in some files.
> > That's why the error message for missing INI section is removed.
> > 
> > The lists are sorted alphabetically.
> > The extra files for some VF and vectorized data paths are not filled.
> > 
> > Signed-off-by: Asaf Penso <asafp@nvidia.com>
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> 
> <...>
> 
> > +[rte_flow items]
> > +eth                  = Y
> > +ipv4                 = Y
> > +ipv6                 = Y
> > +pf                   = Y
> > +phy_port             = Y
> > +port_id              = Y
> > +tcp                  = Y
> > +udp                  = Y
> > +vf                   = Y
> > +vlan                 = Y
> > +vxlan                = Y
> > +
> > +[rte_flow actions]
> > +count                = Y
> > +drop                 = Y
> > +mark                 = Y
> > +pf                   = Y
> > +phy_port             = Y
> > +port_id              = Y
> > +rss                  = Y
> > +vf                   = Y
> > +vxlan_decap          = Y
> > +vxlan_encap          = Y
> 
> Indeed this is a matrix, isn't it, not all flow items support all flow actions,
> but not sure if it is possible to figure out that matrix.

We cannot express combinations and limitations here.
It is just showing some basic capabilities without limitations.
For more complete description, it must be noted in the guide.
diff mbox series

Patch

diff --git a/.gitignore b/.gitignore
index f73d93ca53..b19c0717e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,8 @@ 
 
 # ignore generated documentation tables
 doc/guides/nics/overview_table.txt
+doc/guides/nics/rte_flow_actions_table.txt
+doc/guides/nics/rte_flow_items_table.txt
 doc/guides/cryptodevs/overview_feature_table.txt
 doc/guides/cryptodevs/overview_cipher_table.txt
 doc/guides/cryptodevs/overview_auth_table.txt
diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index ec59aeae7e..70213843c1 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -216,14 +216,8 @@  def generate_overview_table(output_filename, table_id, section, table_name, titl
         # Initialize the dict with the default.ini value.
         ini_data[ini_filename] = valid_features.copy()
 
-        # Check for a valid ini section.
+        # Check for a section.
         if not config.has_section(section):
-            print("{}: File '{}' has no [{}] secton".format(warning,
-                                                            ini_filename,
-                                                            section),
-                                                            file=stderr)
-            if stop_on_error:
-                raise Exception('Warning is treated as a failure')
             continue
 
         # Check for valid features names.
@@ -379,6 +373,16 @@  def setup(app):
                             'Features',
                             'Features availability in networking drivers',
                             'Feature')
+    table_file = dirname(__file__) + '/nics/rte_flow_items_table.txt'
+    generate_overview_table(table_file, 2,
+                            'rte_flow items',
+                            'rte_flow items availability in networking drivers',
+                            'Item')
+    table_file = dirname(__file__) + '/nics/rte_flow_actions_table.txt'
+    generate_overview_table(table_file, 3,
+                            'rte_flow actions',
+                            'rte_flow actions availability in networking drivers',
+                            'Action')
     table_file = dirname(__file__) + '/cryptodevs/overview_feature_table.txt'
     generate_overview_table(table_file, 1,
                             'Features',
diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst
index f6d30d0af3..403c2b03a3 100644
--- a/doc/guides/nics/features.rst
+++ b/doc/guides/nics/features.rst
@@ -397,17 +397,6 @@  Supports configuring link flow control.
   ``rte_eth_dev_priority_flow_ctrl_set()``.
 
 
-.. _nic_features_flow_api:
-
-Flow API
---------
-
-Supports flow API family.
-
-* **[implements] eth_dev_ops**: ``flow_ops_get``.
-* **[implements] rte_flow_ops**: ``All``.
-
-
 .. _nic_features_rate_limitation:
 
 Rate limitation
diff --git a/doc/guides/nics/features/bnxt.ini b/doc/guides/nics/features/bnxt.ini
index 79335783ec..291faaad05 100644
--- a/doc/guides/nics/features/bnxt.ini
+++ b/doc/guides/nics/features/bnxt.ini
@@ -27,7 +27,6 @@  VMDq                 = Y
 SR-IOV               = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 CRC offload          = Y
 L3 checksum offload  = Y
 L4 checksum offload  = Y
@@ -52,3 +51,28 @@  x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
 Perf doc             = Y
+
+[rte_flow items]
+eth                  = Y
+ipv4                 = Y
+ipv6                 = Y
+pf                   = Y
+phy_port             = Y
+port_id              = Y
+tcp                  = Y
+udp                  = Y
+vf                   = Y
+vlan                 = Y
+vxlan                = Y
+
+[rte_flow actions]
+count                = Y
+drop                 = Y
+mark                 = Y
+pf                   = Y
+phy_port             = Y
+port_id              = Y
+rss                  = Y
+vf                   = Y
+vxlan_decap          = Y
+vxlan_encap          = Y
diff --git a/doc/guides/nics/features/cxgbe.ini b/doc/guides/nics/features/cxgbe.ini
index 276879ec1a..a3ecf12aad 100644
--- a/doc/guides/nics/features/cxgbe.ini
+++ b/doc/guides/nics/features/cxgbe.ini
@@ -17,7 +17,6 @@  RSS hash             = Y
 RSS key update       = Y
 RSS reta update      = Y
 Flow control         = Y
-Flow API             = Y
 CRC offload          = Y
 VLAN offload         = Y
 FEC                  = Y
@@ -34,3 +33,33 @@  Linux                = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+ipv4                 = Y
+ipv6                 = Y
+pf                   = Y
+phy_port             = Y
+tcp                  = Y
+udp                  = Y
+vf                   = Y
+vlan                 = Y
+
+[rte_flow actions]
+count                = Y
+drop                 = Y
+mac_swap             = Y
+of_pop_vlan          = Y
+of_push_vlan         = Y
+of_set_vlan_pcp      = Y
+of_set_vlan_vid      = Y
+phy_port             = Y
+queue                = Y
+set_ipv4_dst         = Y
+set_ipv4_src         = Y
+set_ipv6_dst         = Y
+set_ipv6_src         = Y
+set_mac_dst          = Y
+set_mac_src          = Y
+set_tp_dst           = Y
+set_tp_src           = Y
diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini
index 8046bd121e..f16cbb66e3 100644
--- a/doc/guides/nics/features/default.ini
+++ b/doc/guides/nics/features/default.ini
@@ -38,7 +38,6 @@  SR-IOV               =
 DCB                  =
 VLAN filter          =
 Flow control         =
-Flow API             =
 Rate limitation      =
 Traffic mirroring    =
 Inline crypto        =
@@ -77,3 +76,118 @@  x86-64               =
 Usage doc            =
 Design doc           =
 Perf doc             =
+
+[rte_flow items]
+ah                   =
+any                  =
+arp_eth_ipv4         =
+ecpri                =
+esp                  =
+eth                  =
+e_tag                =
+fuzzy                =
+geneve               =
+geneve_opt           =
+gre                  =
+gre_key              =
+gtp                  =
+gtpc                 =
+gtpu                 =
+gtp_psc              =
+higig2               =
+icmp                 =
+icmp6                =
+icmp6_nd_na          =
+icmp6_nd_ns          =
+icmp6_nd_opt         =
+icmp6_nd_opt_sla_eth =
+icmp6_nd_opt_tla_eth =
+igmp                 =
+invert               =
+ipv4                 =
+ipv6                 =
+ipv6_ext             =
+ipv6_frag_ext        =
+l2tpv3oip            =
+mark                 =
+meta                 =
+mpls                 =
+nsh                  =
+nvgre                =
+pf                   =
+pfcp                 =
+phy_port             =
+port_id              =
+pppoe                =
+pppoed               =
+pppoes               =
+pppoe_proto_id       =
+raw                  =
+sctp                 =
+tag                  =
+tcp                  =
+udp                  =
+vf                   =
+vlan                 =
+void                 =
+vxlan                =
+vxlan_gpe            =
+
+[rte_flow actions]
+age                  =
+count                =
+dec_tcp_ack          =
+dec_tcp_seq          =
+dec_ttl              =
+drop                 =
+flag                 =
+inc_tcp_ack          =
+inc_tcp_seq          =
+jump                 =
+mac_swap             =
+mark                 =
+meter                =
+modify_field         =
+nvgre_decap          =
+nvgre_encap          =
+of_copy_ttl_in       =
+of_copy_ttl_out      =
+of_dec_mpls_ttl      =
+of_dec_nw_ttl        =
+of_pop_mpls          =
+of_pop_vlan          =
+of_push_mpls         =
+of_push_vlan         =
+of_set_mpls_ttl      =
+of_set_nw_ttl        =
+of_set_vlan_pcp      =
+of_set_vlan_vid      =
+passthru             =
+pf                   =
+phy_port             =
+port_id              =
+queue                =
+raw_decap            =
+raw_encap            =
+rss                  =
+sample               =
+security             =
+set_ipv4_dscp        =
+set_ipv4_dst         =
+set_ipv4_src         =
+set_ipv6_dscp        =
+set_ipv6_dst         =
+set_ipv6_src         =
+set_mac              =
+set_mac_dst          =
+set_mac_src          =
+set_meta             =
+set_tag              =
+set_tp_dst           =
+set_tp_src           =
+set_ttl              =
+shared               =
+vf                   =
+void                 =
+vxlan_decap          =
+vxlan_encap          =
diff --git a/doc/guides/nics/features/dpaa2.ini b/doc/guides/nics/features/dpaa2.ini
index 59bd1a2ced..8e3d74cbb5 100644
--- a/doc/guides/nics/features/dpaa2.ini
+++ b/doc/guides/nics/features/dpaa2.ini
@@ -18,7 +18,6 @@  Unicast MAC filter   = Y
 RSS hash             = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 VLAN offload         = Y
 L3 checksum offload  = Y
 L4 checksum offload  = Y
@@ -31,3 +30,21 @@  FW version           = Y
 Linux                = Y
 ARMv8                = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+gre                  = Y
+icmp                 = Y
+ipv4                 = Y
+ipv6                 = Y
+meta                 = Y
+raw                  = Y
+sctp                 = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+
+[rte_flow actions]
+drop                 = Y
+queue                = Y
+rss                  = Y
diff --git a/doc/guides/nics/features/e1000.ini b/doc/guides/nics/features/e1000.ini
index 7a224cc535..5af6040e37 100644
--- a/doc/guides/nics/features/e1000.ini
+++ b/doc/guides/nics/features/e1000.ini
@@ -29,3 +29,17 @@  FreeBSD              = Y
 Linux                = Y
 x86-32               = Y
 x86-64               = Y
+
+[rte_flow items]
+eth                  = Y
+ipv4                 = Y
+ipv6                 = Y
+raw                  = Y
+sctp                 = Y
+tcp                  = Y
+udp                  = Y
+
+[rte_flow actions]
+drop                 = Y
+queue                = Y
+rss                  = Y
diff --git a/doc/guides/nics/features/enic.ini b/doc/guides/nics/features/enic.ini
index 16d6aabe47..a582616c07 100644
--- a/doc/guides/nics/features/enic.ini
+++ b/doc/guides/nics/features/enic.ini
@@ -25,7 +25,6 @@  Inner RSS            = Y
 SR-IOV               = Y
 CRC offload          = Y
 VLAN offload         = Y
-Flow API             = Y
 L3 checksum offload  = Y
 L4 checksum offload  = Y
 Inner L3 checksum    = Y
@@ -39,3 +38,31 @@  Linux                = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+ipv4                 = Y
+ipv6                 = Y
+raw                  = Y
+sctp                 = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+vxlan                = Y
+
+[rte_flow actions]
+count                = Y
+drop                 = Y
+flag                 = Y
+jump                 = Y
+mark                 = Y
+of_pop_vlan          = Y
+of_push_vlan         = Y
+of_set_vlan_pcp      = Y
+of_set_vlan_vid      = Y
+passthru             = Y
+port_id              = Y
+queue                = Y
+rss                  = Y
+vxlan_decap          = Y
+vxlan_encap          = Y
diff --git a/doc/guides/nics/features/failsafe.ini b/doc/guides/nics/features/failsafe.ini
index b6f3dcee61..8a2b92fc9c 100644
--- a/doc/guides/nics/features/failsafe.ini
+++ b/doc/guides/nics/features/failsafe.ini
@@ -19,7 +19,6 @@  Unicast MAC filter   = Y
 Multicast MAC filter = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 Packet type parsing  = Y
 Basic stats          = Y
 Stats per queue      = Y
diff --git a/doc/guides/nics/features/hinic.ini b/doc/guides/nics/features/hinic.ini
index 988a0ad574..4ea7368704 100644
--- a/doc/guides/nics/features/hinic.ini
+++ b/doc/guides/nics/features/hinic.ini
@@ -32,10 +32,24 @@  Inner L4 checksum    = Y
 Basic stats          = Y
 Extended stats       = Y
 Stats per queue      = Y
-Flow API             = Y
 Flow control         = Y
 FW version           = Y
 Multiprocess aware   = Y
 Linux                = Y
 x86-64               = Y
 ARMv8                = Y
+
+[rte_flow items]
+any                  = Y
+eth                  = Y
+icmp                 = Y
+icmp6                = Y
+ipv4                 = Y
+ipv6                 = Y
+tcp                  = Y
+udp                  = Y
+vxlan                = Y
+
+[rte_flow actions]
+drop                 = Y
+queue                = Y
diff --git a/doc/guides/nics/features/hns3.ini b/doc/guides/nics/features/hns3.ini
index 3988be4fba..ecb3eed5aa 100644
--- a/doc/guides/nics/features/hns3.ini
+++ b/doc/guides/nics/features/hns3.ini
@@ -26,7 +26,6 @@  RSS reta update      = Y
 DCB                  = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 CRC offload          = Y
 VLAN offload         = Y
 FEC                  = Y
@@ -46,3 +45,25 @@  Module EEPROM dump   = Y
 Multiprocess aware   = Y
 Linux                = Y
 ARMv8                = Y
+
+[rte_flow items]
+eth                  = Y
+geneve               = Y
+icmp                 = Y
+ipv4                 = Y
+ipv6                 = Y
+nvgre                = Y
+sctp                 = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+vxlan                = Y
+vxlan_gpe            = Y
+
+[rte_flow actions]
+count                = Y
+drop                 = Y
+flag                 = Y
+mark                 = Y
+queue                = Y
+rss                  = Y
diff --git a/doc/guides/nics/features/hns3_vf.ini b/doc/guides/nics/features/hns3_vf.ini
index 1640669a98..489963fafd 100644
--- a/doc/guides/nics/features/hns3_vf.ini
+++ b/doc/guides/nics/features/hns3_vf.ini
@@ -24,7 +24,6 @@  RSS hash             = Y
 RSS key update       = Y
 RSS reta update      = Y
 VLAN filter          = Y
-Flow API             = Y
 CRC offload          = Y
 VLAN offload         = Y
 L3 checksum offload  = Y
diff --git a/doc/guides/nics/features/i40e.ini b/doc/guides/nics/features/i40e.ini
index 542432c41d..1f3f5eb3ff 100644
--- a/doc/guides/nics/features/i40e.ini
+++ b/doc/guides/nics/features/i40e.ini
@@ -27,7 +27,6 @@  SR-IOV               = Y
 DCB                  = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 Traffic mirroring    = Y
 CRC offload          = Y
 VLAN offload         = Y
@@ -52,3 +51,33 @@  x86-32               = Y
 x86-64               = Y
 ARMv8                = Y
 Power8               = Y
+
+[rte_flow items]
+ah                   = Y
+esp                  = Y
+eth                  = Y
+gre                  = Y
+gtpc                 = Y
+gtpu                 = Y
+ipv4                 = Y
+ipv6                 = Y
+l2tpv3oip            = Y
+mpls                 = Y
+nvgre                = Y
+raw                  = Y
+sctp                 = Y
+tcp                  = Y
+udp                  = Y
+vf                   = Y
+vlan                 = Y
+vxlan                = Y
+
+[rte_flow actions]
+drop                 = Y
+flag                 = Y
+mark                 = Y
+passthru             = Y
+pf                   = Y
+queue                = Y
+rss                  = Y
+vf                   = Y
diff --git a/doc/guides/nics/features/iavf.ini b/doc/guides/nics/features/iavf.ini
index 980680e568..4864c19b57 100644
--- a/doc/guides/nics/features/iavf.ini
+++ b/doc/guides/nics/features/iavf.ini
@@ -19,7 +19,6 @@  Multicast MAC filter = Y
 RSS hash             = Y
 RSS key update       = Y
 RSS reta update      = Y
-Flow API             = Y
 VLAN filter          = Y
 CRC offload          = Y
 VLAN offload         = Y
@@ -34,3 +33,31 @@  FreeBSD              = Y
 Linux                = Y
 x86-32               = Y
 x86-64               = Y
+
+[rte_flow items]
+ah                   = Y
+arp_eth_ipv4         = Y
+ecpri                = Y
+esp                  = Y
+eth                  = Y
+gtpc                 = Y
+gtpu                 = Y
+gtp_psc              = Y
+icmp                 = Y
+icmp6                = Y
+ipv4                 = Y
+ipv6                 = Y
+l2tpv3oip            = Y
+pfcp                 = Y
+sctp                 = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+
+[rte_flow actions]
+count                = Y
+drop                 = Y
+mark                 = Y
+passthru             = Y
+queue                = Y
+rss                  = Y
diff --git a/doc/guides/nics/features/ice.ini b/doc/guides/nics/features/ice.ini
index e30a7d2e57..c3a8a1b676 100644
--- a/doc/guides/nics/features/ice.ini
+++ b/doc/guides/nics/features/ice.ini
@@ -21,7 +21,6 @@  Unicast MAC filter   = Y
 RSS hash             = Y
 RSS key update       = Y
 RSS reta update      = Y
-Flow API             = Y
 VLAN filter          = Y
 CRC offload          = Y
 VLAN offload         = Y
@@ -42,3 +41,35 @@  FreeBSD              = Y
 Linux                = Y
 x86-32               = Y
 x86-64               = Y
+
+[rte_flow items]
+ah                   = Y
+arp_eth_ipv4         = Y
+esp                  = Y
+eth                  = Y
+gtpu                 = Y
+gtp_psc              = Y
+icmp                 = Y
+icmp6                = Y
+ipv4                 = Y
+ipv6                 = Y
+l2tpv3oip            = Y
+nvgre                = Y
+pfcp                 = Y
+pppoed               = Y
+pppoes               = Y
+pppoe_proto_id       = Y
+sctp                 = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+vxlan                = Y
+
+[rte_flow actions]
+count                = Y
+drop                 = Y
+mark                 = Y
+passthru             = Y
+queue                = Y
+rss                  = Y
+vf                   = Y
diff --git a/doc/guides/nics/features/ice_dcf.ini b/doc/guides/nics/features/ice_dcf.ini
index f4998152df..ae79b6a515 100644
--- a/doc/guides/nics/features/ice_dcf.ini
+++ b/doc/guides/nics/features/ice_dcf.ini
@@ -8,7 +8,6 @@  Queue start/stop     = Y
 Jumbo frame          = Y
 Scattered Rx         = Y
 RSS hash             = P
-Flow API             = Y
 CRC offload          = Y
 L3 checksum offload  = P
 L4 checksum offload  = P
diff --git a/doc/guides/nics/features/igb.ini b/doc/guides/nics/features/igb.ini
index 2925a8031d..f4f6e9a4cb 100644
--- a/doc/guides/nics/features/igb.ini
+++ b/doc/guides/nics/features/igb.ini
@@ -24,7 +24,6 @@  SR-IOV               = Y
 DCB                  = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 CRC offload          = Y
 VLAN offload         = Y
 QinQ offload         = Y
diff --git a/doc/guides/nics/features/igc.ini b/doc/guides/nics/features/igc.ini
index 300d37e81a..f810c2df4e 100644
--- a/doc/guides/nics/features/igc.ini
+++ b/doc/guides/nics/features/igc.ini
@@ -32,6 +32,16 @@  RSS key update       = Y
 RSS reta update      = Y
 VLAN filter          = Y
 VLAN offload         = Y
-Flow API             = P
 Linux                = Y
 x86-64               = Y
+
+[rte_flow items]
+eth                  = Y
+ipv4                 = Y
+ipv6                 = Y
+tcp                  = Y
+udp                  = Y
+
+[rte_flow actions]
+queue                = Y
+rss                  = Y
diff --git a/doc/guides/nics/features/ipn3ke.ini b/doc/guides/nics/features/ipn3ke.ini
index 82de553eb2..5586f7cb33 100644
--- a/doc/guides/nics/features/ipn3ke.ini
+++ b/doc/guides/nics/features/ipn3ke.ini
@@ -26,7 +26,6 @@  SR-IOV               = Y
 DCB                  = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 Traffic mirroring    = Y
 CRC offload          = Y
 VLAN offload         = Y
@@ -48,3 +47,17 @@  FreeBSD              = Y
 Linux                = Y
 x86-32               = Y
 x86-64               = Y
+
+[rte_flow items]
+eth                  = Y
+ipv4                 = Y
+mpls                 = Y
+nvgre                = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+vxlan                = Y
+
+[rte_flow actions]
+drop                 = Y
+mark                 = Y
diff --git a/doc/guides/nics/features/ixgbe.ini b/doc/guides/nics/features/ixgbe.ini
index c5e6e14aac..93a9cc18ab 100644
--- a/doc/guides/nics/features/ixgbe.ini
+++ b/doc/guides/nics/features/ixgbe.ini
@@ -26,7 +26,6 @@  SR-IOV               = Y
 DCB                  = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 Rate limitation      = Y
 Traffic mirroring    = Y
 Inline crypto        = Y
@@ -55,3 +54,26 @@  Linux                = Y
 ARMv8                = Y
 x86-32               = Y
 x86-64               = Y
+
+[rte_flow items]
+eth                  = Y
+e_tag                = Y
+fuzzy                = Y
+ipv4                 = Y
+ipv6                 = Y
+nvgre                = Y
+raw                  = Y
+sctp                 = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+vxlan                = Y
+
+[rte_flow actions]
+drop                 = Y
+mark                 = Y
+pf                   = Y
+queue                = Y
+rss                  = Y
+security             = Y
+vf                   = Y
diff --git a/doc/guides/nics/features/mlx4.ini b/doc/guides/nics/features/mlx4.ini
index ebb9ccf767..c394dfcefe 100644
--- a/doc/guides/nics/features/mlx4.ini
+++ b/doc/guides/nics/features/mlx4.ini
@@ -22,7 +22,6 @@  RSS hash             = Y
 SR-IOV               = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 CRC offload          = Y
 L3 checksum offload  = Y
 L4 checksum offload  = Y
@@ -38,3 +37,15 @@  Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+ipv4                 = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+
+[rte_flow actions]
+drop                 = Y
+queue                = Y
+rss                  = Y
diff --git a/doc/guides/nics/features/mlx5.ini b/doc/guides/nics/features/mlx5.ini
index ddd131da16..15b1897c21 100644
--- a/doc/guides/nics/features/mlx5.ini
+++ b/doc/guides/nics/features/mlx5.ini
@@ -28,7 +28,6 @@  Inner RSS            = Y
 SR-IOV               = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 CRC offload          = Y
 VLAN offload         = Y
 L3 checksum offload  = Y
@@ -52,3 +51,73 @@  Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+ecpri                = Y
+eth                  = Y
+geneve               = Y
+geneve_opt           = Y
+gre                  = Y
+gre_key              = Y
+gtp                  = Y
+gtp_psc              = Y
+icmp                 = Y
+icmp6                = Y
+ipv4                 = Y
+ipv6                 = Y
+ipv6_frag_ext        = Y
+mark                 = Y
+meta                 = Y
+mpls                 = Y
+nvgre                = Y
+phy_port             = Y
+port_id              = Y
+tag                  = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+vxlan                = Y
+vxlan_gpe            = Y
+
+[rte_flow actions]
+age                  = I
+count                = Y
+dec_tcp_ack          = Y
+dec_tcp_seq          = Y
+dec_ttl              = Y
+drop                 = Y
+flag                 = Y
+inc_tcp_ack          = Y
+inc_tcp_seq          = Y
+jump                 = Y
+mark                 = Y
+meter                = Y
+modify_field         = Y
+nvgre_decap          = Y
+nvgre_encap          = Y
+of_pop_vlan          = Y
+of_push_vlan         = Y
+of_set_vlan_pcp      = Y
+of_set_vlan_vid      = Y
+port_id              = Y
+queue                = Y
+raw_decap            = Y
+raw_encap            = Y
+rss                  = I
+sample               = Y
+set_ipv4_dscp        = Y
+set_ipv4_dst         = Y
+set_ipv4_src         = Y
+set_ipv6_dscp        = Y
+set_ipv6_dst         = Y
+set_ipv6_src         = Y
+set_mac_dst          = Y
+set_mac_src          = Y
+set_meta             = Y
+set_tag              = Y
+set_tp_dst           = Y
+set_tp_src           = Y
+set_ttl              = Y
+shared               = Y
+vxlan_decap          = Y
+vxlan_encap          = Y
diff --git a/doc/guides/nics/features/mvpp2.ini b/doc/guides/nics/features/mvpp2.ini
index ef47546d1c..2ce0ca817a 100644
--- a/doc/guides/nics/features/mvpp2.ini
+++ b/doc/guides/nics/features/mvpp2.ini
@@ -23,3 +23,17 @@  Basic stats          = Y
 Extended stats       = Y
 ARMv8                = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+ipv4                 = Y
+ipv6                 = Y
+raw                  = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+
+[rte_flow actions]
+drop                 = Y
+meter                = Y
+queue                = Y
diff --git a/doc/guides/nics/features/octeontx2.ini b/doc/guides/nics/features/octeontx2.ini
index c0bcb8278e..fa49868cb3 100644
--- a/doc/guides/nics/features/octeontx2.ini
+++ b/doc/guides/nics/features/octeontx2.ini
@@ -30,7 +30,6 @@  Inner RSS            = Y
 Inline protocol      = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 Rate limitation      = Y
 Jumbo frame          = Y
 Scattered Rx         = Y
@@ -54,3 +53,44 @@  Registers dump       = Y
 Linux                = Y
 ARMv8                = Y
 Usage doc            = Y
+
+[rte_flow items]
+any                  = Y
+arp_eth_ipv4         = Y
+esp                  = Y
+eth                  = Y
+e_tag                = Y
+geneve               = Y
+gre                  = Y
+gre_key              = Y
+gtpc                 = Y
+gtpu                 = Y
+higig2               = Y
+icmp                 = Y
+ipv4                 = Y
+ipv6                 = Y
+ipv6_ext             = Y
+mpls                 = Y
+nvgre                = Y
+raw                  = Y
+sctp                 = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+vxlan                = Y
+vxlan_gpe            = Y
+
+[rte_flow actions]
+count                = Y
+drop                 = Y
+flag                 = Y
+mark                 = Y
+of_pop_vlan          = Y
+of_push_vlan         = Y
+of_set_vlan_pcp      = Y
+of_set_vlan_vid      = Y
+pf                   = Y
+queue                = Y
+rss                  = Y
+security             = Y
+vf                   = Y
diff --git a/doc/guides/nics/features/octeontx2_vec.ini b/doc/guides/nics/features/octeontx2_vec.ini
index 7025e140ad..376a1d6cc1 100644
--- a/doc/guides/nics/features/octeontx2_vec.ini
+++ b/doc/guides/nics/features/octeontx2_vec.ini
@@ -27,7 +27,6 @@  RSS reta update      = Y
 Inner RSS            = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 Rate limitation      = Y
 Jumbo frame          = Y
 VLAN offload         = Y
diff --git a/doc/guides/nics/features/octeontx2_vf.ini b/doc/guides/nics/features/octeontx2_vf.ini
index 7f5e5b8bba..8141aadf85 100644
--- a/doc/guides/nics/features/octeontx2_vf.ini
+++ b/doc/guides/nics/features/octeontx2_vf.ini
@@ -23,7 +23,6 @@  RSS reta update      = Y
 Inner RSS            = Y
 Inline protocol      = Y
 VLAN filter          = Y
-Flow API             = Y
 Rate limitation      = Y
 Jumbo frame          = Y
 Scattered Rx         = Y
diff --git a/doc/guides/nics/features/qede.ini b/doc/guides/nics/features/qede.ini
index 852cecb3d3..e65d5d076e 100644
--- a/doc/guides/nics/features/qede.ini
+++ b/doc/guides/nics/features/qede.ini
@@ -20,7 +20,6 @@  RSS key update       = Y
 RSS reta update      = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 CRC offload          = Y
 VLAN offload         = Y
 L3 checksum offload  = Y
@@ -39,3 +38,13 @@  ARMv8                = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+ipv4                 = Y
+ipv6                 = Y
+tcp                  = Y
+udp                  = Y
+
+[rte_flow actions]
+drop                 = Y
+queue                = Y
diff --git a/doc/guides/nics/features/sfc.ini b/doc/guides/nics/features/sfc.ini
index 7e29568e5f..9e66ec4293 100644
--- a/doc/guides/nics/features/sfc.ini
+++ b/doc/guides/nics/features/sfc.ini
@@ -24,7 +24,6 @@  RSS key update       = Y
 RSS reta update      = Y
 SR-IOV               = Y
 Flow control         = Y
-Flow API             = Y
 VLAN offload         = P
 L3 checksum offload  = Y
 L4 checksum offload  = Y
@@ -41,3 +40,37 @@  FreeBSD              = Y
 Linux                = Y
 ARMv8                = Y
 x86-64               = Y
+
+[rte_flow items]
+eth                  = Y
+geneve               = Y
+ipv4                 = Y
+ipv6                 = Y
+nvgre                = Y
+pf                   = Y
+phy_port             = Y
+port_id              = Y
+pppoed               = Y
+pppoes               = Y
+tcp                  = Y
+udp                  = Y
+vf                   = Y
+vlan                 = Y
+vxlan                = Y
+
+[rte_flow actions]
+drop                 = Y
+flag                 = Y
+mark                 = Y
+of_pop_vlan          = Y
+of_push_vlan         = Y
+of_set_vlan_pcp      = Y
+of_set_vlan_vid      = Y
+pf                   = Y
+phy_port             = Y
+port_id              = Y
+queue                = Y
+rss                  = Y
+vf                   = Y
+vxlan_decap          = Y
+vxlan_encap          = Y
diff --git a/doc/guides/nics/features/tap.ini b/doc/guides/nics/features/tap.ini
index be5e53dbe9..b4a356e5d5 100644
--- a/doc/guides/nics/features/tap.ini
+++ b/doc/guides/nics/features/tap.ini
@@ -11,7 +11,6 @@  Rx interrupt         = Y
 Promiscuous mode     = Y
 Allmulticast mode    = Y
 Basic stats          = Y
-Flow API             = Y
 L3 checksum offload  = Y
 L4 checksum offload  = Y
 MTU update           = Y
@@ -26,3 +25,17 @@  Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+ipv4                 = Y
+ipv6                 = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+
+[rte_flow actions]
+drop                 = Y
+passthru             = Y
+queue                = Y
+rss                  = Y
diff --git a/doc/guides/nics/features/txgbe.ini b/doc/guides/nics/features/txgbe.ini
index a3fdee9f8a..61cb3f6d9f 100644
--- a/doc/guides/nics/features/txgbe.ini
+++ b/doc/guides/nics/features/txgbe.ini
@@ -26,7 +26,6 @@  SR-IOV               = Y
 DCB                  = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 Rate limitation      = Y
 Inline crypto        = Y
 CRC offload          = P
@@ -52,3 +51,26 @@  Linux                = Y
 ARMv8                = Y
 x86-32               = Y
 x86-64               = Y
+
+[rte_flow items]
+eth                  = Y
+e_tag                = Y
+fuzzy                = Y
+ipv4                 = Y
+ipv6                 = Y
+nvgre                = Y
+raw                  = Y
+sctp                 = Y
+tcp                  = Y
+udp                  = Y
+vlan                 = Y
+vxlan                = Y
+
+[rte_flow actions]
+drop                 = Y
+mark                 = Y
+pf                   = Y
+queue                = Y
+rss                  = Y
+security             = Y
+vf                   = Y
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index 20cd52b097..67575c699c 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -32,3 +32,11 @@  More details about features can be found in :doc:`features`.
 
    Features marked with "P" are partially supported. Refer to the appropriate
    NIC guide in the following sections for details.
+
+.. include:: rte_flow_items_table.txt
+
+.. include:: rte_flow_actions_table.txt
+
+.. Note::
+
+   rte_flow actions marked with "I" can be indirect as well.