DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] doc: add new tables for rte flow items and actions support
@ 2021-02-04 17:05 Asaf Penso
  2021-02-04 22:09 ` Thomas Monjalon
                   ` (3 more replies)
  0 siblings, 4 replies; 32+ messages in thread
From: Asaf Penso @ 2021-02-04 17:05 UTC (permalink / raw)
  To: dev; +Cc: thomas

In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists all
supported features.
It has a single line for "Flow API" that refers to rte_flow support.
rte_flow is composed of many items and actions that are not expressed in
this single line.

The following new tables are suggested:
1. rte_flow items
2. rte_flow actions
3. rte_flow shared actions

Signed-off-by: Asaf Penso <asafp@nvidia.com>
---
 doc/guides/conf.py                   |  23 +++++---
 doc/guides/nics/features/default.ini | 109 +++++++++++++++++++++++++++++++++++
 doc/guides/nics/features/mlx4.ini    |  15 +++++
 doc/guides/nics/features/mlx5.ini    |  70 ++++++++++++++++++++++
 doc/guides/nics/overview.rst         |  11 ++++
 5 files changed, 221 insertions(+), 7 deletions(-)

diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index aceeb62..149507a 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -217,14 +217,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.
@@ -380,6 +374,21 @@ 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 features availability in networking drivers',
+                            'Items')
+    table_file = dirname(__file__) + '/nics/rte_flow_actions_table.txt'
+    generate_overview_table(table_file, 3,
+                            'rte_flow actions',
+                            'rte_flow actions features availability in networking drivers',
+                            'Actions')
+    table_file = dirname(__file__) + '/nics/rte_flow_shared_actions_table.txt'
+    generate_overview_table(table_file, 4,
+                            'rte_flow shared actions',
+                            'rte_flow shared actions features availability in networking drivers',
+                            'Actions')
     table_file = dirname(__file__) + '/cryptodevs/overview_feature_table.txt'
     generate_overview_table(table_file, 1,
                             'Features',
diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini
index 8d89278..3f2b8cf 100644
--- a/doc/guides/nics/features/default.ini
+++ b/doc/guides/nics/features/default.ini
@@ -76,3 +76,112 @@ x86-64               =
 Usage doc            =
 Design doc           =
 Perf doc             =
+
+[rte_flow items]
+any                  =
+raw                  =
+eth                  =
+vlan                 =
+ipv4                 =
+ipv6                 =
+icmp                 =
+udp                  =
+tcp                  =
+sctp                 =
+vxlan                =
+e_tag                =
+nvgre                =
+mpls                 =
+gre                  =
+gre_key              =
+fuzzy                =
+gtp                  =
+gtpc                 =
+gtpu                 =
+esp                  =
+geneve               =
+vxlan-gpe            =
+arp_eth_ipv4         =
+ipv6_ext             =
+ipv6_frag_ext        =
+icmp6                =
+icmp6_nd_ns          =
+icmp6_nd_na          =
+icmp6_nd_opt         =
+icmp6_nd_opt_sla_eth =
+icmp6_nd_opt_tla_eth =
+meta                 =
+gtp_psc              =
+pppoes               =
+pppoed               =
+pppoe_proto_id       =
+nsh                  =
+igmp                 =
+ah                   =
+higig2               =
+l2tpv3oip            =
+pfcp                 =
+ecpri                =
+
+[rte_flow actions]
+end                  =
+void                 =
+passthru             =
+jump                 =
+mark                 =
+flag                 =
+queue                =
+drop                 =
+count                =
+rss                  =
+pf                   =
+vf                   =
+phy_port             =
+port_id              =
+meter                =
+security             =
+of_set_mpls_ttl      =
+of_dec_mpls_ttl      =
+of_set_nw_ttl        =
+of_dec_nw_ttl        =
+of_copy_ttl_out      =
+of_copy_ttl_in       =
+of_pop_vlan          =
+of_push_vlan         =
+of_set_vlan_vid      =
+of_set_vlan_pcp      =
+of_pop_mpls          =
+of_push_mpls         =
+vxlan_encap          =
+vxlan_decap          =
+nvgre_encap          =
+nvgre_decap          =
+raw_encap            =
+raw_decap            =
+set_ipv4_src         =
+set_ipv4_dst         =
+set_ipv6_src         =
+set_ipv6_dst         =
+set_tp_src           =
+set_tp_dst           =
+mac_swap             =
+dec_ttl              =
+set_ttl              =
+set_mac_src          =
+set_mac_dst          =
+inc_tcp_seq          =
+dec_tcp_seq          =
+inc_tcp_ack          =
+dec_tcp_ack          =
+set_tag              =
+set_meta             =
+set_ipv4_dscp        =
+set_ipv6_dscp        =
+age                  =
+sample               =
+shared               =
+modify_field         =
+
+[rte_flow shared actions]
+age                  =
+rss                  =
diff --git a/doc/guides/nics/features/mlx4.ini b/doc/guides/nics/features/mlx4.ini
index ebb9ccf..5e352f5 100644
--- a/doc/guides/nics/features/mlx4.ini
+++ b/doc/guides/nics/features/mlx4.ini
@@ -38,3 +38,18 @@ Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+vlan                 = Y
+ipv4                 = Y
+ipv6                 = Y
+udp                  = Y
+tcp                  = Y
+
+[rte_flow actions]
+end                  = Y
+void                 = Y
+queue                = Y
+drop                 = Y
+rss                  = Y
diff --git a/doc/guides/nics/features/mlx5.ini b/doc/guides/nics/features/mlx5.ini
index ddd131d..962650f 100644
--- a/doc/guides/nics/features/mlx5.ini
+++ b/doc/guides/nics/features/mlx5.ini
@@ -52,3 +52,73 @@ Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+vlan                 = Y
+ipv4                 = Y
+ipv6                 = Y
+icmp                 = Y
+udp                  = Y
+tcp                  = Y
+vxlan                = Y
+nvgre                = Y
+mpls                 = Y
+gre                  = Y
+gre_key              = Y
+gtp                  = Y
+geneve               = Y
+vxlan-gpe            = Y
+ipv6_ext             = Y
+ipv6_frag_ext        = Y
+icmp6                = Y
+meta                 = Y
+gtp_psc              = Y
+ecpri                = Y
+
+[rte_flow actions]
+end                  = Y
+void                 = Y
+jump                 = Y
+mark                 = Y
+flag                 = Y
+queue                = Y
+drop                 = Y
+count                = Y
+rss                  = Y
+port_id              = Y
+meter                = Y
+of_pop_vlan          = Y
+of_push_vlan         = Y
+of_set_vlan_vid      = Y
+of_set_vlan_pcp      = Y
+vxlan_encap          = Y
+vxlan_decap          = Y
+raw_encap            = Y
+raw_decap            = Y
+set_ipv4_src         = Y
+set_ipv4_dst         = Y
+set_ipv6_src         = Y
+set_ipv6_dst         = Y
+set_tp_src           = Y
+set_tp_dst           = Y
+dec_ttl              = Y
+set_ttl              = Y
+set_mac_src          = Y
+set_mac_dst          = Y
+inc_tcp_seq          = Y
+dec_tcp_seq          = Y
+inc_tcp_ack          = Y
+dec_tcp_ack          = Y
+set_tag              = Y
+set_meta             = Y
+set_ipv4_dscp        = Y
+set_ipv6_dscp        = Y
+age                  = Y
+sample               = Y
+shared               = S
+modify_field         = Y
+
+[rte_flow shared actions]
+age                  = Y
+rss                  = Y
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index 20cd52b..cded041 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -28,7 +28,18 @@ More details about features can be found in :doc:`features`.
 
 .. include:: overview_table.txt
 
+.. include:: rte_flow_items_table.txt
+
+.. include:: rte_flow_actions_table.txt
+
+.. include:: rte_flow_shared_actions_table.txt
+
 .. Note::
 
    Features marked with "P" are partially supported. Refer to the appropriate
    NIC guide in the following sections for details.
+
+.. Note::
+
+   rte_flow action shared that is marked with "S" means that some or all
+   shared action are supported and more details can be found in table 1.4.
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH] doc: add new tables for rte flow items and actions support
  2021-02-04 17:05 [dpdk-dev] [PATCH] doc: add new tables for rte flow items and actions support Asaf Penso
@ 2021-02-04 22:09 ` Thomas Monjalon
  2021-02-07  8:46   ` Asaf Penso
  2021-02-07  9:27 ` [dpdk-dev] [PATCH v2] " Asaf Penso
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 32+ messages in thread
From: Thomas Monjalon @ 2021-02-04 22:09 UTC (permalink / raw)
  To: Asaf Penso; +Cc: dev

04/02/2021 18:05, Asaf Penso:
> In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists all
> supported features.
> It has a single line for "Flow API" that refers to rte_flow support.
> rte_flow is composed of many items and actions that are not expressed in
> this single line.
> 
> The following new tables are suggested:
> 1. rte_flow items
> 2. rte_flow actions
> 3. rte_flow shared actions
> 
> Signed-off-by: Asaf Penso <asafp@nvidia.com>
> ---
>  doc/guides/conf.py                   |  23 +++++---
>  doc/guides/nics/features/default.ini | 109 +++++++++++++++++++++++++++++++++++
>  doc/guides/nics/features/mlx4.ini    |  15 +++++
>  doc/guides/nics/features/mlx5.ini    |  70 ++++++++++++++++++++++
>  doc/guides/nics/overview.rst         |  11 ++++
>  5 files changed, 221 insertions(+), 7 deletions(-)

After running git status I remembered the generated .txt files
must be added in .gitignore.

[...]
> +[rte_flow actions]
> +end                  = Y
> +void                 = Y
> +jump                 = Y
> +mark                 = Y
> +flag                 = Y
> +queue                = Y
> +drop                 = Y
> +count                = Y
> +rss                  = Y
> +port_id              = Y
> +meter                = Y
> +of_pop_vlan          = Y
> +of_push_vlan         = Y
> +of_set_vlan_vid      = Y
> +of_set_vlan_pcp      = Y
> +vxlan_encap          = Y
> +vxlan_decap          = Y
> +raw_encap            = Y
> +raw_decap            = Y
> +set_ipv4_src         = Y
> +set_ipv4_dst         = Y
> +set_ipv6_src         = Y
> +set_ipv6_dst         = Y
> +set_tp_src           = Y
> +set_tp_dst           = Y
> +dec_ttl              = Y
> +set_ttl              = Y
> +set_mac_src          = Y
> +set_mac_dst          = Y
> +inc_tcp_seq          = Y
> +dec_tcp_seq          = Y
> +inc_tcp_ack          = Y
> +dec_tcp_ack          = Y
> +set_tag              = Y
> +set_meta             = Y
> +set_ipv4_dscp        = Y
> +set_ipv6_dscp        = Y
> +age                  = Y
> +sample               = Y
> +shared               = S
> +modify_field         = Y

I suggest not having "shared" in above table but marking "age" and "rss"
as shared with "S" in above table.

> +[rte_flow shared actions]
> +age                  = Y
> +rss                  = Y




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH] doc: add new tables for rte flow items and actions support
  2021-02-04 22:09 ` Thomas Monjalon
@ 2021-02-07  8:46   ` Asaf Penso
  2021-02-07  9:44     ` Thomas Monjalon
  0 siblings, 1 reply; 32+ messages in thread
From: Asaf Penso @ 2021-02-07  8:46 UTC (permalink / raw)
  To: NBU-Contact-Thomas Monjalon; +Cc: dev

>-----Original Message-----
>From: Thomas Monjalon <thomas@monjalon.net>
>Sent: Friday, February 5, 2021 12:09 AM
>To: Asaf Penso <asafp@nvidia.com>
>Cc: dev@dpdk.org
>Subject: Re: [dpdk-dev] [PATCH] doc: add new tables for rte flow items and
>actions support
>
>04/02/2021 18:05, Asaf Penso:
>> In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists all
>> supported features.
>> It has a single line for "Flow API" that refers to rte_flow support.
>> rte_flow is composed of many items and actions that are not expressed
>> in this single line.
>>
>> The following new tables are suggested:
>> 1. rte_flow items
>> 2. rte_flow actions
>> 3. rte_flow shared actions
>>
>> Signed-off-by: Asaf Penso <asafp@nvidia.com>
>> ---
>>  doc/guides/conf.py                   |  23 +++++---
>>  doc/guides/nics/features/default.ini | 109
>+++++++++++++++++++++++++++++++++++
>>  doc/guides/nics/features/mlx4.ini    |  15 +++++
>>  doc/guides/nics/features/mlx5.ini    |  70 ++++++++++++++++++++++
>>  doc/guides/nics/overview.rst         |  11 ++++
>>  5 files changed, 221 insertions(+), 7 deletions(-)
>
>After running git status I remembered the generated .txt files must be added
>in .gitignore.

Thanks, will update .gitignore file in v2.

>
>[...]
>> +[rte_flow actions]
>> +end                  = Y
>> +void                 = Y
>> +jump                 = Y
>> +mark                 = Y
>> +flag                 = Y
>> +queue                = Y
>> +drop                 = Y
>> +count                = Y
>> +rss                  = Y
>> +port_id              = Y
>> +meter                = Y
>> +of_pop_vlan          = Y
>> +of_push_vlan         = Y
>> +of_set_vlan_vid      = Y
>> +of_set_vlan_pcp      = Y
>> +vxlan_encap          = Y
>> +vxlan_decap          = Y
>> +raw_encap            = Y
>> +raw_decap            = Y
>> +set_ipv4_src         = Y
>> +set_ipv4_dst         = Y
>> +set_ipv6_src         = Y
>> +set_ipv6_dst         = Y
>> +set_tp_src           = Y
>> +set_tp_dst           = Y
>> +dec_ttl              = Y
>> +set_ttl              = Y
>> +set_mac_src          = Y
>> +set_mac_dst          = Y
>> +inc_tcp_seq          = Y
>> +dec_tcp_seq          = Y
>> +inc_tcp_ack          = Y
>> +dec_tcp_ack          = Y
>> +set_tag              = Y
>> +set_meta             = Y
>> +set_ipv4_dscp        = Y
>> +set_ipv6_dscp        = Y
>> +age                  = Y
>> +sample               = Y
>> +shared               = S
>> +modify_field         = Y
>
>I suggest not having "shared" in above table but marking "age" and "rss"
>as shared with "S" in above table.
 
