doc: add new tables for rte flow items and actions support

Message ID 1612458325-13508-1-git-send-email-asafp@nvidia.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series doc: add new tables for rte flow items and actions support |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/travis-robot warning Travis build: failed

Commit Message

Asaf Penso Feb. 4, 2021, 5:05 p.m. UTC
  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(-)
  

Comments

Thomas Monjalon Feb. 4, 2021, 10:09 p.m. UTC | #1
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
  
Asaf Penso Feb. 7, 2021, 8:46 a.m. UTC | #2
>-----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
>
>
  
Thomas Monjalon Feb. 7, 2021, 9:44 a.m. UTC | #3
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.
  

Patch

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.