doc: add new tables for rte flow items and actions support
Checks
Commit Message
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
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
>-----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
>
>
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.
@@ -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',
@@ -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 =
@@ -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
@@ -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
@@ -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.