In this case, how would you separate, for example, between support of age and shared age? There are different actions.

>
>> +[rte_flow shared actions]
>> +age                  = Y
>> +rss                  = Y
>
>


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [dpdk-dev] [PATCH v2] doc: add new tables for rte flow items and actions support
  2021-02-04 17:05 [dpdk-dev] [PATCH] doc: add new tables for rte flow items and actions support Asaf Penso
  2021-02-04 22:09 ` Thomas Monjalon
@ 2021-02-07  9:27 ` Asaf Penso
  2021-02-07 10:46   ` [dpdk-dev] [PATCH v3] " Asaf Penso
  2021-04-07 22:33 ` [dpdk-dev] [PATCH v5 0/3] rte_flow doc matrix Thomas Monjalon
  2021-05-18 13:28 ` [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix Thomas Monjalon
  3 siblings, 1 reply; 32+ messages in thread
From: Asaf Penso @ 2021-02-07  9:27 UTC (permalink / raw)
  To: dev; +Cc: thomas

In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists all
supported features.
It has a single line for "Flow API" that refers to rte_flow support.
rte_flow is composed of many items and actions that are not expressed in
this single line.

The following new tables are suggested:
1. rte_flow items
2. rte_flow actions
3. rte_flow shared actions

Also, since each table needs a new section in the pmd ini
file that might not be relevant for all pmds, the print
error message for missing section in conf.py is removed.

Signed-off-by: Asaf Penso <asafp@nvidia.com>
---
v2: 
update commit message
add .txt to .gitignore
---
 .gitignore                           |   3 +
 doc/guides/conf.py                   |  23 +++++---
 doc/guides/nics/features/default.ini | 109 +++++++++++++++++++++++++++++++++++
 doc/guides/nics/features/mlx4.ini    |  15 +++++
 doc/guides/nics/features/mlx5.ini    |  70 ++++++++++++++++++++++
 doc/guides/nics/overview.rst         |  11 ++++
 6 files changed, 224 insertions(+), 7 deletions(-)

diff --git a/.gitignore b/.gitignore
index f73d93c..c43fa7b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,9 @@
 
 # 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/nics/rte_flow_shared_actions_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 aceeb62..149507a 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -217,14 +217,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.
@@ -380,6 +374,21 @@ 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 features availability in networking drivers',
+                            'Items')
+    table_file = dirname(__file__) + '/nics/rte_flow_actions_table.txt'
+    generate_overview_table(table_file, 3,
+                            'rte_flow actions',
+                            'rte_flow actions features availability in networking drivers',
+                            'Actions')
+    table_file = dirname(__file__) + '/nics/rte_flow_shared_actions_table.txt'
+    generate_overview_table(table_file, 4,
+                            'rte_flow shared actions',
+                            'rte_flow shared actions features availability in networking drivers',
+                            'Actions')
     table_file = dirname(__file__) + '/cryptodevs/overview_feature_table.txt'
     generate_overview_table(table_file, 1,
                             'Features',
diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini
index 8046bd1..0a948a4 100644
--- a/doc/guides/nics/features/default.ini
+++ b/doc/guides/nics/features/default.ini
@@ -77,3 +77,112 @@ x86-64               =
 Usage doc            =
 Design doc           =
 Perf doc             =
+
+[rte_flow items]
+any                  =
+raw                  =
+eth                  =
+vlan                 =
+ipv4                 =
+ipv6                 =
+icmp                 =
+udp                  =
+tcp                  =
+sctp                 =
+vxlan                =
+e_tag                =
+nvgre                =
+mpls                 =
+gre                  =
+gre_key              =
+fuzzy                =
+gtp                  =
+gtpc                 =
+gtpu                 =
+esp                  =
+geneve               =
+vxlan-gpe            =
+arp_eth_ipv4         =
+ipv6_ext             =
+ipv6_frag_ext        =
+icmp6                =
+icmp6_nd_ns          =
+icmp6_nd_na          =
+icmp6_nd_opt         =
+icmp6_nd_opt_sla_eth =
+icmp6_nd_opt_tla_eth =
+meta                 =
+gtp_psc              =
+pppoes               =
+pppoed               =
+pppoe_proto_id       =
+nsh                  =
+igmp                 =
+ah                   =
+higig2               =
+l2tpv3oip            =
+pfcp                 =
+ecpri                =
+
+[rte_flow actions]
+end                  =
+void                 =
+passthru             =
+jump                 =
+mark                 =
+flag                 =
+queue                =
+drop                 =
+count                =
+rss                  =
+pf                   =
+vf                   =
+phy_port             =
+port_id              =
+meter                =
+security             =
+of_set_mpls_ttl      =
+of_dec_mpls_ttl      =
+of_set_nw_ttl        =
+of_dec_nw_ttl        =
+of_copy_ttl_out      =
+of_copy_ttl_in       =
+of_pop_vlan          =
+of_push_vlan         =
+of_set_vlan_vid      =
+of_set_vlan_pcp      =
+of_pop_mpls          =
+of_push_mpls         =
+vxlan_encap          =
+vxlan_decap          =
+nvgre_encap          =
+nvgre_decap          =
+raw_encap            =
+raw_decap            =
+set_ipv4_src         =
+set_ipv4_dst         =
+set_ipv6_src         =
+set_ipv6_dst         =
+set_tp_src           =
+set_tp_dst           =
+mac_swap             =
+dec_ttl              =
+set_ttl              =
+set_mac_src          =
+set_mac_dst          =
+inc_tcp_seq          =
+dec_tcp_seq          =
+inc_tcp_ack          =
+dec_tcp_ack          =
+set_tag              =
+set_meta             =
+set_ipv4_dscp        =
+set_ipv6_dscp        =
+age                  =
+sample               =
+shared               =
+modify_field         =
+
+[rte_flow shared actions]
+age                  =
+rss                  =
diff --git a/doc/guides/nics/features/mlx4.ini b/doc/guides/nics/features/mlx4.ini
index ebb9ccf..5e352f5 100644
--- a/doc/guides/nics/features/mlx4.ini
+++ b/doc/guides/nics/features/mlx4.ini
@@ -38,3 +38,18 @@ Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+vlan                 = Y
+ipv4                 = Y
+ipv6                 = Y
+udp                  = Y
+tcp                  = Y
+
+[rte_flow actions]
+end                  = Y
+void                 = Y
+queue                = Y
+drop                 = Y
+rss                  = Y
diff --git a/doc/guides/nics/features/mlx5.ini b/doc/guides/nics/features/mlx5.ini
index ddd131d..962650f 100644
--- a/doc/guides/nics/features/mlx5.ini
+++ b/doc/guides/nics/features/mlx5.ini
@@ -52,3 +52,73 @@ Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+vlan                 = Y
+ipv4                 = Y
+ipv6                 = Y
+icmp                 = Y
+udp                  = Y
+tcp                  = Y
+vxlan                = Y
+nvgre                = Y
+mpls                 = Y
+gre                  = Y
+gre_key              = Y
+gtp                  = Y
+geneve               = Y
+vxlan-gpe            = Y
+ipv6_ext             = Y
+ipv6_frag_ext        = Y
+icmp6                = Y
+meta                 = Y
+gtp_psc              = Y
+ecpri                = Y
+
+[rte_flow actions]
+end                  = Y
+void                 = Y
+jump                 = Y
+mark                 = Y
+flag                 = Y
+queue                = Y
+drop                 = Y
+count                = Y
+rss                  = Y
+port_id              = Y
+meter                = Y
+of_pop_vlan          = Y
+of_push_vlan         = Y
+of_set_vlan_vid      = Y
+of_set_vlan_pcp      = Y
+vxlan_encap          = Y
+vxlan_decap          = Y
+raw_encap            = Y
+raw_decap            = Y
+set_ipv4_src         = Y
+set_ipv4_dst         = Y
+set_ipv6_src         = Y
+set_ipv6_dst         = Y
+set_tp_src           = Y
+set_tp_dst           = Y
+dec_ttl              = Y
+set_ttl              = Y
+set_mac_src          = Y
+set_mac_dst          = Y
+inc_tcp_seq          = Y
+dec_tcp_seq          = Y
+inc_tcp_ack          = Y
+dec_tcp_ack          = Y
+set_tag              = Y
+set_meta             = Y
+set_ipv4_dscp        = Y
+set_ipv6_dscp        = Y
+age                  = Y
+sample               = Y
+shared               = S
+modify_field         = Y
+
+[rte_flow shared actions]
+age                  = Y
+rss                  = Y
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index 20cd52b..cded041 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -28,7 +28,18 @@ More details about features can be found in :doc:`features`.
 
 .. include:: overview_table.txt
 
+.. include:: rte_flow_items_table.txt
+
+.. include:: rte_flow_actions_table.txt
+
+.. include:: rte_flow_shared_actions_table.txt
+
 .. Note::
 
    Features marked with "P" are partially supported. Refer to the appropriate
    NIC guide in the following sections for details.
+
+.. Note::
+
+   rte_flow action shared that is marked with "S" means that some or all
+   shared action are supported and more details can be found in table 1.4.
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH] doc: add new tables for rte flow items and actions support
  2021-02-07  8:46   ` Asaf Penso
@ 2021-02-07  9:44     ` Thomas Monjalon
  0 siblings, 0 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-02-07  9:44 UTC (permalink / raw)
  To: Asaf Penso; +Cc: dev

07/02/2021 09:46, Asaf Penso:
> From: Thomas Monjalon <thomas@monjalon.net>
> >04/02/2021 18:05, Asaf Penso:
> >> +age                  = Y
> >> +sample               = Y
> >> +shared               = S
> >> +modify_field         = Y
> >
> >I suggest not having "shared" in above table but marking "age" and "rss"
> >as shared with "S" in above table.
>  
> In this case, how would you separate, for example, between support of age and shared age? There are different actions.

If aged is supported, but not shared age, then "age = Y".
If shared age is supported, then "age = S".
I assume simple age is supported if shared age is.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* [dpdk-dev] [PATCH v3] doc: add new tables for rte flow items and actions support
  2021-02-07  9:27 ` [dpdk-dev] [PATCH v2] " Asaf Penso
@ 2021-02-07 10:46   ` Asaf Penso
  2021-02-07 10:52     ` [dpdk-dev] [PATCH v4] " Asaf Penso
  0 siblings, 1 reply; 32+ messages in thread
From: Asaf Penso @ 2021-02-07 10:46 UTC (permalink / raw)
  To: dev; +Cc: thomas

In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists all
supported features.
It has a single line for "Flow API" that refers to rte_flow support.
rte_flow is composed of many items and actions that are not expressed in
this single line.

The following new tables are suggested:
1. rte_flow items
2. rte_flow actions
3. rte_flow shared actions

Also, since each table needs a new section in the pmd ini
file that might not be relevant for all pmds, the print
error message for missing section in conf.py is removed.

Signed-off-by: Asaf Penso <asafp@nvidia.com>
---
v3:
remove the shared action table
update the note for "S" notation

v2: 
update commit message
add .txt to .gitignore
---
 .gitignore                           |   2 +
 doc/guides/conf.py                   |  18 +++---
 doc/guides/nics/features/default.ini | 104 +++++++++++++++++++++++++++++++++++
 doc/guides/nics/features/mlx4.ini    |  15 +++++
 doc/guides/nics/features/mlx5.ini    |  66 ++++++++++++++++++++++
 doc/guides/nics/overview.rst         |  10 ++++
 6 files changed, 208 insertions(+), 7 deletions(-)

