doc: add flow API features tables

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 K <kirankumark@marvell.com>
---
v6 changes:
	- rebase/update
	- remove deprecated shared action
This commit is contained in:
Thomas Monjalon 2021-04-07 22:56:51 +02:00
parent 37f8bd7ede
commit 0a91cdd486
32 changed files with 647 additions and 44 deletions

2
.gitignore vendored
View File

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

View File

@ -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',

View File

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

View File

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

View File

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

View File

@ -38,7 +38,6 @@ SR-IOV =
DCB =
VLAN filter =
Flow control =
Flow API =
Rate limitation =
Traffic mirroring =
Inline crypto =
@ -77,3 +76,116 @@ 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 =
pppoed =
pppoes =
pppoe_proto_id =
raw =
sctp =
tag =
tcp =
udp =
vf =
vlan =
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_dst =
set_mac_src =
set_meta =
set_tag =
set_tp_dst =
set_tp_src =
set_ttl =
vf =
vxlan_decap =
vxlan_encap =

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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