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