diff --git a/.gitignore b/.gitignore
index f73d93c..b19c071 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 aceeb62..4eea58f 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -217,14 +217,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.
@@ -380,6 +374,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 features availability in networking drivers',
+                            'Items')
+    table_file = dirname(__file__) + '/nics/rte_flow_actions_table.txt'
+    generate_overview_table(table_file, 3,
+                            'rte_flow actions',
+                            'rte_flow actions features availability in networking drivers',
+                            'Actions')
     table_file = dirname(__file__) + '/cryptodevs/overview_feature_table.txt'
     generate_overview_table(table_file, 1,
                             'Features',
diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini
index 8046bd1..968aee3 100644
--- a/doc/guides/nics/features/default.ini
+++ b/doc/guides/nics/features/default.ini
@@ -77,3 +77,107 @@ x86-64               =
 Usage doc            =
 Design doc           =
 Perf doc             =
+
+[rte_flow items]
+any                  =
+raw                  =
+eth                  =
+vlan                 =
+ipv4                 =
+ipv6                 =
+icmp                 =
+udp                  =
+tcp                  =
+sctp                 =
+vxlan                =
+e_tag                =
+nvgre                =
+mpls                 =
+gre                  =
+gre_key              =
+fuzzy                =
+gtp                  =
+gtpc                 =
+gtpu                 =
+esp                  =
+geneve               =
+vxlan-gpe            =
+arp_eth_ipv4         =
+ipv6_ext             =
+ipv6_frag_ext        =
+icmp6                =
+icmp6_nd_ns          =
+icmp6_nd_na          =
+icmp6_nd_opt         =
+icmp6_nd_opt_sla_eth =
+icmp6_nd_opt_tla_eth =
+meta                 =
+gtp_psc              =
+pppoes               =
+pppoed               =
+pppoe_proto_id       =
+nsh                  =
+igmp                 =
+ah                   =
+higig2               =
+l2tpv3oip            =
+pfcp                 =
+ecpri                =
+
+[rte_flow actions]
+end                  =
+void                 =
+passthru             =
+jump                 =
+mark                 =
+flag                 =
+queue                =
+drop                 =
+count                =
+rss                  =
+pf                   =
+vf                   =
+phy_port             =
+port_id              =
+meter                =
+security             =
+of_set_mpls_ttl      =
+of_dec_mpls_ttl      =
+of_set_nw_ttl        =
+of_dec_nw_ttl        =
+of_copy_ttl_out      =
+of_copy_ttl_in       =
+of_pop_vlan          =
+of_push_vlan         =
+of_set_vlan_vid      =
+of_set_vlan_pcp      =
+of_pop_mpls          =
+of_push_mpls         =
+vxlan_encap          =
+vxlan_decap          =
+nvgre_encap          =
+nvgre_decap          =
+raw_encap            =
+raw_decap            =
+set_ipv4_src         =
+set_ipv4_dst         =
+set_ipv6_src         =
+set_ipv6_dst         =
+set_tp_src           =
+set_tp_dst           =
+mac_swap             =
+dec_ttl              =
+set_ttl              =
+set_mac_src          =
+set_mac_dst          =
+inc_tcp_seq          =
+dec_tcp_seq          =
+inc_tcp_ack          =
+dec_tcp_ack          =
+set_tag              =
+set_meta             =
+set_ipv4_dscp        =
+set_ipv6_dscp        =
+age                  =
+sample               =
+modify_field         =
diff --git a/doc/guides/nics/features/mlx4.ini b/doc/guides/nics/features/mlx4.ini
index ebb9ccf..5e352f5 100644
--- a/doc/guides/nics/features/mlx4.ini
+++ b/doc/guides/nics/features/mlx4.ini
@@ -38,3 +38,18 @@ Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+vlan                 = Y
+ipv4                 = Y
+ipv6                 = Y
+udp                  = Y
+tcp                  = Y
+
+[rte_flow actions]
+end                  = Y
+void                 = Y
+queue                = Y
+drop                 = Y
+rss                  = Y
diff --git a/doc/guides/nics/features/mlx5.ini b/doc/guides/nics/features/mlx5.ini
index ddd131d..fcf934b 100644
--- a/doc/guides/nics/features/mlx5.ini
+++ b/doc/guides/nics/features/mlx5.ini
@@ -52,3 +52,69 @@ Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+vlan                 = Y
+ipv4                 = Y
+ipv6                 = Y
+icmp                 = Y
+udp                  = Y
+tcp                  = Y
+vxlan                = Y
+nvgre                = Y
+mpls                 = Y
+gre                  = Y
+gre_key              = Y
+gtp                  = Y
+geneve               = Y
+vxlan-gpe            = Y
+ipv6_ext             = Y
+ipv6_frag_ext        = Y
+icmp6                = Y
+meta                 = Y
+gtp_psc              = Y
+ecpri                = Y
+
+[rte_flow actions]
+end                  = Y
+void                 = Y
+jump                 = Y
+mark                 = Y
+flag                 = Y
+queue                = Y
+drop                 = Y
+count                = Y
+rss                  = S
+port_id              = Y
+meter                = Y
+of_pop_vlan          = Y
+of_push_vlan         = Y
+of_set_vlan_vid      = Y
+of_set_vlan_pcp      = Y
+vxlan_encap          = Y
+vxlan_decap          = Y
+raw_encap            = Y
+raw_decap            = Y
+set_ipv4_src         = Y
+set_ipv4_dst         = Y
+set_ipv6_src         = Y
+set_ipv6_dst         = Y
+set_tp_src           = Y
+set_tp_dst           = Y
+dec_ttl              = Y
+set_ttl              = Y
+set_mac_src          = Y
+set_mac_dst          = Y
+inc_tcp_seq          = Y
+dec_tcp_seq          = Y
+inc_tcp_ack          = Y
+dec_tcp_ack          = Y
+set_tag              = Y
+set_meta             = Y
+set_ipv4_dscp        = Y
+set_ipv6_dscp        = Y
+age                  = S
+sample               = Y
+modify_field         = Y
+
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index 20cd52b..86b5718 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -28,7 +28,17 @@ More details about features can be found in :doc:`features`.
 
 .. include:: overview_table.txt
 
+.. include:: rte_flow_items_table.txt
+
+.. include:: rte_flow_actions_table.txt
+
 .. Note::
 
    Features marked with "P" are partially supported. Refer to the appropriate
    NIC guide in the following sections for details.
+
+.. Note::
+
+   rte_flow action that is marked with "S" means it is supported as shared
+   and non-shared action.
+
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and actions support
  2021-02-07 10:46   ` [dpdk-dev] [PATCH v3] " Asaf Penso
@ 2021-02-07 10:52     ` Asaf Penso
  2021-02-08 12:58       ` Thomas Monjalon
  2021-02-16 13:13       ` Ferruh Yigit
  0 siblings, 2 replies; 32+ messages in thread
From: Asaf Penso @ 2021-02-07 10:52 UTC (permalink / raw)
  To: dev; +Cc: thomas

In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists all
supported features.
It has a single line for "Flow API" that refers to rte_flow support.
rte_flow is composed of many items and actions that are not expressed in
this single line.

The following new tables are suggested:
1. rte_flow items
2. rte_flow actions

Also, since each table needs a new section in the pmd ini
file that might not be relevant for all pmds, the print
error message for missing section in conf.py is removed.

Signed-off-by: Asaf Penso <asafp@nvidia.com>
---
v4:
update commit message and remove the note about shared table

v3:
remove the shared action table
update the note for "S" notation

v2: 
update commit message
add .txt to .gitignore
---
 .gitignore                           |   2 +
 doc/guides/conf.py                   |  18 +++---
 doc/guides/nics/features/default.ini | 104 +++++++++++++++++++++++++++++++++++
 doc/guides/nics/features/mlx4.ini    |  15 +++++
 doc/guides/nics/features/mlx5.ini    |  66 ++++++++++++++++++++++
 doc/guides/nics/overview.rst         |  10 ++++
 6 files changed, 208 insertions(+), 7 deletions(-)

diff --git a/.gitignore b/.gitignore
index f73d93c..b19c071 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 aceeb62..4eea58f 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -217,14 +217,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.
@@ -380,6 +374,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 features availability in networking drivers',
+                            'Items')
+    table_file = dirname(__file__) + '/nics/rte_flow_actions_table.txt'
+    generate_overview_table(table_file, 3,
+                            'rte_flow actions',
+                            'rte_flow actions features availability in networking drivers',
+                            'Actions')
     table_file = dirname(__file__) + '/cryptodevs/overview_feature_table.txt'
     generate_overview_table(table_file, 1,
                             'Features',
diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini
index 8046bd1..968aee3 100644
--- a/doc/guides/nics/features/default.ini
+++ b/doc/guides/nics/features/default.ini
@@ -77,3 +77,107 @@ x86-64               =
 Usage doc            =
 Design doc           =
 Perf doc             =
+
+[rte_flow items]
+any                  =
+raw                  =
+eth                  =
+vlan                 =
+ipv4                 =
+ipv6                 =
+icmp                 =
+udp                  =
+tcp                  =
+sctp                 =
+vxlan                =
+e_tag                =
+nvgre                =
+mpls                 =
+gre                  =
+gre_key              =
+fuzzy                =
+gtp                  =
+gtpc                 =
+gtpu                 =
+esp                  =
+geneve               =
+vxlan-gpe            =
+arp_eth_ipv4         =
+ipv6_ext             =
+ipv6_frag_ext        =
+icmp6                =
+icmp6_nd_ns          =
+icmp6_nd_na          =
+icmp6_nd_opt         =
+icmp6_nd_opt_sla_eth =
+icmp6_nd_opt_tla_eth =
+meta                 =
+gtp_psc              =
+pppoes               =
+pppoed               =
+pppoe_proto_id       =
+nsh                  =
+igmp                 =
+ah                   =
+higig2               =
+l2tpv3oip            =
+pfcp                 =
+ecpri                =
+
+[rte_flow actions]
+end                  =
+void                 =
+passthru             =
+jump                 =
+mark                 =
+flag                 =
+queue                =
+drop                 =
+count                =
+rss                  =
+pf                   =
+vf                   =
+phy_port             =
+port_id              =
+meter                =
+security             =
+of_set_mpls_ttl      =
+of_dec_mpls_ttl      =
+of_set_nw_ttl        =
+of_dec_nw_ttl        =
+of_copy_ttl_out      =
+of_copy_ttl_in       =
+of_pop_vlan          =
+of_push_vlan         =
+of_set_vlan_vid      =
+of_set_vlan_pcp      =
+of_pop_mpls          =
+of_push_mpls         =
+vxlan_encap          =
+vxlan_decap          =
+nvgre_encap          =
+nvgre_decap          =
+raw_encap            =
+raw_decap            =
+set_ipv4_src         =
+set_ipv4_dst         =
+set_ipv6_src         =
+set_ipv6_dst         =
+set_tp_src           =
+set_tp_dst           =
+mac_swap             =
+dec_ttl              =
+set_ttl              =
+set_mac_src          =
+set_mac_dst          =
+inc_tcp_seq          =
+dec_tcp_seq          =
+inc_tcp_ack          =
+dec_tcp_ack          =
+set_tag              =
+set_meta             =
+set_ipv4_dscp        =
+set_ipv6_dscp        =
+age                  =
+sample               =
+modify_field         =
diff --git a/doc/guides/nics/features/mlx4.ini b/doc/guides/nics/features/mlx4.ini
index ebb9ccf..5e352f5 100644
--- a/doc/guides/nics/features/mlx4.ini
+++ b/doc/guides/nics/features/mlx4.ini
@@ -38,3 +38,18 @@ Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+vlan                 = Y
+ipv4                 = Y
+ipv6                 = Y
+udp                  = Y
+tcp                  = Y
+
+[rte_flow actions]
+end                  = Y
+void                 = Y
+queue                = Y
+drop                 = Y
+rss                  = Y
diff --git a/doc/guides/nics/features/mlx5.ini b/doc/guides/nics/features/mlx5.ini
index ddd131d..fcf934b 100644
--- a/doc/guides/nics/features/mlx5.ini
+++ b/doc/guides/nics/features/mlx5.ini
@@ -52,3 +52,69 @@ Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+eth                  = Y
+vlan                 = Y
+ipv4                 = Y
+ipv6                 = Y
+icmp                 = Y
+udp                  = Y
+tcp                  = Y
+vxlan                = Y
+nvgre                = Y
+mpls                 = Y
+gre                  = Y
+gre_key              = Y
+gtp                  = Y
+geneve               = Y
+vxlan-gpe            = Y
+ipv6_ext             = Y
+ipv6_frag_ext        = Y
+icmp6                = Y
+meta                 = Y
+gtp_psc              = Y
+ecpri                = Y
+
+[rte_flow actions]
+end                  = Y
+void                 = Y
+jump                 = Y
+mark                 = Y
+flag                 = Y
+queue                = Y
+drop                 = Y
+count                = Y
+rss                  = S
+port_id              = Y
+meter                = Y
+of_pop_vlan          = Y
+of_push_vlan         = Y
+of_set_vlan_vid      = Y
+of_set_vlan_pcp      = Y
+vxlan_encap          = Y
+vxlan_decap          = Y
+raw_encap            = Y
+raw_decap            = Y
+set_ipv4_src         = Y
+set_ipv4_dst         = Y
+set_ipv6_src         = Y
+set_ipv6_dst         = Y
+set_tp_src           = Y
+set_tp_dst           = Y
+dec_ttl              = Y
+set_ttl              = Y
+set_mac_src          = Y
+set_mac_dst          = Y
+inc_tcp_seq          = Y
+dec_tcp_seq          = Y
+inc_tcp_ack          = Y
+dec_tcp_ack          = Y
+set_tag              = Y
+set_meta             = Y
+set_ipv4_dscp        = Y
+set_ipv6_dscp        = Y
+age                  = S
+sample               = Y
+modify_field         = Y
+
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index 20cd52b..86b5718 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -28,7 +28,17 @@ More details about features can be found in :doc:`features`.
 
 .. include:: overview_table.txt
 
+.. include:: rte_flow_items_table.txt
+
+.. include:: rte_flow_actions_table.txt
+
 .. Note::
 
    Features marked with "P" are partially supported. Refer to the appropriate
    NIC guide in the following sections for details.
+
+.. Note::
+
+   rte_flow action that is marked with "S" means it is supported as shared
+   and non-shared action.
+
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and actions support
  2021-02-07 10:52     ` [dpdk-dev] [PATCH v4] " Asaf Penso
@ 2021-02-08 12:58       ` Thomas Monjalon
  2021-02-16 13:13       ` Ferruh Yigit
  1 sibling, 0 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-02-08 12:58 UTC (permalink / raw)
  To: Asaf Penso
  Cc: dev, ferruh.yigit, david.marchand, jerinj, ajit.khaparde,
	andrew.rybchenko

07/02/2021 11:52, Asaf Penso:
> In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists all
> supported features.
> It has a single line for "Flow API" that refers to rte_flow support.
> rte_flow is composed of many items and actions that are not expressed in
> this single line.

One comment to add to this commit message if you agree:
When the new rte_flow tables are filled for all relevant PMDs,
we could remove the row "Flow API" from the main table.

> The following new tables are suggested:
> 1. rte_flow items
> 2. rte_flow actions
[...]
> +vlan                 =
> +ipv4                 =
> +ipv6                 =
> +icmp                 =
> +udp                  =
> +tcp                  =
> +sctp                 =
> +vxlan                =
[...]
> +set_ipv4_src         =
> +set_ipv4_dst         =

In items and actions above (and others) I understand the names are taken
directly from the enums or structs.
However I could imagine a slight different natural naming,
using some upper cases and spaces. Example:
	set_ipv4_dst -> set IPv4 dst
I see pros and cons. What are other opinions?



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and actions support
  2021-02-07 10:52     ` [dpdk-dev] [PATCH v4] " Asaf Penso
  2021-02-08 12:58       ` Thomas Monjalon
@ 2021-02-16 13:13       ` Ferruh Yigit
  2021-02-17  5:57         ` Asaf Penso
  1 sibling, 1 reply; 32+ messages in thread
From: Ferruh Yigit @ 2021-02-16 13:13 UTC (permalink / raw)
  To: Asaf Penso, dev; +Cc: thomas, Andrew Rybchenko

On 2/7/2021 10:52 AM, Asaf Penso wrote:
> In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists all
> supported features.
> It has a single line for "Flow API" that refers to rte_flow support.
> rte_flow is composed of many items and actions that are not expressed in
> this single line.
> 
> The following new tables are suggested:
> 1. rte_flow items
> 2. rte_flow actions
> 

Hi Asaf,

I understand the intention, but I am not sure about this.

The Flow API does not provide a capability or feature list in the API level, by 
design, because it is very hard to do it correct, but this patch tries to do it 
in the documentation level.

This will be missing lots of details, the flow items and actions documented as 
supported may and may not be supported based on the details.

It will be very hard to read this table (when it becomes full), also will be 
very hard to maintain.


Let me start with a question, who do you think will be your consumer?
Who will benefit from this table and how?


> Also, since each table needs a new section in the pmd ini
> file that might not be relevant for all pmds, the print
> error message for missing section in conf.py is removed.
> 
> Signed-off-by: Asaf Penso <asafp@nvidia.com>

<...>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and actions support
  2021-02-16 13:13       ` Ferruh Yigit
@ 2021-02-17  5:57         ` Asaf Penso
  2021-02-17 10:37           ` Ferruh Yigit
  0 siblings, 1 reply; 32+ messages in thread
From: Asaf Penso @ 2021-02-17  5:57 UTC (permalink / raw)
  To: Ferruh Yigit, dev
  Cc: NBU-Contact-Thomas Monjalon, Gal Cohen (ProdM), Andrew Rybchenko

Hello Ferruh, thanks for the reply and please see my below comments.

Regards,
Asaf Penso

>-----Original Message-----
>From: Ferruh Yigit <ferruh.yigit@intel.com>
>Sent: Tuesday, February 16, 2021 3:14 PM
>To: Asaf Penso <asafp@nvidia.com>; dev@dpdk.org
>Cc: NBU-Contact-Thomas Monjalon <thomas@monjalon.net>; Andrew
>Rybchenko <arybchenko@solarflare.com>
>Subject: Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and
>actions support
>
>On 2/7/2021 10:52 AM, Asaf Penso wrote:
>> In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists all
>> supported features.
>> It has a single line for "Flow API" that refers to rte_flow support.
>> rte_flow is composed of many items and actions that are not expressed
>> in this single line.
>>
>> The following new tables are suggested:
>> 1. rte_flow items
>> 2. rte_flow actions
>>
>
>Hi Asaf,
>
>I understand the intention, but I am not sure about this.
>
>The Flow API does not provide a capability or feature list in the API level, by
>design, because it is very hard to do it correct, but this patch tries to do it in the
>documentation level.
>
>This will be missing lots of details, the flow items and actions documented as
>supported may and may not be supported based on the details.
>

Which missing details are you referring to? All flow items and all actions are listed.

>It will be very hard to read this table (when it becomes full), also will be very hard
>to maintain.

As part of any documentation change in rte_flow the developer would also need to update this table.
Why would it be very hard to maintain?
>
>
>Let me start with a question, who do you think will be your consumer?
>Who will benefit from this table and how?

We get a lot of questions from users regarding rte_flow support and we do not have a single place with proper documentation.
I can ask the same about the overall feature table, right? There is a value to document the support.

>
>
>> Also, since each table needs a new section in the pmd ini
>> file that might not be relevant for all pmds, the print
>> error message for missing section in conf.py is removed.
>>
>> Signed-off-by: Asaf Penso <asafp@nvidia.com>
>
><...>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and actions support
  2021-02-17  5:57         ` Asaf Penso
@ 2021-02-17 10:37           ` Ferruh Yigit
  2021-02-17 10:49             ` Thomas Monjalon
  0 siblings, 1 reply; 32+ messages in thread
From: Ferruh Yigit @ 2021-02-17 10:37 UTC (permalink / raw)
  To: Asaf Penso, dev
  Cc: NBU-Contact-Thomas Monjalon, Gal Cohen (ProdM), Andrew Rybchenko

On 2/17/2021 5:57 AM, Asaf Penso wrote:
> Hello Ferruh, thanks for the reply and please see my below comments.
> 
> Regards,
> Asaf Penso
> 
>> -----Original Message-----
>> From: Ferruh Yigit <ferruh.yigit@intel.com>
>> Sent: Tuesday, February 16, 2021 3:14 PM
>> To: Asaf Penso <asafp@nvidia.com>; dev@dpdk.org
>> Cc: NBU-Contact-Thomas Monjalon <thomas@monjalon.net>; Andrew
>> Rybchenko <arybchenko@solarflare.com>
>> Subject: Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and
>> actions support
>>
>> On 2/7/2021 10:52 AM, Asaf Penso wrote:
>>> In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists all
>>> supported features.
>>> It has a single line for "Flow API" that refers to rte_flow support.
>>> rte_flow is composed of many items and actions that are not expressed
>>> in this single line.
>>>
>>> The following new tables are suggested:
>>> 1. rte_flow items
>>> 2. rte_flow actions
>>>
>>
>> Hi Asaf,
>>
>> I understand the intention, but I am not sure about this.
>>
>> The Flow API does not provide a capability or feature list in the API level, by
>> design, because it is very hard to do it correct, but this patch tries to do it in the
>> documentation level.
>>
>> This will be missing lots of details, the flow items and actions documented as
>> supported may and may not be supported based on the details.
>>
> 
> Which missing details are you referring to? All flow items and all actions are listed.
> 

Patterns are complex, any rule can be valid or invalid based on provided pattern 
values (details), also any rule can be valid or invalid based on previous rules 
or configuration.

In practice this information is much more useful if it is provided by API, but 
we are not able to do it because of its complex nature, it should be same level 
of complexity to provide this information by documentation.

>> It will be very hard to read this table (when it becomes full), also will be very hard
>> to maintain.
> 
> As part of any documentation change in rte_flow the developer would also need to update this table.
> Why would it be very hard to maintain?
 >

Ahh, that sound so simple when you say like this :) In practice even keeping 
feature list requiring lots of effort, developers are 
missing/neglecting/ignoring updating documentation when updating the code.

And for this case is partially correct table a useful information? If this is 
not completely correct people won't rely on it and it will become just useless.
So this feature should come with an automated way to detect if a rule supported 
but not documented, or even better this table should be generated from code 
automatically.

>>
>>
>> Let me start with a question, who do you think will be your consumer?
>> Who will benefit from this table and how?
> 
> We get a lot of questions from users regarding rte_flow support and we do not have a single place with proper documentation.
> I can ask the same about the overall feature table, right? There is a value to document the support.
> 

Let's discuss the feature table separately, I think that is a valid question.

For the rte_flow, who is asking questions? End user, or application developer? 
So is this intended to be a marketing documentation or technical documentation?

And what is the nature of the questions, if it is related to the rte_flow, there 
is already a proper documentation for it:
https://doc.dpdk.org/guides/prog_guide/rte_flow.html

If this question is if any specific rule supported by a specific PMD, right now 
only valid way to say this that I am aware of is, run 'rte_flow_validate()' and see.
Not sure if we can document this properly.

>>
>>
>>> Also, since each table needs a new section in the pmd ini
>>> file that might not be relevant for all pmds, the print
>>> error message for missing section in conf.py is removed.
>>>
>>> Signed-off-by: Asaf Penso <asafp@nvidia.com>
>>
>> <...>


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and actions support
  2021-02-17 10:37           ` Ferruh Yigit
@ 2021-02-17 10:49             ` Thomas Monjalon
  2021-02-18 16:12               ` Asaf Penso
  2021-02-18 17:58               ` Ajit Khaparde
  0 siblings, 2 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-02-17 10:49 UTC (permalink / raw)
  To: Ferruh Yigit
  Cc: Asaf Penso, dev, Gal Cohen (ProdM),
	Andrew Rybchenko, ajit.khaparde, jerinj

17/02/2021 11:37, Ferruh Yigit:
> On 2/17/2021 5:57 AM, Asaf Penso wrote:
> > From: Ferruh Yigit <ferruh.yigit@intel.com>
> >> On 2/7/2021 10:52 AM, Asaf Penso wrote:
> >>> In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists all
> >>> supported features.
> >>> It has a single line for "Flow API" that refers to rte_flow support.
> >>> rte_flow is composed of many items and actions that are not expressed
> >>> in this single line.
> >>>
> >>> The following new tables are suggested:
> >>> 1. rte_flow items
> >>> 2. rte_flow actions
> >>>
> >>
> >> Hi Asaf,
> >>
> >> I understand the intention, but I am not sure about this.
> >>
> >> The Flow API does not provide a capability or feature list in the API level, by
> >> design, because it is very hard to do it correct, but this patch tries to do it in the
> >> documentation level.
> >>
> >> This will be missing lots of details, the flow items and actions documented as
> >> supported may and may not be supported based on the details.
> >>
> > 
> > Which missing details are you referring to? All flow items and all actions are listed.
> > 
> 
> Patterns are complex, any rule can be valid or invalid based on provided pattern 
> values (details), also any rule can be valid or invalid based on previous rules 
> or configuration.
> 
> In practice this information is much more useful if it is provided by API, but 
> we are not able to do it because of its complex nature, it should be same level 
> of complexity to provide this information by documentation.
> 
> >> It will be very hard to read this table (when it becomes full), also will be very hard
> >> to maintain.
> > 
> > As part of any documentation change in rte_flow the developer would also need to update this table.
> > Why would it be very hard to maintain?
>  >
> 
> Ahh, that sound so simple when you say like this :) In practice even keeping 
> feature list requiring lots of effort, developers are 
> missing/neglecting/ignoring updating documentation when updating the code.
> 
> And for this case is partially correct table a useful information? If this is 
> not completely correct people won't rely on it and it will become just useless.
> So this feature should come with an automated way to detect if a rule supported 
> but not documented, or even better this table should be generated from code 
> automatically.
> 
> >>
> >>
> >> Let me start with a question, who do you think will be your consumer?
> >> Who will benefit from this table and how?
> > 
> > We get a lot of questions from users regarding rte_flow support and we do not have a single place with proper documentation.
> > I can ask the same about the overall feature table, right? There is a value to document the support.
> > 
> 
> Let's discuss the feature table separately, I think that is a valid question.
> 
> For the rte_flow, who is asking questions? End user, or application developer? 
> So is this intended to be a marketing documentation or technical documentation?
> 
> And what is the nature of the questions, if it is related to the rte_flow, there 
> is already a proper documentation for it:
> https://doc.dpdk.org/guides/prog_guide/rte_flow.html
> 
> If this question is if any specific rule supported by a specific PMD, right now 
> only valid way to say this that I am aware of is, run 'rte_flow_validate()' and see.
> Not sure if we can document this properly.

I think in general we are missing a big disclaimer
on top of this overview page:
	Each feature may have some hardware limitations.

Then there is a need, both for application developers and end-users,
to know which feature can be supported by a PMD,
or which PMD can support a feature.
Yes there are complex limitations with hardware offloads in general.
Yes it would be nice to report some tested capabilities with a CI.
But it does not mean we should not try to document it in my opinion.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and actions support
  2021-02-17 10:49             ` Thomas Monjalon
@ 2021-02-18 16:12               ` Asaf Penso
  2021-02-18 17:58               ` Ajit Khaparde
  1 sibling, 0 replies; 32+ messages in thread
From: Asaf Penso @ 2021-02-18 16:12 UTC (permalink / raw)
  To: NBU-Contact-Thomas Monjalon, Ferruh Yigit
  Cc: dev, Gal Cohen (ProdM), Andrew Rybchenko, ajit.khaparde, jerinj

>-----Original Message-----
>From: Thomas Monjalon <thomas@monjalon.net>
>Sent: Wednesday, February 17, 2021 12:49 PM
>To: Ferruh Yigit <ferruh.yigit@intel.com>
>Cc: Asaf Penso <asafp@nvidia.com>; dev@dpdk.org; Gal Cohen (ProdM)
><galco@nvidia.com>; Andrew Rybchenko <arybchenko@solarflare.com>;
>ajit.khaparde@broadcom.com; jerinj@marvell.com
>Subject: Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and
>actions support
>
>17/02/2021 11:37, Ferruh Yigit:
>> On 2/17/2021 5:57 AM, Asaf Penso wrote:
>> > From: Ferruh Yigit <ferruh.yigit@intel.com>
>> >> On 2/7/2021 10:52 AM, Asaf Penso wrote:
>> >>> In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists
>> >>> all supported features.
>> >>> It has a single line for "Flow API" that refers to rte_flow support.
>> >>> rte_flow is composed of many items and actions that are not
>> >>> expressed in this single line.
>> >>>
>> >>> The following new tables are suggested:
>> >>> 1. rte_flow items
>> >>> 2. rte_flow actions
>> >>>
>> >>
>> >> Hi Asaf,
>> >>
>> >> I understand the intention, but I am not sure about this.
>> >>
>> >> The Flow API does not provide a capability or feature list in the
>> >> API level, by design, because it is very hard to do it correct, but
>> >> this patch tries to do it in the documentation level.
>> >>
>> >> This will be missing lots of details, the flow items and actions
>> >> documented as supported may and may not be supported based on the
>details.
>> >>
>> >
>> > Which missing details are you referring to? All flow items and all actions are
>listed.
>> >
>>
>> Patterns are complex, any rule can be valid or invalid based on
>> provided pattern values (details), also any rule can be valid or
>> invalid based on previous rules or configuration.
>>
>> In practice this information is much more useful if it is provided by
>> API, but we are not able to do it because of its complex nature, it
>> should be same level of complexity to provide this information by
>documentation.
>>
>> >> It will be very hard to read this table (when it becomes full),
>> >> also will be very hard to maintain.
>> >
>> > As part of any documentation change in rte_flow the developer would
>also need to update this table.
>> > Why would it be very hard to maintain?
>>  >
>>
>> Ahh, that sound so simple when you say like this :) In practice even
>> keeping feature list requiring lots of effort, developers are
>> missing/neglecting/ignoring updating documentation when updating the
>code.
>>
>> And for this case is partially correct table a useful information? If
>> this is not completely correct people won't rely on it and it will become just
>useless.
>> So this feature should come with an automated way to detect if a rule
>> supported but not documented, or even better this table should be
>> generated from code automatically.
>>
>> >>
>> >>
>> >> Let me start with a question, who do you think will be your consumer?
>> >> Who will benefit from this table and how?
>> >
>> > We get a lot of questions from users regarding rte_flow support and we
>do not have a single place with proper documentation.
>> > I can ask the same about the overall feature table, right? There is a value
>to document the support.
>> >
>>
>> Let's discuss the feature table separately, I think that is a valid question.
>>
>> For the rte_flow, who is asking questions? End user, or application
>developer?
>> So is this intended to be a marketing documentation or technical
>documentation?
>>
>> And what is the nature of the questions, if it is related to the
>> rte_flow, there is already a proper documentation for it:
>> https://doc.dpdk.org/guides/prog_guide/rte_flow.html
>>
>> If this question is if any specific rule supported by a specific PMD,
>> right now only valid way to say this that I am aware of is, run
>'rte_flow_validate()' and see.
>> Not sure if we can document this properly.
>
>I think in general we are missing a big disclaimer on top of this overview page:
>	Each feature may have some hardware limitations.

Also, the combination of several items and actions is not feasible to be documented. Ferruh, I believe you are referring to this case.
I wanted to have some documentation of the supported items/actions.
The questions come from all users, I didn't bisect to see if they are application engineers or developers or users.
For sure, they can take testpmd and confirm, but before even going there and if they want to evaluate DPDK, they prefer to see a place with this documentation.
We cannot document everything, I know. Also, believe me, that I know how challenging is to track the relevancy of document 😊
Still, it's better to have this, than not at all.

>
>Then there is a need, both for application developers and end-users, to know
>which feature can be supported by a PMD, or which PMD can support a
>feature.
>Yes there are complex limitations with hardware offloads in general.
>Yes it would be nice to report some tested capabilities with a CI.
>But it does not mean we should not try to document it in my opinion.
>


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and actions support
  2021-02-17 10:49             ` Thomas Monjalon
  2021-02-18 16:12               ` Asaf Penso
@ 2021-02-18 17:58               ` Ajit Khaparde
  2021-02-18 18:45                 ` Ferruh Yigit
  1 sibling, 1 reply; 32+ messages in thread
From: Ajit Khaparde @ 2021-02-18 17:58 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Ferruh Yigit, Asaf Penso, dev, Gal Cohen (ProdM),
	Andrew Rybchenko, Jerin Jacob Kollanukkaran

[-- Attachment #1: Type: text/plain, Size: 4386 bytes --]

On Wed, Feb 17, 2021 at 2:49 AM Thomas Monjalon <thomas@monjalon.net> wrote:

> 17/02/2021 11:37, Ferruh Yigit:
> > On 2/17/2021 5:57 AM, Asaf Penso wrote:
> > > From: Ferruh Yigit <ferruh.yigit@intel.com>
> > >> On 2/7/2021 10:52 AM, Asaf Penso wrote:
> > >>> In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists
> all
> > >>> supported features.
> > >>> It has a single line for "Flow API" that refers to rte_flow support.
> > >>> rte_flow is composed of many items and actions that are not expressed
> > >>> in this single line.
> > >>>
> > >>> The following new tables are suggested:
> > >>> 1. rte_flow items
> > >>> 2. rte_flow actions
> > >>>
> > >>
> > >> Hi Asaf,
> > >>
> > >> I understand the intention, but I am not sure about this.
> > >>
> > >> The Flow API does not provide a capability or feature list in the API
> level, by
> > >> design, because it is very hard to do it correct, but this patch
> tries to do it in the
> > >> documentation level.
> > >>
> > >> This will be missing lots of details, the flow items and actions
> documented as
> > >> supported may and may not be supported based on the details.
> > >>
> > >
> > > Which missing details are you referring to? All flow items and all
> actions are listed.
> > >
> >
> > Patterns are complex, any rule can be valid or invalid based on provided
> pattern
> > values (details), also any rule can be valid or invalid based on
> previous rules
> > or configuration.
> >
> > In practice this information is much more useful if it is provided by
> API, but
> > we are not able to do it because of its complex nature, it should be
> same level
> > of complexity to provide this information by documentation.
> >
> > >> It will be very hard to read this table (when it becomes full), also
> will be very hard
> > >> to maintain.
> > >
> > > As part of any documentation change in rte_flow the developer would
> also need to update this table.
> > > Why would it be very hard to maintain?
> >  >
> >
> > Ahh, that sound so simple when you say like this :) In practice even
> keeping
> > feature list requiring lots of effort, developers are
> > missing/neglecting/ignoring updating documentation when updating the
> code.
> >
> > And for this case is partially correct table a useful information? If
> this is
> > not completely correct people won't rely on it and it will become just
> useless.
> > So this feature should come with an automated way to detect if a rule
> supported
> > but not documented, or even better this table should be generated from
> code
> > automatically.
> >
> > >>
> > >>
> > >> Let me start with a question, who do you think will be your consumer?
> > >> Who will benefit from this table and how?
> > >
> > > We get a lot of questions from users regarding rte_flow support and we
> do not have a single place with proper documentation.
> > > I can ask the same about the overall feature table, right? There is a
> value to document the support.
> > >
> >
> > Let's discuss the feature table separately, I think that is a valid
> question.
> >
> > For the rte_flow, who is asking questions? End user, or application
> developer?
> > So is this intended to be a marketing documentation or technical
> documentation?
> >
> > And what is the nature of the questions, if it is related to the
> rte_flow, there
> > is already a proper documentation for it:
> > https://doc.dpdk.org/guides/prog_guide/rte_flow.html
> >
> > If this question is if any specific rule supported by a specific PMD,
> right now
> > only valid way to say this that I am aware of is, run
> 'rte_flow_validate()' and see.
> > Not sure if we can document this properly.
>
> I think in general we are missing a big disclaimer
> on top of this overview page:
>         Each feature may have some hardware limitations.
>
> Then there is a need, both for application developers and end-users,
> to know which feature can be supported by a PMD,
> or which PMD can support a feature.
> Yes there are complex limitations with hardware offloads in general.
> Yes it would be nice to report some tested capabilities with a CI.
> But it does not mean we should not try to document it in my opinion.
>
+1 to all of these.
A document like this will help give an idea on what is possible with the
PMD without looking at the code. Beyond that, the user can check with
the vendor/developer for specific details if needed.

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and actions support
  2021-02-18 17:58               ` Ajit Khaparde
@ 2021-02-18 18:45                 ` Ferruh Yigit
  2021-04-06 15:07                   ` Thomas Monjalon
  0 siblings, 1 reply; 32+ messages in thread
From: Ferruh Yigit @ 2021-02-18 18:45 UTC (permalink / raw)
  To: Ajit Khaparde, Thomas Monjalon, Asaf Penso
  Cc: dev, Gal Cohen (ProdM), Andrew Rybchenko, Jerin Jacob Kollanukkaran

On 2/18/2021 5:58 PM, Ajit Khaparde wrote:
> On Wed, Feb 17, 2021 at 2:49 AM Thomas Monjalon <thomas@monjalon.net> wrote:
> 
>> 17/02/2021 11:37, Ferruh Yigit:
>>> On 2/17/2021 5:57 AM, Asaf Penso wrote:
>>>> From: Ferruh Yigit <ferruh.yigit@intel.com>
>>>>> On 2/7/2021 10:52 AM, Asaf Penso wrote:
>>>>>> In http://doc.dpdk.org/guides/nics/overview.html, table 1.1 lists
>> all
>>>>>> supported features.
>>>>>> It has a single line for "Flow API" that refers to rte_flow support.
>>>>>> rte_flow is composed of many items and actions that are not expressed
>>>>>> in this single line.
>>>>>>
>>>>>> The following new tables are suggested:
>>>>>> 1. rte_flow items
>>>>>> 2. rte_flow actions
>>>>>>
>>>>>
>>>>> Hi Asaf,
>>>>>
>>>>> I understand the intention, but I am not sure about this.
>>>>>
>>>>> The Flow API does not provide a capability or feature list in the API
>> level, by
>>>>> design, because it is very hard to do it correct, but this patch
>> tries to do it in the
>>>>> documentation level.
>>>>>
>>>>> This will be missing lots of details, the flow items and actions
>> documented as
>>>>> supported may and may not be supported based on the details.
>>>>>
>>>>
>>>> Which missing details are you referring to? All flow items and all
>> actions are listed.
>>>>
>>>
>>> Patterns are complex, any rule can be valid or invalid based on provided
>> pattern
>>> values (details), also any rule can be valid or invalid based on
>> previous rules
>>> or configuration.
>>>
>>> In practice this information is much more useful if it is provided by
>> API, but
>>> we are not able to do it because of its complex nature, it should be
>> same level
>>> of complexity to provide this information by documentation.
>>>
>>>>> It will be very hard to read this table (when it becomes full), also
>> will be very hard
>>>>> to maintain.
>>>>
>>>> As part of any documentation change in rte_flow the developer would
>> also need to update this table.
>>>> Why would it be very hard to maintain?
>>>   >
>>>
>>> Ahh, that sound so simple when you say like this :) In practice even
>> keeping
>>> feature list requiring lots of effort, developers are
>>> missing/neglecting/ignoring updating documentation when updating the
>> code.
>>>
>>> And for this case is partially correct table a useful information? If
>> this is
>>> not completely correct people won't rely on it and it will become just
>> useless.
>>> So this feature should come with an automated way to detect if a rule
>> supported
>>> but not documented, or even better this table should be generated from
>> code
>>> automatically.
>>>
>>>>>
>>>>>
>>>>> Let me start with a question, who do you think will be your consumer?
>>>>> Who will benefit from this table and how?
>>>>
>>>> We get a lot of questions from users regarding rte_flow support and we
>> do not have a single place with proper documentation.
>>>> I can ask the same about the overall feature table, right? There is a
>> value to document the support.
>>>>
>>>
>>> Let's discuss the feature table separately, I think that is a valid
>> question.
>>>
>>> For the rte_flow, who is asking questions? End user, or application
>> developer?
>>> So is this intended to be a marketing documentation or technical
>> documentation?
>>>
>>> And what is the nature of the questions, if it is related to the
>> rte_flow, there
>>> is already a proper documentation for it:
>>> https://doc.dpdk.org/guides/prog_guide/rte_flow.html
>>>
>>> If this question is if any specific rule supported by a specific PMD,
>> right now
>>> only valid way to say this that I am aware of is, run
>> 'rte_flow_validate()' and see.
>>> Not sure if we can document this properly.
>>
>> I think in general we are missing a big disclaimer
>> on top of this overview page:
>>          Each feature may have some hardware limitations.
>>
>> Then there is a need, both for application developers and end-users,
>> to know which feature can be supported by a PMD,
>> or which PMD can support a feature.
>> Yes there are complex limitations with hardware offloads in general.
>> Yes it would be nice to report some tested capabilities with a CI.
>> But it does not mean we should not try to document it in my opinion.
>>
> +1 to all of these.
> A document like this will help give an idea on what is possible with the
> PMD without looking at the code. Beyond that, the user can check with
> the vendor/developer for specific details if needed.
> 

I am still feeling we are trying to workaround flow API design constrain with 
documentation, although we know it won't be complete.
And not really clear who will benefit from this in what way.

Anyway, as mentioned above I am concerned the maintenance cost, can this series 
investigate:
1) A way to automatically fill the table from source code
2) A way to check if a patch is adding a new flow support but not documenting it

Also can you please propose a maintainer for it (can be documented in MAINTAINER 
file) who will be responsible of the correctness of the table, which means:
- Will verify a claimed support by a PMD is really supported
- All flow API features are documented for a PMD
- Changes in the code are reflected to the documentation
- Trace PMD maintainers for missing data

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v4] doc: add new tables for rte flow items and actions support
  2021-02-18 18:45                 ` Ferruh Yigit
@ 2021-04-06 15:07                   ` Thomas Monjalon
  0 siblings, 0 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-04-06 15:07 UTC (permalink / raw)
  To: Asaf Penso, Ferruh Yigit
  Cc: Ajit Khaparde, dev, Gal Cohen (ProdM),
	Andrew Rybchenko, Jerin Jacob Kollanukkaran, rasland, qi.z.zhang

18/02/2021 19:45, Ferruh Yigit:
> On 2/18/2021 5:58 PM, Ajit Khaparde wrote:
> > On Wed, Feb 17, 2021 at 2:49 AM Thomas Monjalon <thomas@monjalon.net> wrote:
> >> 17/02/2021 11:37, Ferruh Yigit:
> >>> On 2/17/2021 5:57 AM, Asaf Penso wrote:
> >>>> From: Ferruh Yigit <ferruh.yigit@intel.com>
> >>>>> On 2/7/2021 10:52 AM, Asaf Penso wrote:
> >>>>>> The following new tables are suggested:
> >>>>>> 1. rte_flow items
> >>>>>> 2. rte_flow actions
> >>>>>
> >>>>> Hi Asaf,
> >>>>>
> >>>>> I understand the intention, but I am not sure about this.
> >>>>>
> >>>>> The Flow API does not provide a capability or feature list in the API
> >>>>> level, by
> >>>>> design, because it is very hard to do it correct, but this patch
> >>>>> tries to do it in the
> >>>>> documentation level.
> >>>>>
> >>>>> This will be missing lots of details, the flow items and actions
> >>>>> documented as
> >>>>> supported may and may not be supported based on the details.
> >>>>>
> >>>>
> >>>> Which missing details are you referring to? All flow items and all
> >>>> actions are listed.
> >>>
> >>> Patterns are complex, any rule can be valid or invalid based on provided
> >>> pattern
> >>> values (details), also any rule can be valid or invalid based on
> >>> previous rules
> >>> or configuration.
> >>>
> >>> In practice this information is much more useful if it is provided by
> >>> API, but
> >>> we are not able to do it because of its complex nature, it should be
> >>> same level
> >>> of complexity to provide this information by documentation.
> >>>
> >>>>> It will be very hard to read this table (when it becomes full), also
> >>>>> will be very hard to maintain.
> >>>>
> >>>> As part of any documentation change in rte_flow the developer would
> >>>> also need to update this table.
> >>>> Why would it be very hard to maintain?
> >>>
> >>> Ahh, that sound so simple when you say like this :) In practice even
> >>> keeping
> >>> feature list requiring lots of effort, developers are
> >>> missing/neglecting/ignoring updating documentation when updating the
> >>> code.
> >>>
> >>> And for this case is partially correct table a useful information? If
> >>> this is
> >>> not completely correct people won't rely on it and it will become just
> >>> useless.
> >>> So this feature should come with an automated way to detect if a rule
> >>> supported
> >>> but not documented, or even better this table should be generated from
> >>> code automatically.
> >>>
> >>>>> Let me start with a question, who do you think will be your consumer?
> >>>>> Who will benefit from this table and how?
> >>>>
> >>>> We get a lot of questions from users regarding rte_flow support and we
> >>>> do not have a single place with proper documentation.
> >>>> I can ask the same about the overall feature table, right? There is a
> >>>> value to document the support.
> >>>>
> >>>
> >>> Let's discuss the feature table separately, I think that is a valid
> >>> question.
> >>>
> >>> For the rte_flow, who is asking questions? End user, or application
> >>> developer?
> >>> So is this intended to be a marketing documentation or technical
> >>> documentation?
> >>>
> >>> And what is the nature of the questions, if it is related to the
> >>> rte_flow, there
> >>> is already a proper documentation for it:
> >>> https://doc.dpdk.org/guides/prog_guide/rte_flow.html
> >>>
> >>> If this question is if any specific rule supported by a specific PMD,
> >>> right now
> >>> only valid way to say this that I am aware of is, run
> >>> 'rte_flow_validate()' and see.
> >>> Not sure if we can document this properly.
> >>
> >> I think in general we are missing a big disclaimer
> >> on top of this overview page:
> >>          Each feature may have some hardware limitations.
> >>
> >> Then there is a need, both for application developers and end-users,
> >> to know which feature can be supported by a PMD,
> >> or which PMD can support a feature.
> >> Yes there are complex limitations with hardware offloads in general.
> >> Yes it would be nice to report some tested capabilities with a CI.
> >> But it does not mean we should not try to document it in my opinion.
> >>
> > +1 to all of these.
> > A document like this will help give an idea on what is possible with the
> > PMD without looking at the code. Beyond that, the user can check with
> > the vendor/developer for specific details if needed.
> 
> I am still feeling we are trying to workaround flow API design constrain with 
> documentation, although we know it won't be complete.

I disagree, it is not a workaround.
API is for application to work with any hardware.
Doc is for users to imagine which feature they could use
in which config (HW, DPDK version, etc).

> And not really clear who will benefit from this in what way.

End users will be the main users of this doc,
but it will help a lot more people to track what is implemented.

> Anyway, as mentioned above I am concerned the maintenance cost, can this series 
> investigate:
> 1) A way to automatically fill the table from source code

I am looking at it.

> 2) A way to check if a patch is adding a new flow support but not documenting it

Looking into it as well.

> Also can you please propose a maintainer for it (can be documented in MAINTAINER 
> file) who will be responsible of the correctness of the table, which means:
> - Will verify a claimed support by a PMD is really supported
> - All flow API features are documented for a PMD
> - Changes in the code are reflected to the documentation
> - Trace PMD maintainers for missing data

I'm not sure we should have a maintainer for this single file.
With the help of checkpatch script, the responsibility can be shared
in the next-net trees, isn't it?





^ permalink raw reply	[flat|nested] 32+ messages in thread

* [dpdk-dev] [PATCH v5 0/3] rte_flow doc matrix
  2021-02-04 17:05 [dpdk-dev] [PATCH] doc: add new tables for rte flow items and actions support Asaf Penso
  2021-02-04 22:09 ` Thomas Monjalon
  2021-02-07  9:27 ` [dpdk-dev] [PATCH v2] " Asaf Penso
@ 2021-04-07 22:33 ` Thomas Monjalon
  2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 1/3] doc: rename sfc features file Thomas Monjalon
                     ` (2 more replies)
  2021-05-18 13:28 ` [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix Thomas Monjalon
  3 siblings, 3 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-04-07 22:33 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, andrew.rybchenko

This is an improvement of the rte_flow documentation:
it makes possible to quickly read which items and actions
may be accepted by the drivers in a DPDK release.

A script is provided for CI to make sure the matrix is updated,
while allowing some manual tuning.

Thomas Monjalon (3):
  doc: rename sfc features file
  doc: add flow API features tables
  devtools: check flow API doc tables

 .gitignore                                    |   2 +
 devtools/check-doc-vs-code.sh                 |  79 ++++++++++++
 devtools/parse-flow-support.sh                |  76 ++++++++++++
 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 +-
 .../nics/features/{sfc_efx.ini => sfc.ini}    |  35 +++++-
 doc/guides/nics/features/tap.ini              |  15 ++-
 doc/guides/nics/features/txgbe.ini            |  24 +++-
 doc/guides/nics/overview.rst                  |   8 ++
 34 files changed, 799 insertions(+), 44 deletions(-)
 create mode 100755 devtools/check-doc-vs-code.sh
 create mode 100755 devtools/parse-flow-support.sh
 rename doc/guides/nics/features/{sfc_efx.ini => sfc.ini} (57%)

-- 
2.31.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [dpdk-dev] [PATCH v5 1/3] doc: rename sfc features file
  2021-04-07 22:33 ` [dpdk-dev] [PATCH v5 0/3] rte_flow doc matrix Thomas Monjalon
@ 2021-04-07 22:33   ` Thomas Monjalon
  2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 2/3] doc: add flow API features tables Thomas Monjalon
  2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 3/3] devtools: check flow API doc tables Thomas Monjalon
  2 siblings, 0 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-04-07 22:33 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, andrew.rybchenko

The driver directory is drivers/net/sfc
but the features file was doc/guides/nics/features/sfc_efx.ini.

sfc_efx.ini is renamed sfc.ini to match the driver directory name.
It will help automatic checks of this file.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 doc/guides/nics/features/{sfc_efx.ini => sfc.ini} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename doc/guides/nics/features/{sfc_efx.ini => sfc.ini} (100%)

diff --git a/doc/guides/nics/features/sfc_efx.ini b/doc/guides/nics/features/sfc.ini
similarity index 100%
rename from doc/guides/nics/features/sfc_efx.ini
rename to doc/guides/nics/features/sfc.ini
-- 
2.31.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [dpdk-dev] [PATCH v5 2/3] doc: add flow API features tables
  2021-04-07 22:33 ` [dpdk-dev] [PATCH v5 0/3] rte_flow doc matrix Thomas Monjalon
  2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 1/3] doc: rename sfc features file Thomas Monjalon
@ 2021-04-07 22:33   ` Thomas Monjalon
  2021-04-08  8:45     ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
  2021-05-14 10:42     ` [dpdk-dev] " Ferruh Yigit
  2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 3/3] devtools: check flow API doc tables Thomas Monjalon
  2 siblings, 2 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-04-07 22:33 UTC (permalink / raw)
  To: dev
  Cc: ferruh.yigit, andrew.rybchenko, Asaf Penso, Ajit Khaparde,
	Somnath Kotur, Rahul Lakkireddy, Hemant Agrawal, Sachin Saxena,
	Jeff Guo, Haiyue Wang, John Daley, Hyong Youb Kim, Gaetan Rivet,
	Ziyang Xuan, Xiaoyun Wang, Guoyang Zhou, Min Hu (Connor),
	Yisen Zhuang, Lijun Ou, Beilei Xing, Jingjing Wu, Qiming Yang,
	Qi Zhang, Rosen Xu, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Liron Himi, Jerin Jacob, Nithin Dabilpuram,
	Kiran Kumar K, Rasesh Mody, Devendra Singh Rawat, Igor Russkikh,
	Keith Wiles, Jiawen Wu, Jian Wang

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(-)

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


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [dpdk-dev] [PATCH v5 3/3] devtools: check flow API doc tables
  2021-04-07 22:33 ` [dpdk-dev] [PATCH v5 0/3] rte_flow doc matrix Thomas Monjalon
  2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 1/3] doc: rename sfc features file Thomas Monjalon
  2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 2/3] doc: add flow API features tables Thomas Monjalon
@ 2021-04-07 22:33   ` Thomas Monjalon
  2021-05-13 18:40     ` Ferruh Yigit
  2021-05-14 10:51     ` Ferruh Yigit
  2 siblings, 2 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-04-07 22:33 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, andrew.rybchenko

The script check-doc-vs-code.sh may be used to add
some automatic checks of the doc.

If run without any argument, a complete check is done.
The optional argument is a git history reference point
to check faster only what has changed since this commit.

In this commit, the only check is for rte_flow tables,
achieved through the script parse-flow-support.sh.
If run without a .ini reference, it prints rte_flow tables.
Note: detected features are marked with the value Y,
while the real .ini file could have special values like I.
The script allow parsing exceptions (exclude or include),
like for bnxt code which lists unsupported items and actions.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 devtools/check-doc-vs-code.sh  | 79 ++++++++++++++++++++++++++++++++++
 devtools/parse-flow-support.sh | 76 ++++++++++++++++++++++++++++++++
 2 files changed, 155 insertions(+)
 create mode 100755 devtools/check-doc-vs-code.sh
 create mode 100755 devtools/parse-flow-support.sh

diff --git a/devtools/check-doc-vs-code.sh b/devtools/check-doc-vs-code.sh
new file mode 100755
index 0000000000..6e53d66899
--- /dev/null
+++ b/devtools/check-doc-vs-code.sh
@@ -0,0 +1,79 @@
+#! /bin/sh -e
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright 2021 Mellanox Technologies, Ltd
+
+# Check whether doc & code are in sync.
+# Optional argument: check only what changed since a commit.
+trusted_commit=$1 # example: origin/main
+
+selfdir=$(dirname $(readlink -f $0))
+rootdir=$(readlink -f $selfdir/..)
+
+result=0
+
+# speed up by ignoring Unicode details
+export LC_COLLATE=C
+
+changed_files()
+{
+	[ -n "$files" ] ||
+		files=$(git diff-tree --name-only -r $trusted_commit..)
+	echo "$files"
+}
+
+has_code_change() # <pattern>
+{
+	test -n "$(git log --format='%h' -S"$1" $trusted_commit..)"
+}
+
+has_file_change() # <pattern>
+{
+	changed_files | grep -q "$1"
+}
+
+changed_net_drivers()
+{
+	net_paths='drivers/net/|doc/guides/nics/features/'
+	[ -n "$drivers" ] ||
+		drivers=$(changed_files |
+			sed -rn "s,^($net_paths)([^./]*).*,\2,p")
+	echo "$drivers"
+}
+
+all_net_drivers()
+{
+	find $rootdir/drivers/net -mindepth 1 -maxdepth 1 -type d |
+	sed 's,.*/,,' |
+	sort
+}
+
+check_rte_flow() # <driver>
+{
+	code=$rootdir/drivers/net/$1
+	doc=$rootdir/doc/guides/nics/features/$1.ini
+	[ -d $code ] || return 0
+	[ -f $doc ] || return 0
+	report=$($selfdir/parse-flow-support.sh $code $doc)
+	if [ -n "$report" ]; then
+		echo "rte_flow doc out of sync for $1"
+		echo "$report" | sed 's,^,\t,'
+		result=$(($result + 1))
+	fi
+}
+
+if [ -z "$trusted_commit" ]; then
+	# check all
+	for driver in $(all_net_drivers); do
+		check_rte_flow $driver
+	done
+	exit $result
+fi
+
+# find what changed and check
+if has_code_change 'RTE_FLOW_.*_TYPE_' ||
+		has_file_change 'doc/guides/nics/features'; then
+	for driver in $(changed_net_drivers); do
+		check_rte_flow $driver
+	done
+fi
+exit $result
diff --git a/devtools/parse-flow-support.sh b/devtools/parse-flow-support.sh
new file mode 100755
index 0000000000..b397e81b62
--- /dev/null
+++ b/devtools/parse-flow-support.sh
@@ -0,0 +1,76 @@
+#! /bin/sh -e
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright 2021 Mellanox Technologies, Ltd
+
+# Parse rte_flow support of a driver directory,
+# and optionally show difference with a doc file in .ini format.
+
+dir=$1 # drivers/net/foo
+ref=$2 # doc/guides/nics/features/foo.ini
+
+if [ -z "$dir" ]; then
+	echo "directory argument is required" >&2
+	exit 1
+fi
+
+# sorting order
+export LC_COLLATE=C
+
+# exclude exceptions
+exclude() # <pattern>
+{
+	case $(basename $dir) in
+		bnxt)
+			filter=$(sed -n "/$1/{N;/TYPE_NOT_SUPPORTED/P;}" \
+				$dir/tf_ulp/ulp_template_db{,_tbl}.c |
+				grep -wo "$1[[:alnum:]_]*" | sort -u |
+				tr '\n' '|' | sed 's,.$,\n,')
+			grep -vE "$filter";;
+		*) cat
+	esac
+}
+
+# include exceptions
+include() # <pattern>
+{
+	case $(basename $dir) in
+	esac
+}
+
+# generate INI section
+list() # <title> <pattern>
+{
+	echo "[$1]"
+	git grep -who "$2[[:alnum:]_]*" $dir |
+	(exclude $2; include $2) | sort -u |
+	awk 'sub(/'$2'/, "") {printf "%-20s = Y\n", tolower($0)}'
+}
+
+rte_flow_support() # <category>
+{
+	title="rte_flow $1s"
+	pattern=$(echo "RTE_FLOW_$1_TYPE_" | awk '{print toupper($0)}')
+	list "$title" "$pattern" | grep -vwE 'void|end'
+}
+
+if [ -z "$ref" ]; then
+	rte_flow_support item
+	echo
+	rte_flow_support action
+	exit 0
+fi
+
+rte_flow_compare() # <category>
+{
+	section="rte_flow $1s]"
+	{
+		rte_flow_support $1
+		sed -n "/$section/,/]/p" "$ref" | sed '/^$/d'
+	} |
+	sed '/]/d' | # ignore section title
+	sed 's, *=.*,,' | # ignore value (better in doc than generated one)
+	sort | uniq -u # show differences
+}
+
+rte_flow_compare item
+rte_flow_compare action
-- 
2.31.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [EXT] [PATCH v5 2/3] doc: add flow API features tables
  2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 2/3] doc: add flow API features tables Thomas Monjalon
@ 2021-04-08  8:45     ` Kiran Kumar Kokkilagadda
  2021-05-14 10:42     ` [dpdk-dev] " Ferruh Yigit
  1 sibling, 0 replies; 32+ messages in thread
From: Kiran Kumar Kokkilagadda @ 2021-04-08  8:45 UTC (permalink / raw)
  To: Thomas Monjalon, dev
  Cc: ferruh.yigit, andrew.rybchenko, Asaf Penso, Ajit Khaparde,
	Somnath Kotur, Rahul Lakkireddy, Hemant Agrawal, Sachin Saxena,
	Jeff Guo, Haiyue Wang, John Daley, Hyong Youb Kim, Gaetan Rivet,
	Ziyang Xuan, Xiaoyun Wang, Guoyang Zhou, Min Hu (Connor),
	Yisen Zhuang, Lijun Ou, Beilei Xing, Jingjing Wu, Qiming Yang,
	Qi Zhang, Rosen Xu, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Liron Himi, Jerin Jacob Kollanukkaran,
	Nithin Kumar Dabilpuram, Rasesh Mody, Devendra Singh Rawat,
	Igor Russkikh, Keith Wiles, Jiawen Wu, Jian Wang



> -----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


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v5 3/3] devtools: check flow API doc tables
  2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 3/3] devtools: check flow API doc tables Thomas Monjalon
@ 2021-05-13 18:40     ` Ferruh Yigit
  2021-05-18 12:46       ` Thomas Monjalon
  2021-05-14 10:51     ` Ferruh Yigit
  1 sibling, 1 reply; 32+ messages in thread
From: Ferruh Yigit @ 2021-05-13 18:40 UTC (permalink / raw)
  To: Thomas Monjalon, dev; +Cc: andrew.rybchenko

On 4/7/2021 11:33 PM, Thomas Monjalon wrote:
> The script check-doc-vs-code.sh may be used to add
> some automatic checks of the doc.
> 
> If run without any argument, a complete check is done.
> The optional argument is a git history reference point
> to check faster only what has changed since this commit.
> 
> In this commit, the only check is for rte_flow tables,
> achieved through the script parse-flow-support.sh.
> If run without a .ini reference, it prints rte_flow tables.
> Note: detected features are marked with the value Y,
> while the real .ini file could have special values like I.
> The script allow parsing exceptions (exclude or include),
> like for bnxt code which lists unsupported items and actions.
> 

Thanks for the scripts.

> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
>  devtools/check-doc-vs-code.sh  | 79 ++++++++++++++++++++++++++++++++++
>  devtools/parse-flow-support.sh | 76 ++++++++++++++++++++++++++++++++
>  2 files changed, 155 insertions(+)
>  create mode 100755 devtools/check-doc-vs-code.sh
>  create mode 100755 devtools/parse-flow-support.sh
> 
> diff --git a/devtools/check-doc-vs-code.sh b/devtools/check-doc-vs-code.sh
> new file mode 100755
> index 0000000000..6e53d66899
> --- /dev/null
> +++ b/devtools/check-doc-vs-code.sh
> @@ -0,0 +1,79 @@
> +#! /bin/sh -e
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright 2021 Mellanox Technologies, Ltd
> +
> +# Check whether doc & code are in sync.
> +# Optional argument: check only what changed since a commit.
> +trusted_commit=$1 # example: origin/main
> +
> +selfdir=$(dirname $(readlink -f $0))
> +rootdir=$(readlink -f $selfdir/..)
> +
> +result=0
> +
> +# speed up by ignoring Unicode details
> +export LC_COLLATE=C
> +
> +changed_files()
> +{
> +	[ -n "$files" ] ||
> +		files=$(git diff-tree --name-only -r $trusted_commit..)
> +	echo "$files"
> +}
> +
> +has_code_change() # <pattern>
> +{
> +	test -n "$(git log --format='%h' -S"$1" $trusted_commit..)"
> +}
> +
> +has_file_change() # <pattern>
> +{
> +	changed_files | grep -q "$1"
> +}
> +
> +changed_net_drivers()
> +{
> +	net_paths='drivers/net/|doc/guides/nics/features/'
> +	[ -n "$drivers" ] ||
> +		drivers=$(changed_files |
> +			sed -rn "s,^($net_paths)([^./]*).*,\2,p")
> +	echo "$drivers"
> +}

I will not reviewed in details yet, but first observation,
when 'trusted_commit' argument is used, the drivers list has many duplicated
entries which makes the output redundant and makes script take too much time.
Getting only unique list may help on it.

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v5 2/3] doc: add flow API features tables
  2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 2/3] doc: add flow API features tables Thomas Monjalon
  2021-04-08  8:45     ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
@ 2021-05-14 10:42     ` Ferruh Yigit
  2021-05-14 11:52       ` Thomas Monjalon
  1 sibling, 1 reply; 32+ messages in thread
From: Ferruh Yigit @ 2021-05-14 10:42 UTC (permalink / raw)
  To: Thomas Monjalon, dev
  Cc: andrew.rybchenko, Asaf Penso, Ajit Khaparde, Somnath Kotur,
	Rahul Lakkireddy, Hemant Agrawal, Sachin Saxena, Jeff Guo,
	Haiyue Wang, John Daley, Hyong Youb Kim, Gaetan Rivet,
	Ziyang Xuan, Xiaoyun Wang, Guoyang Zhou, Min Hu (Connor),
	Yisen Zhuang, Lijun Ou, Beilei Xing, Jingjing Wu, Qiming Yang,
	Qi Zhang, Rosen Xu, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Liron Himi, Jerin Jacob, Nithin Dabilpuram,
	Kiran Kumar K, Rasesh Mody, Devendra Singh Rawat, Igor Russkikh,
	Keith Wiles, Jiawen Wu, Jian Wang

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.

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v5 3/3] devtools: check flow API doc tables
  2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 3/3] devtools: check flow API doc tables Thomas Monjalon
  2021-05-13 18:40     ` Ferruh Yigit
@ 2021-05-14 10:51     ` Ferruh Yigit
  2021-05-18 10:33       ` Thomas Monjalon
  1 sibling, 1 reply; 32+ messages in thread
From: Ferruh Yigit @ 2021-05-14 10:51 UTC (permalink / raw)
  To: Thomas Monjalon, dev; +Cc: andrew.rybchenko, Asaf Penso

On 4/7/2021 11:33 PM, Thomas Monjalon wrote:
> The script check-doc-vs-code.sh may be used to add
> some automatic checks of the doc.
> 
> If run without any argument, a complete check is done.
> The optional argument is a git history reference point
> to check faster only what has changed since this commit.
> 
> In this commit, the only check is for rte_flow tables,
> achieved through the script parse-flow-support.sh.
> If run without a .ini reference, it prints rte_flow tables.
> Note: detected features are marked with the value Y,
> while the real .ini file could have special values like I.
> The script allow parsing exceptions (exclude or include),
> like for bnxt code which lists unsupported items and actions.
>

Overall great to be able to generate and check document against code, also good
to have this by relatively small/simple scripts, thanks for the work.
This helps to remove the maintenance concerns I had.

> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
>  devtools/check-doc-vs-code.sh  | 79 ++++++++++++++++++++++++++++++++++
>  devtools/parse-flow-support.sh | 76 ++++++++++++++++++++++++++++++++

Will there be automated checks as part of the build system? Presumably in
'developer_mode'?


btw, scripts points out some new features not documented in .ini files, those
are the recently added ones, patch requires a rebase on top of latest code.

> +rte_flow_support() # <category>
> +{
> +	title="rte_flow $1s"
> +	pattern=$(echo "RTE_FLOW_$1_TYPE_" | awk '{print toupper($0)}')
> +	list "$title" "$pattern" | grep -vwE 'void|end'

Should 'RTE_FLOW_ITEM_TYPE_ANY' also excluded, does it have benefit to have it
as listed?

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v5 2/3] doc: add flow API features tables
  2021-05-14 10:42     ` [dpdk-dev] " Ferruh Yigit
@ 2021-05-14 11:52       ` Thomas Monjalon
  0 siblings, 0 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-05-14 11:52 UTC (permalink / raw)
  To: Ferruh Yigit
  Cc: dev, andrew.rybchenko, Asaf Penso, Ajit Khaparde, Somnath Kotur,
	Rahul Lakkireddy, Hemant Agrawal, Sachin Saxena, Jeff Guo,
	Haiyue Wang, John Daley, Hyong Youb Kim, Gaetan Rivet,
	Ziyang Xuan, Xiaoyun Wang, Guoyang Zhou, Min Hu (Connor),
	Yisen Zhuang, Lijun Ou, Beilei Xing, Jingjing Wu, Qiming Yang,
	Qi Zhang, Rosen Xu, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Liron Himi, Jerin Jacob, Nithin Dabilpuram,
	Kiran Kumar K, Rasesh Mody, Devendra Singh Rawat, Igor Russkikh,
	Keith Wiles, Jiawen Wu, Jian Wang

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.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v5 3/3] devtools: check flow API doc tables
  2021-05-14 10:51     ` Ferruh Yigit
@ 2021-05-18 10:33       ` Thomas Monjalon
  0 siblings, 0 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-05-18 10:33 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dev, andrew.rybchenko, Asaf Penso, bruce.richardson

14/05/2021 12:51, Ferruh Yigit:
> On 4/7/2021 11:33 PM, Thomas Monjalon wrote:
> > The script check-doc-vs-code.sh may be used to add
> > some automatic checks of the doc.
> > 
> > If run without any argument, a complete check is done.
> > The optional argument is a git history reference point
> > to check faster only what has changed since this commit.
> > 
> > In this commit, the only check is for rte_flow tables,
> > achieved through the script parse-flow-support.sh.
> > If run without a .ini reference, it prints rte_flow tables.
> > Note: detected features are marked with the value Y,
> > while the real .ini file could have special values like I.
> > The script allow parsing exceptions (exclude or include),
> > like for bnxt code which lists unsupported items and actions.
> >
> 
> Overall great to be able to generate and check document against code, also good
> to have this by relatively small/simple scripts, thanks for the work.
> This helps to remove the maintenance concerns I had.
> 
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> > ---
> >  devtools/check-doc-vs-code.sh  | 79 ++++++++++++++++++++++++++++++++++
> >  devtools/parse-flow-support.sh | 76 ++++++++++++++++++++++++++++++++
> 
> Will there be automated checks as part of the build system? Presumably in
> 'developer_mode'?

I think we should discuss what could enter in developer mode or not.
I'm afraid it will become a mini-CI and will make compilation longer for everybody.

> btw, scripts points out some new features not documented in .ini files, those
> are the recently added ones, patch requires a rebase on top of latest code.

OK I am rebasing.

> > +rte_flow_support() # <category>
> > +{
> > +	title="rte_flow $1s"
> > +	pattern=$(echo "RTE_FLOW_$1_TYPE_" | awk '{print toupper($0)}')
> > +	list "$title" "$pattern" | grep -vwE 'void|end'
> 
> Should 'RTE_FLOW_ITEM_TYPE_ANY' also excluded, does it have benefit to have it
> as listed?

This item may be unsupported by some PMDs,
so I think we need to report it.




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v5 3/3] devtools: check flow API doc tables
  2021-05-13 18:40     ` Ferruh Yigit
@ 2021-05-18 12:46       ` Thomas Monjalon
  0 siblings, 0 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-05-18 12:46 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dev, andrew.rybchenko

13/05/2021 20:40, Ferruh Yigit:
> On 4/7/2021 11:33 PM, Thomas Monjalon wrote:
> > +changed_files()
> > +{
> > +	[ -n "$files" ] ||
> > +		files=$(git diff-tree --name-only -r $trusted_commit..)
> > +	echo "$files"
> > +}
> > +
> > +has_code_change() # <pattern>
> > +{
> > +	test -n "$(git log --format='%h' -S"$1" $trusted_commit..)"
> > +}
> > +
> > +has_file_change() # <pattern>
> > +{
> > +	changed_files | grep -q "$1"
> > +}
> > +
> > +changed_net_drivers()
> > +{
> > +	net_paths='drivers/net/|doc/guides/nics/features/'
> > +	[ -n "$drivers" ] ||
> > +		drivers=$(changed_files |
> > +			sed -rn "s,^($net_paths)([^./]*).*,\2,p")
> > +	echo "$drivers"
> > +}
> 
> I will not reviewed in details yet, but first observation,
> when 'trusted_commit' argument is used, the drivers list has many duplicated
> entries which makes the output redundant and makes script take too much time.
> Getting only unique list may help on it.

Yes good catch, thanks.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix
  2021-02-04 17:05 [dpdk-dev] [PATCH] doc: add new tables for rte flow items and actions support Asaf Penso
                   ` (2 preceding siblings ...)
  2021-04-07 22:33 ` [dpdk-dev] [PATCH v5 0/3] rte_flow doc matrix Thomas Monjalon
@ 2021-05-18 13:28 ` Thomas Monjalon
  2021-05-18 13:28   ` [dpdk-dev] [PATCH v6 1/3] doc: rename sfc features file Thomas Monjalon
                     ` (3 more replies)
  3 siblings, 4 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-05-18 13:28 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, andrew.rybchenko

This is an improvement of the rte_flow documentation:
it makes possible to quickly read which items and actions
may be accepted by the drivers in a DPDK release.

A script is provided for CI to make sure the matrix is updated,
while allowing some manual tuning.

Thomas Monjalon (3):
  doc: rename sfc features file
  doc: add flow API features tables
  devtools: check flow API doc tables

 .gitignore                                    |   2 +
 devtools/check-doc-vs-code.sh                 |  84 +++++++++++++
 devtools/parse-flow-support.sh                |  78 ++++++++++++
 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          | 118 +++++++++++++++++-
 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             |  30 ++++-
 doc/guides/nics/features/ice.ini              |  34 ++++-
 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             |  73 ++++++++++-
 doc/guides/nics/features/mvpp2.ini            |  14 +++
 doc/guides/nics/features/octeontx2.ini        |  43 ++++++-
 doc/guides/nics/features/octeontx2_vec.ini    |   1 -
 doc/guides/nics/features/octeontx2_vf.ini     |   1 -
 doc/guides/nics/features/qede.ini             |  11 +-
 .../nics/features/{sfc_efx.ini => sfc.ini}    |  35 +++++-
 doc/guides/nics/features/tap.ini              |  15 ++-
 doc/guides/nics/features/txgbe.ini            |  24 +++-
 doc/guides/nics/overview.rst                  |   8 ++
 34 files changed, 813 insertions(+), 44 deletions(-)
 create mode 100755 devtools/check-doc-vs-code.sh
 create mode 100755 devtools/parse-flow-support.sh
 rename doc/guides/nics/features/{sfc_efx.ini => sfc.ini} (57%)

-- 
2.31.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [dpdk-dev] [PATCH v6 1/3] doc: rename sfc features file
  2021-05-18 13:28 ` [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix Thomas Monjalon
@ 2021-05-18 13:28   ` Thomas Monjalon
  2021-05-18 13:28   ` [dpdk-dev] [PATCH v6 2/3] doc: add flow API features tables Thomas Monjalon
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-05-18 13:28 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, andrew.rybchenko

The driver directory is drivers/net/sfc
but the features file was doc/guides/nics/features/sfc_efx.ini.

sfc_efx.ini is renamed sfc.ini to match the driver directory name.
It will help automatic checks of this file.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 doc/guides/nics/features/{sfc_efx.ini => sfc.ini} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename doc/guides/nics/features/{sfc_efx.ini => sfc.ini} (100%)

diff --git a/doc/guides/nics/features/sfc_efx.ini b/doc/guides/nics/features/sfc.ini
similarity index 100%
rename from doc/guides/nics/features/sfc_efx.ini
rename to doc/guides/nics/features/sfc.ini
-- 
2.31.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [dpdk-dev] [PATCH v6 2/3] doc: add flow API features tables
  2021-05-18 13:28 ` [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix Thomas Monjalon
  2021-05-18 13:28   ` [dpdk-dev] [PATCH v6 1/3] doc: rename sfc features file Thomas Monjalon
@ 2021-05-18 13:28   ` Thomas Monjalon
  2021-05-18 13:28   ` [dpdk-dev] [PATCH v6 3/3] devtools: check flow API doc tables Thomas Monjalon
  2021-05-18 16:54   ` [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix Thomas Monjalon
  3 siblings, 0 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-05-18 13:28 UTC (permalink / raw)
  To: dev
  Cc: ferruh.yigit, andrew.rybchenko, Asaf Penso,
	Kiran Kumar Kokkilagadda, Ajit Khaparde, Somnath Kotur,
	Rahul Lakkireddy, Hemant Agrawal, Sachin Saxena, Haiyue Wang,
	John Daley, Hyong Youb Kim, Gaetan Rivet, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Min Hu (Connor),
	Yisen Zhuang, Lijun Ou, Beilei Xing, Jingjing Wu, Qiming Yang,
	Qi Zhang, Rosen Xu, Matan Azrad, Shahaf Shuler,
	Viacheslav Ovsiienko, Liron Himi, Jerin Jacob, Nithin Dabilpuram,
	Rasesh Mody, Devendra Singh Rawat, Igor Russkikh, Keith Wiles,
	Jiawen Wu, Jian Wang

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>
---
v6 changes:
	- rebase/update
	- remove deprecated shared action
---
 .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       | 118 ++++++++++++++++++++-
 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          |  30 +++++-
 doc/guides/nics/features/ice.ini           |  34 +++++-
 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          |  73 ++++++++++++-
 doc/guides/nics/features/mvpp2.ini         |  14 +++
 doc/guides/nics/features/octeontx2.ini     |  43 +++++++-
 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, 651 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 894d81ca75..67d2dd62c7 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -176,14 +176,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.
@@ -339,6 +333,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..51f0361a80 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,120 @@ x86-64               =
 Usage doc            =
 Design doc           =
 Perf doc             =
+
+[rte_flow items]
+ah                   =
+any                  =
+arp_eth_ipv4         =
+conntrack            =
+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                 =
+integrity            =
+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                  =
+conntrack            =
+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              =
+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 0f89c60694..cf8d53d0d6 100644
--- a/doc/guides/nics/features/hns3.ini
+++ b/doc/guides/nics/features/hns3.ini
@@ -28,7 +28,6 @@ RSS reta update      = Y
 DCB                  = Y
 VLAN filter          = Y
 Flow control         = Y
-Flow API             = Y
 CRC offload          = Y
 VLAN offload         = Y
 FEC                  = Y
@@ -50,3 +49,25 @@ Timestamp offload    = 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 92383506c3..7da994c2dc 100644
--- a/doc/guides/nics/features/hns3_vf.ini
+++ b/doc/guides/nics/features/hns3_vf.ini
@@ -25,7 +25,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..7af62d4ce7 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,32 @@ 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
+ipv6_frag_ext        = 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 2b93872b1c..1b9228c678 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
@@ -43,3 +42,36 @@ Linux                = Y
 Windows              = 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
+ipv6_frag_ext        = 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..3b82ce41fd 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,75 @@ Power8               = Y
 x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
+
+[rte_flow items]
+conntrack            = Y
+ecpri                = Y
+eth                  = Y
+geneve               = Y
+geneve_opt           = Y
+gre                  = Y
+gre_key              = Y
+gtp                  = Y
+gtp_psc              = Y
+icmp                 = Y
+icmp6                = Y
+integrity            = 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
+conntrack            = I
+count                = I
+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
+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..fa32bc7890 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,45 @@ 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
+port_id              = 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


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [dpdk-dev] [PATCH v6 3/3] devtools: check flow API doc tables
  2021-05-18 13:28 ` [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix Thomas Monjalon
  2021-05-18 13:28   ` [dpdk-dev] [PATCH v6 1/3] doc: rename sfc features file Thomas Monjalon
  2021-05-18 13:28   ` [dpdk-dev] [PATCH v6 2/3] doc: add flow API features tables Thomas Monjalon
@ 2021-05-18 13:28   ` Thomas Monjalon
  2021-05-18 16:54   ` [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix Thomas Monjalon
  3 siblings, 0 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-05-18 13:28 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, andrew.rybchenko

The script check-doc-vs-code.sh may be used to add
some automatic checks of the doc.

If run without any argument, a complete check is done.
The optional argument is a git history reference point
to check faster only what has changed since this commit.

In this commit, the only check is for rte_flow tables,
achieved through the script parse-flow-support.sh.
If run without a .ini reference, it prints rte_flow tables.
Note: detected features are marked with the value Y,
while the real .ini file could have special values like I.
The script allow parsing exceptions (exclude or include),
like for bnxt code which lists unsupported items and actions.

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
v6 changes:
	- fix redundant drivers
	- ignore indirect action
	- prefix misses with a category (item or action)
---
 devtools/check-doc-vs-code.sh  | 84 ++++++++++++++++++++++++++++++++++
 devtools/parse-flow-support.sh | 78 +++++++++++++++++++++++++++++++
 2 files changed, 162 insertions(+)
 create mode 100755 devtools/check-doc-vs-code.sh
 create mode 100755 devtools/parse-flow-support.sh

diff --git a/devtools/check-doc-vs-code.sh b/devtools/check-doc-vs-code.sh
new file mode 100755
index 0000000000..c58c239c87
--- /dev/null
+++ b/devtools/check-doc-vs-code.sh
@@ -0,0 +1,84 @@
+#! /bin/sh -e
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright 2021 Mellanox Technologies, Ltd
+
+# Check whether doc & code are in sync.
+# Optional argument: check only what changed since a commit.
+trusted_commit=$1 # example: origin/main
+
+selfdir=$(dirname $(readlink -f $0))
+rootdir=$(readlink -f $selfdir/..)
+
+# speed up by ignoring Unicode details
+export LC_COLLATE=C
+
+result=0
+error() # <message>
+{
+	echo "$*"
+	result=$(($result + 1))
+}
+
+changed_files()
+{
+	[ -n "$files" ] ||
+		files=$(git diff-tree --name-only -r $trusted_commit..)
+	echo "$files"
+}
+
+has_code_change() # <pattern>
+{
+	test -n "$(git log --format='%h' -S"$1" $trusted_commit..)"
+}
+
+has_file_change() # <pattern>
+{
+	changed_files | grep -q "$1"
+}
+
+changed_net_drivers()
+{
+	net_paths='drivers/net/|doc/guides/nics/features/'
+	[ -n "$drivers" ] ||
+		drivers=$(changed_files |
+			sed -rn "s,^($net_paths)([^./]*).*,\2,p" |
+			sort -u)
+	echo "$drivers"
+}
+
+all_net_drivers()
+{
+	find $rootdir/drivers/net -mindepth 1 -maxdepth 1 -type d |
+	sed 's,.*/,,' |
+	sort
+}
+
+check_rte_flow() # <driver>
+{
+	code=$rootdir/drivers/net/$1
+	doc=$rootdir/doc/guides/nics/features/$1.ini
+	[ -d $code ] || return 0
+	[ -f $doc ] || return 0
+	report=$($selfdir/parse-flow-support.sh $code $doc)
+	if [ -n "$report" ]; then
+		error "rte_flow doc out of sync for $1"
+		echo "$report" | sed 's,^,\t,'
+	fi
+}
+
+if [ -z "$trusted_commit" ]; then
+	# check all
+	for driver in $(all_net_drivers); do
+		check_rte_flow $driver
+	done
+	exit $result
+fi
+
+# find what changed and check
+if has_code_change 'RTE_FLOW_.*_TYPE_' ||
+		has_file_change 'doc/guides/nics/features'; then
+	for driver in $(changed_net_drivers); do
+		check_rte_flow $driver
+	done
+fi
+exit $result
diff --git a/devtools/parse-flow-support.sh b/devtools/parse-flow-support.sh
new file mode 100755
index 0000000000..aeed76e55f
--- /dev/null
+++ b/devtools/parse-flow-support.sh
@@ -0,0 +1,78 @@
+#! /bin/sh -e
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright 2021 Mellanox Technologies, Ltd
+
+# Parse rte_flow support of a driver directory,
+# and optionally show difference with a doc file in .ini format.
+
+dir=$1 # drivers/net/foo
+ref=$2 # doc/guides/nics/features/foo.ini
+
+if [ -z "$dir" ]; then
+	echo "directory argument is required" >&2
+	exit 1
+fi
+
+# sorting order
+export LC_COLLATE=C
+
+# exclude exceptions
+exclude() # <pattern>
+{
+	case $(basename $dir) in
+		bnxt)
+			filter=$(sed -n "/$1/{N;/TYPE_NOT_SUPPORTED/P;}" \
+				$dir/tf_ulp/ulp_template_db{,_tbl}.c |
+				grep -wo "$1[[:alnum:]_]*" | sort -u |
+				tr '\n' '|' | sed 's,.$,\n,')
+			grep -vE "$filter";;
+		*) cat
+	esac
+}
+
+# include exceptions
+include() # <pattern>
+{
+	case $(basename $dir) in
+	esac
+}
+
+# generate INI section
+list() # <title> <pattern>
+{
+	echo "[$1]"
+	git grep -who "$2[[:alnum:]_]*" $dir |
+	(exclude $2; include $2) | sort -u |
+	awk 'sub(/'$2'/, "") {printf "%-20s = Y\n", tolower($0)}'
+}
+
+rte_flow_support() # <category>
+{
+	title="rte_flow $1s"
+	pattern=$(echo "RTE_FLOW_$1_TYPE_" | awk '{print toupper($0)}')
+	list "$title" "$pattern" | grep -vwE 'void|indirect|end'
+}
+
+if [ -z "$ref" ]; then # generate full tables
+	rte_flow_support item
+	echo
+	rte_flow_support action
+	exit 0
+fi
+
+# compare with reference input
+rte_flow_compare() # <category>
+{
+	section="rte_flow $1s]"
+	{
+		rte_flow_support $1
+		sed -n "/$section/,/]/p" "$ref" | sed '/^$/d'
+	} |
+	sed '/]/d' | # ignore section title
+	sed 's, *=.*,,' | # ignore value (better in doc than generated one)
+	sort | uniq -u | # show differences
+	sed "s,^,$1 ," # prefix with category name
+}
+
+rte_flow_compare item
+rte_flow_compare action
-- 
2.31.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix
  2021-05-18 13:28 ` [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix Thomas Monjalon
                     ` (2 preceding siblings ...)
  2021-05-18 13:28   ` [dpdk-dev] [PATCH v6 3/3] devtools: check flow API doc tables Thomas Monjalon
@ 2021-05-18 16:54   ` Thomas Monjalon
  3 siblings, 0 replies; 32+ messages in thread
From: Thomas Monjalon @ 2021-05-18 16:54 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, andrew.rybchenko

18/05/2021 15:28, Thomas Monjalon:
> This is an improvement of the rte_flow documentation:
> it makes possible to quickly read which items and actions
> may be accepted by the drivers in a DPDK release.
> 
> A script is provided for CI to make sure the matrix is updated,
> while allowing some manual tuning.
> 
> Thomas Monjalon (3):
>   doc: rename sfc features file
>   doc: add flow API features tables
>   devtools: check flow API doc tables

Applied




^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2021-05-18 16:55 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-04 17:05 [dpdk-dev] [PATCH] doc: add new tables for rte flow items and actions support Asaf Penso
2021-02-04 22:09 ` Thomas Monjalon
2021-02-07  8:46   ` Asaf Penso
2021-02-07  9:44     ` Thomas Monjalon
2021-02-07  9:27 ` [dpdk-dev] [PATCH v2] " Asaf Penso
2021-02-07 10:46   ` [dpdk-dev] [PATCH v3] " Asaf Penso
2021-02-07 10:52     ` [dpdk-dev] [PATCH v4] " Asaf Penso
2021-02-08 12:58       ` Thomas Monjalon
2021-02-16 13:13       ` Ferruh Yigit
2021-02-17  5:57         ` Asaf Penso
2021-02-17 10:37           ` Ferruh Yigit
2021-02-17 10:49             ` Thomas Monjalon
2021-02-18 16:12               ` Asaf Penso
2021-02-18 17:58               ` Ajit Khaparde
2021-02-18 18:45                 ` Ferruh Yigit
2021-04-06 15:07                   ` Thomas Monjalon
2021-04-07 22:33 ` [dpdk-dev] [PATCH v5 0/3] rte_flow doc matrix Thomas Monjalon
2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 1/3] doc: rename sfc features file Thomas Monjalon
2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 2/3] doc: add flow API features tables Thomas Monjalon
2021-04-08  8:45     ` [dpdk-dev] [EXT] " Kiran Kumar Kokkilagadda
2021-05-14 10:42     ` [dpdk-dev] " Ferruh Yigit
2021-05-14 11:52       ` Thomas Monjalon
2021-04-07 22:33   ` [dpdk-dev] [PATCH v5 3/3] devtools: check flow API doc tables Thomas Monjalon
2021-05-13 18:40     ` Ferruh Yigit
2021-05-18 12:46       ` Thomas Monjalon
2021-05-14 10:51     ` Ferruh Yigit
2021-05-18 10:33       ` Thomas Monjalon
2021-05-18 13:28 ` [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix Thomas Monjalon
2021-05-18 13:28   ` [dpdk-dev] [PATCH v6 1/3] doc: rename sfc features file Thomas Monjalon
2021-05-18 13:28   ` [dpdk-dev] [PATCH v6 2/3] doc: add flow API features tables Thomas Monjalon
2021-05-18 13:28   ` [dpdk-dev] [PATCH v6 3/3] devtools: check flow API doc tables Thomas Monjalon
2021-05-18 16:54   ` [dpdk-dev] [PATCH v6 0/3] rte_flow doc matrix Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).