xref: /dpdk/doc/guides/nics/features.rst (revision 71eae7fe3eac90b70200460c714d1c13ee43dc25)
15630257fSFerruh Yigit..  SPDX-License-Identifier: BSD-3-Clause
25630257fSFerruh Yigit    Copyright(c) 2017 Intel Corporation.
3dad1ec72SFerruh Yigit
4dad1ec72SFerruh YigitFeatures Overview
5dad1ec72SFerruh Yigit=================
6dad1ec72SFerruh Yigit
7dad1ec72SFerruh YigitThis section explains the supported features that are listed in the
8dad1ec72SFerruh Yigit:doc:`overview`.
9dad1ec72SFerruh Yigit
10dad1ec72SFerruh YigitAs a guide to implementers it also shows the structs where the features are
11dad1ec72SFerruh Yigitdefined and the APIs that can be use to get/set the values.
12dad1ec72SFerruh Yigit
13dad1ec72SFerruh YigitFollowing tags used for feature details, these are from driver point of view:
14dad1ec72SFerruh Yigit
15dad1ec72SFerruh Yigit``[uses]``       : Driver uses some kind of input from the application.
16dad1ec72SFerruh Yigit
17dad1ec72SFerruh Yigit``[implements]`` : Driver implements a functionality.
18dad1ec72SFerruh Yigit
19dad1ec72SFerruh Yigit``[provides]``   : Driver provides some kind of data to the application. It is possible
20dad1ec72SFerruh Yigitto provide data by implementing some function, but "provides" is used
21dad1ec72SFerruh Yigitfor cases where provided data can't be represented simply by a function.
22dad1ec72SFerruh Yigit
23dad1ec72SFerruh Yigit``[related]``    : Related API with that feature.
24dad1ec72SFerruh Yigit
25dad1ec72SFerruh Yigit
26dad1ec72SFerruh Yigit.. _nic_features_speed_capabilities:
27dad1ec72SFerruh Yigit
28dad1ec72SFerruh YigitSpeed capabilities
29dad1ec72SFerruh Yigit------------------
30dad1ec72SFerruh Yigit
31dad1ec72SFerruh YigitSupports getting the speed capabilities that the current device is capable of.
32dad1ec72SFerruh Yigit
33295968d1SFerruh Yigit* **[provides] rte_eth_dev_info**: ``speed_capa:RTE_ETH_LINK_SPEED_*``.
34dad1ec72SFerruh Yigit* **[related]  API**: ``rte_eth_dev_info_get()``.
35dad1ec72SFerruh Yigit
36dad1ec72SFerruh Yigit
3779758d40SHuisong Li.. _nic_features_link_speeds_config:
3879758d40SHuisong Li
3979758d40SHuisong LiLink speed configuration
4079758d40SHuisong Li------------------------
4179758d40SHuisong Li
4279758d40SHuisong LiSupports configurating fixed speed and link autonegotiation.
4379758d40SHuisong Li
4479758d40SHuisong Li* **[uses]     user config**: ``dev_conf.link_speeds:RTE_ETH_LINK_SPEED_*``.
4579758d40SHuisong Li* **[related]  API**: ``rte_eth_dev_configure()``.
4679758d40SHuisong Li
4779758d40SHuisong Li
48dad1ec72SFerruh Yigit.. _nic_features_link_status:
49dad1ec72SFerruh Yigit
50dad1ec72SFerruh YigitLink status
51dad1ec72SFerruh Yigit-----------
52dad1ec72SFerruh Yigit
53dad1ec72SFerruh YigitSupports getting the link speed, duplex mode and link state (up/down).
54dad1ec72SFerruh Yigit
55dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``link_update``.
56dad1ec72SFerruh Yigit* **[implements] rte_eth_dev_data**: ``dev_link``.
57dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_link_get()``, ``rte_eth_link_get_nowait()``.
58dad1ec72SFerruh Yigit
59dad1ec72SFerruh Yigit
60dad1ec72SFerruh Yigit.. _nic_features_link_status_event:
61dad1ec72SFerruh Yigit
62dad1ec72SFerruh YigitLink status event
63dad1ec72SFerruh Yigit-----------------
64dad1ec72SFerruh Yigit
65dad1ec72SFerruh YigitSupports Link Status Change interrupts.
66dad1ec72SFerruh Yigit
67dad1ec72SFerruh Yigit* **[uses]       user config**: ``dev_conf.intr_conf.lsc``.
68dad1ec72SFerruh Yigit* **[uses]       rte_eth_dev_data**: ``dev_flags:RTE_ETH_DEV_INTR_LSC``.
69dad1ec72SFerruh Yigit* **[uses]       rte_eth_event_type**: ``RTE_ETH_EVENT_INTR_LSC``.
70dad1ec72SFerruh Yigit* **[implements] rte_eth_dev_data**: ``dev_link``.
71dad1ec72SFerruh Yigit* **[provides]   rte_pci_driver.drv_flags**: ``RTE_PCI_DRV_INTR_LSC``.
72dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_link_get()``, ``rte_eth_link_get_nowait()``.
73dad1ec72SFerruh Yigit
74dad1ec72SFerruh Yigit
75dad1ec72SFerruh Yigit.. _nic_features_removal_event:
76dad1ec72SFerruh Yigit
77dad1ec72SFerruh YigitRemoval event
78dad1ec72SFerruh Yigit-------------
79dad1ec72SFerruh Yigit
80dad1ec72SFerruh YigitSupports device removal interrupts.
81dad1ec72SFerruh Yigit
82dad1ec72SFerruh Yigit* **[uses]     user config**: ``dev_conf.intr_conf.rmv``.
83dad1ec72SFerruh Yigit* **[uses]     rte_eth_dev_data**: ``dev_flags:RTE_ETH_DEV_INTR_RMV``.
84dad1ec72SFerruh Yigit* **[uses]     rte_eth_event_type**: ``RTE_ETH_EVENT_INTR_RMV``.
85dad1ec72SFerruh Yigit* **[provides] rte_pci_driver.drv_flags**: ``RTE_PCI_DRV_INTR_RMV``.
86dad1ec72SFerruh Yigit
87dad1ec72SFerruh Yigit
88dad1ec72SFerruh Yigit.. _nic_features_queue_status_event:
89dad1ec72SFerruh Yigit
90dad1ec72SFerruh YigitQueue status event
91dad1ec72SFerruh Yigit------------------
92dad1ec72SFerruh Yigit
93dad1ec72SFerruh YigitSupports queue enable/disable events.
94dad1ec72SFerruh Yigit
95dad1ec72SFerruh Yigit* **[uses] rte_eth_event_type**: ``RTE_ETH_EVENT_QUEUE_STATE``.
96dad1ec72SFerruh Yigit
97dad1ec72SFerruh Yigit
98dad1ec72SFerruh Yigit.. _nic_features_rx_interrupt:
99dad1ec72SFerruh Yigit
100dad1ec72SFerruh YigitRx interrupt
101dad1ec72SFerruh Yigit------------
102dad1ec72SFerruh Yigit
103dad1ec72SFerruh YigitSupports Rx interrupts.
104dad1ec72SFerruh Yigit
105dad1ec72SFerruh Yigit* **[uses]       user config**: ``dev_conf.intr_conf.rxq``.
106dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``rx_queue_intr_enable``, ``rx_queue_intr_disable``.
107dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_rx_intr_enable()``, ``rte_eth_dev_rx_intr_disable()``.
108dad1ec72SFerruh Yigit
109dad1ec72SFerruh Yigit
110dad1ec72SFerruh Yigit.. _nic_features_lock-free_tx_queue:
111dad1ec72SFerruh Yigit
112dad1ec72SFerruh YigitLock-free Tx queue
113dad1ec72SFerruh Yigit------------------
114dad1ec72SFerruh Yigit
115295968d1SFerruh YigitIf a PMD advertises RTE_ETH_TX_OFFLOAD_MT_LOCKFREE capable, multiple threads can
116dad1ec72SFerruh Yigitinvoke rte_eth_tx_burst() concurrently on the same Tx queue without SW lock.
117dad1ec72SFerruh Yigit
118295968d1SFerruh Yigit* **[uses]    rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_MT_LOCKFREE``.
119295968d1SFerruh Yigit* **[provides] rte_eth_dev_info**: ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_MT_LOCKFREE``.
120dad1ec72SFerruh Yigit* **[related]  API**: ``rte_eth_tx_burst()``.
121dad1ec72SFerruh Yigit
122dad1ec72SFerruh Yigit
123651982e5SThomas Monjalon.. _nic_features_fast_mbuf_free:
124651982e5SThomas Monjalon
125651982e5SThomas MonjalonFast mbuf free
126651982e5SThomas Monjalon--------------
127651982e5SThomas Monjalon
128651982e5SThomas MonjalonSupports optimization for fast release of mbufs following successful Tx.
129651982e5SThomas MonjalonRequires that per queue, all mbufs come from the same mempool and has refcnt = 1.
130651982e5SThomas Monjalon
131295968d1SFerruh Yigit* **[uses]       rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE``.
132295968d1SFerruh Yigit* **[provides]   rte_eth_dev_info**: ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE``.
133651982e5SThomas Monjalon
134651982e5SThomas Monjalon
135dad1ec72SFerruh Yigit.. _nic_features_free_tx_mbuf_on_demand:
136dad1ec72SFerruh Yigit
137dad1ec72SFerruh YigitFree Tx mbuf on demand
138dad1ec72SFerruh Yigit----------------------
139dad1ec72SFerruh Yigit
140dad1ec72SFerruh YigitSupports freeing consumed buffers on a Tx ring.
141dad1ec72SFerruh Yigit
142dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``tx_done_cleanup``.
143dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_tx_done_cleanup()``.
144dad1ec72SFerruh Yigit
145dad1ec72SFerruh Yigit
146dad1ec72SFerruh Yigit.. _nic_features_queue_start_stop:
147dad1ec72SFerruh Yigit
148dad1ec72SFerruh YigitQueue start/stop
149dad1ec72SFerruh Yigit----------------
150dad1ec72SFerruh Yigit
151dad1ec72SFerruh YigitSupports starting/stopping a specific Rx/Tx queue of a port.
152dad1ec72SFerruh Yigit
153dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``rx_queue_start``, ``rx_queue_stop``, ``tx_queue_start``,
154dad1ec72SFerruh Yigit  ``tx_queue_stop``.
155dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_rx_queue_start()``, ``rte_eth_dev_rx_queue_stop()``,
156dad1ec72SFerruh Yigit  ``rte_eth_dev_tx_queue_start()``, ``rte_eth_dev_tx_queue_stop()``.
157dad1ec72SFerruh Yigit
158dad1ec72SFerruh Yigit
159dad1ec72SFerruh Yigit.. _nic_features_mtu_update:
160dad1ec72SFerruh Yigit
161dad1ec72SFerruh YigitMTU update
162dad1ec72SFerruh Yigit----------
163dad1ec72SFerruh Yigit
164dad1ec72SFerruh YigitSupports updating port MTU.
165dad1ec72SFerruh Yigit
166dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``mtu_set``.
167dad1ec72SFerruh Yigit* **[implements] rte_eth_dev_data**: ``mtu``.
168dad1ec72SFerruh Yigit* **[provides]   rte_eth_dev_info**: ``max_rx_pktlen``.
169dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_set_mtu()``, ``rte_eth_dev_get_mtu()``.
170dad1ec72SFerruh Yigit
171dad1ec72SFerruh Yigit
172dad1ec72SFerruh Yigit.. _nic_features_scattered_rx:
173dad1ec72SFerruh Yigit
174dad1ec72SFerruh YigitScattered Rx
175dad1ec72SFerruh Yigit------------
176dad1ec72SFerruh Yigit
177dad1ec72SFerruh YigitSupports receiving segmented mbufs.
178dad1ec72SFerruh Yigit
179295968d1SFerruh Yigit* **[uses]       rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_SCATTER``.
180dad1ec72SFerruh Yigit* **[implements] datapath**: ``Scattered Rx function``.
181dad1ec72SFerruh Yigit* **[implements] rte_eth_dev_data**: ``scattered_rx``.
182dad1ec72SFerruh Yigit* **[provides]   eth_dev_ops**: ``rxq_info_get:scattered_rx``.
183dad1ec72SFerruh Yigit* **[related]    eth_dev_ops**: ``rx_pkt_burst``.
184dad1ec72SFerruh Yigit
185dad1ec72SFerruh Yigit
1864ff702b5SViacheslav Ovsiienko.. _nic_features_buffer_split:
1874ff702b5SViacheslav Ovsiienko
188629dad3eSYuan WangBuffer split on Rx
1894ff702b5SViacheslav Ovsiienko------------------
1904ff702b5SViacheslav Ovsiienko
1914ff702b5SViacheslav OvsiienkoScatters the packets being received on specified boundaries to segmented mbufs.
1924ff702b5SViacheslav Ovsiienko
1934ff702b5SViacheslav Ovsiienko* **[uses]       rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT``.
1944ff702b5SViacheslav Ovsiienko* **[uses]       rte_eth_rxconf**: ``rx_conf.rx_seg, rx_conf.rx_nseg``.
195e4e6f4cbSYuan Wang* **[implements] eth_dev_ops**: ``buffer_split_supported_hdr_ptypes_get``,
1964ff702b5SViacheslav Ovsiienko* **[implements] datapath**: ``Buffer Split functionality``.
1974ff702b5SViacheslav Ovsiienko* **[provides]   rte_eth_dev_info**: ``rx_offload_capa:RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT``.
198e4e6f4cbSYuan Wang* **[related] API**: ``rte_eth_rx_queue_setup()``, ``rte_eth_buffer_split_get_supported_hdr_ptypes()``.
1994ff702b5SViacheslav Ovsiienko
2004ff702b5SViacheslav Ovsiienko
201dad1ec72SFerruh Yigit.. _nic_features_lro:
202dad1ec72SFerruh Yigit
203dad1ec72SFerruh YigitLRO
204dad1ec72SFerruh Yigit---
205dad1ec72SFerruh Yigit
206dad1ec72SFerruh YigitSupports Large Receive Offload.
207dad1ec72SFerruh Yigit
208295968d1SFerruh Yigit* **[uses]       rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_TCP_LRO``.
209dc258e4aSDekel Peled  ``dev_conf.rxmode.max_lro_pkt_size``.
210dad1ec72SFerruh Yigit* **[implements] datapath**: ``LRO functionality``.
211dad1ec72SFerruh Yigit* **[implements] rte_eth_dev_data**: ``lro``.
212daa02b5cSOlivier Matz* **[provides]   mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_LRO``, ``mbuf.tso_segsz``.
213295968d1SFerruh Yigit* **[provides]   rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:RTE_ETH_RX_OFFLOAD_TCP_LRO``.
214dc258e4aSDekel Peled* **[provides]   rte_eth_dev_info**: ``max_lro_pkt_size``.
215dad1ec72SFerruh Yigit
216dad1ec72SFerruh Yigit
217dad1ec72SFerruh Yigit.. _nic_features_tso:
218dad1ec72SFerruh Yigit
219dad1ec72SFerruh YigitTSO
220dad1ec72SFerruh Yigit---
221dad1ec72SFerruh Yigit
222dad1ec72SFerruh YigitSupports TCP Segmentation Offloading.
223dad1ec72SFerruh Yigit
224295968d1SFerruh Yigit* **[uses]       rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_TCP_TSO``.
225dad1ec72SFerruh Yigit* **[uses]       rte_eth_desc_lim**: ``nb_seg_max``, ``nb_mtu_seg_max``.
226daa02b5cSOlivier Matz* **[uses]       mbuf**: ``mbuf.ol_flags:`` ``RTE_MBUF_F_TX_TCP_SEG``, ``RTE_MBUF_F_TX_IPV4``, ``RTE_MBUF_F_TX_IPV6``, ``RTE_MBUF_F_TX_IP_CKSUM``.
227dad1ec72SFerruh Yigit* **[uses]       mbuf**: ``mbuf.tso_segsz``, ``mbuf.l2_len``, ``mbuf.l3_len``, ``mbuf.l4_len``.
228dad1ec72SFerruh Yigit* **[implements] datapath**: ``TSO functionality``.
229295968d1SFerruh Yigit* **[provides]   rte_eth_dev_info**: ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_TCP_TSO,RTE_ETH_TX_OFFLOAD_UDP_TSO``.
230dad1ec72SFerruh Yigit
231dad1ec72SFerruh Yigit
232dad1ec72SFerruh Yigit.. _nic_features_promiscuous_mode:
233dad1ec72SFerruh Yigit
234dad1ec72SFerruh YigitPromiscuous mode
235dad1ec72SFerruh Yigit----------------
236dad1ec72SFerruh Yigit
237dad1ec72SFerruh YigitSupports enabling/disabling promiscuous mode for a port.
238dad1ec72SFerruh Yigit
239dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``promiscuous_enable``, ``promiscuous_disable``.
240dad1ec72SFerruh Yigit* **[implements] rte_eth_dev_data**: ``promiscuous``.
241dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_promiscuous_enable()``, ``rte_eth_promiscuous_disable()``,
242dad1ec72SFerruh Yigit  ``rte_eth_promiscuous_get()``.
243dad1ec72SFerruh Yigit
244dad1ec72SFerruh Yigit
245dad1ec72SFerruh Yigit.. _nic_features_allmulticast_mode:
246dad1ec72SFerruh Yigit
247dad1ec72SFerruh YigitAllmulticast mode
248dad1ec72SFerruh Yigit-----------------
249dad1ec72SFerruh Yigit
250dad1ec72SFerruh YigitSupports enabling/disabling receiving multicast frames.
251dad1ec72SFerruh Yigit
252dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``allmulticast_enable``, ``allmulticast_disable``.
253dad1ec72SFerruh Yigit* **[implements] rte_eth_dev_data**: ``all_multicast``.
254dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_allmulticast_enable()``,
255dad1ec72SFerruh Yigit  ``rte_eth_allmulticast_disable()``, ``rte_eth_allmulticast_get()``.
256dad1ec72SFerruh Yigit
257dad1ec72SFerruh Yigit
258dad1ec72SFerruh Yigit.. _nic_features_unicast_mac_filter:
259dad1ec72SFerruh Yigit
260dad1ec72SFerruh YigitUnicast MAC filter
261dad1ec72SFerruh Yigit------------------
262dad1ec72SFerruh Yigit
2631509e07fSStephen HemmingerSupports adding MAC addresses to enable incoming filtering of packets.
264dad1ec72SFerruh Yigit
265dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``mac_addr_set``, ``mac_addr_add``, ``mac_addr_remove``.
266dad1ec72SFerruh Yigit* **[implements] rte_eth_dev_data**: ``mac_addrs``.
267dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_default_mac_addr_set()``,
268dad1ec72SFerruh Yigit  ``rte_eth_dev_mac_addr_add()``, ``rte_eth_dev_mac_addr_remove()``,
269dad1ec72SFerruh Yigit  ``rte_eth_macaddr_get()``.
270dad1ec72SFerruh Yigit
271dad1ec72SFerruh Yigit
272dad1ec72SFerruh Yigit.. _nic_features_multicast_mac_filter:
273dad1ec72SFerruh Yigit
274dad1ec72SFerruh YigitMulticast MAC filter
275dad1ec72SFerruh Yigit--------------------
276dad1ec72SFerruh Yigit
277dad1ec72SFerruh YigitSupports setting multicast addresses to filter.
278dad1ec72SFerruh Yigit
279dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``set_mc_addr_list``.
280dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_set_mc_addr_list()``.
281dad1ec72SFerruh Yigit
282dad1ec72SFerruh Yigit
283dad1ec72SFerruh Yigit.. _nic_features_rss_hash:
284dad1ec72SFerruh Yigit
285dad1ec72SFerruh YigitRSS hash
286dad1ec72SFerruh Yigit--------
287dad1ec72SFerruh Yigit
288dad1ec72SFerruh YigitSupports RSS hashing on RX.
289dad1ec72SFerruh Yigit
290295968d1SFerruh Yigit* **[uses]     user config**: ``dev_conf.rxmode.mq_mode`` = ``RTE_ETH_MQ_RX_RSS_FLAG``.
29146aa6b3cSHuisong Li* **[uses]     user config**: ``rss_conf.rss_hf``.
292295968d1SFerruh Yigit* **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_RSS_HASH``.
293dad1ec72SFerruh Yigit* **[provides] rte_eth_dev_info**: ``flow_type_rss_offloads``.
294daa02b5cSOlivier Matz* **[provides] mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_RSS_HASH``, ``mbuf.rss``.
29546aa6b3cSHuisong Li* **[related]  API**: ``rte_eth_dev_configure()``, ``rte_eth_dev_rss_hash_update``
29646aa6b3cSHuisong Li  ``rte_eth_dev_rss_hash_conf_get()``.
29746aa6b3cSHuisong Li
29846aa6b3cSHuisong LiSupports RSS hash algorithm on Rx.
29946aa6b3cSHuisong Li
30046aa6b3cSHuisong Li* **[implements] eth_dev_ops**: ``dev_configure``, ``rss_hash_update``, ``rss_hash_conf_get``.
30146aa6b3cSHuisong Li* **[uses]       user config**: ``rss_conf.algorithm``
30246aa6b3cSHuisong Li* **[provides]   rte_eth_dev_info**: ``rss_algo_capa``.
30346aa6b3cSHuisong Li* **[related]    API**: ``rte_eth_dev_configure()``, ``rte_eth_dev_rss_hash_update()``,
30446aa6b3cSHuisong Li  ``rte_eth_dev_rss_hash_conf_get()``.
305dad1ec72SFerruh Yigit
306dad1ec72SFerruh Yigit
307d0a87d9aSXueming Li.. _nic_features_inner_rss:
308d0a87d9aSXueming Li
309d0a87d9aSXueming LiInner RSS
310d0a87d9aSXueming Li---------
311d0a87d9aSXueming Li
31246aa6b3cSHuisong LiSupports RSS hashing on inner headers with flow API.
313d0a87d9aSXueming Li
3141b01d058SRami Rosen* **[uses]    rte_flow_action_rss**: ``level``.
315295968d1SFerruh Yigit* **[uses]    rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_RSS_HASH``.
316daa02b5cSOlivier Matz* **[provides] mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_RSS_HASH``, ``mbuf.rss``.
317d0a87d9aSXueming Li
318d0a87d9aSXueming Li
319dad1ec72SFerruh Yigit.. _nic_features_rss_key_update:
320dad1ec72SFerruh Yigit
321dad1ec72SFerruh YigitRSS key update
322dad1ec72SFerruh Yigit--------------
323dad1ec72SFerruh Yigit
324dad1ec72SFerruh YigitSupports configuration of Receive Side Scaling (RSS) hash computation. Updating
325dad1ec72SFerruh YigitReceive Side Scaling (RSS) hash key.
326dad1ec72SFerruh Yigit
32746aa6b3cSHuisong Li* **[implements] eth_dev_ops**: ``dev_configure``, ``rss_hash_update``, ``rss_hash_conf_get``.
32846aa6b3cSHuisong Li* **[uses]       user config**: ``rss_conf.rss_key``, ``rss_conf.rss_key_len``.
329dad1ec72SFerruh Yigit* **[provides]   rte_eth_dev_info**: ``hash_key_size``.
33046aa6b3cSHuisong Li* **[related]    API**: ``rte_eth_dev_configure()``, ``rte_eth_dev_rss_hash_update()``,
331dad1ec72SFerruh Yigit  ``rte_eth_dev_rss_hash_conf_get()``.
332dad1ec72SFerruh Yigit
333dad1ec72SFerruh Yigit
334dad1ec72SFerruh Yigit.. _nic_features_rss_reta_update:
335dad1ec72SFerruh Yigit
336dad1ec72SFerruh YigitRSS reta update
337dad1ec72SFerruh Yigit---------------
338dad1ec72SFerruh Yigit
339dad1ec72SFerruh YigitSupports updating Redirection Table of the Receive Side Scaling (RSS).
340dad1ec72SFerruh Yigit
341dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``reta_update``, ``reta_query``.
342dad1ec72SFerruh Yigit* **[provides]   rte_eth_dev_info**: ``reta_size``.
343dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_rss_reta_update()``, ``rte_eth_dev_rss_reta_query()``.
344dad1ec72SFerruh Yigit
345dad1ec72SFerruh Yigit
346dad1ec72SFerruh Yigit.. _nic_features_vmdq:
347dad1ec72SFerruh Yigit
348dad1ec72SFerruh YigitVMDq
349dad1ec72SFerruh Yigit----
350dad1ec72SFerruh Yigit
351dad1ec72SFerruh YigitSupports Virtual Machine Device Queues (VMDq).
352dad1ec72SFerruh Yigit
353295968d1SFerruh Yigit* **[uses] user config**: ``dev_conf.rxmode.mq_mode`` = ``RTE_ETH_MQ_RX_VMDQ_FLAG``.
354dad1ec72SFerruh Yigit* **[uses] user config**: ``dev_conf.rx_adv_conf.vmdq_dcb_conf``.
355dad1ec72SFerruh Yigit* **[uses] user config**: ``dev_conf.rx_adv_conf.vmdq_rx_conf``.
356dad1ec72SFerruh Yigit* **[uses] user config**: ``dev_conf.tx_adv_conf.vmdq_dcb_tx_conf``.
357dad1ec72SFerruh Yigit* **[uses] user config**: ``dev_conf.tx_adv_conf.vmdq_tx_conf``.
358dad1ec72SFerruh Yigit
359dad1ec72SFerruh Yigit
360dad1ec72SFerruh Yigit.. _nic_features_sriov:
361dad1ec72SFerruh Yigit
362dad1ec72SFerruh YigitSR-IOV
363dad1ec72SFerruh Yigit------
364dad1ec72SFerruh Yigit
365dad1ec72SFerruh YigitDriver supports creating Virtual Functions.
366dad1ec72SFerruh Yigit
367dad1ec72SFerruh Yigit* **[implements] rte_eth_dev_data**: ``sriov``.
368dad1ec72SFerruh Yigit
369dad1ec72SFerruh Yigit.. _nic_features_dcb:
370dad1ec72SFerruh Yigit
371dad1ec72SFerruh YigitDCB
372dad1ec72SFerruh Yigit---
373dad1ec72SFerruh Yigit
374dad1ec72SFerruh YigitSupports Data Center Bridging (DCB).
375dad1ec72SFerruh Yigit
376295968d1SFerruh Yigit* **[uses]       user config**: ``dev_conf.rxmode.mq_mode`` = ``RTE_ETH_MQ_RX_DCB_FLAG``.
377dad1ec72SFerruh Yigit* **[uses]       user config**: ``dev_conf.rx_adv_conf.vmdq_dcb_conf``.
378dad1ec72SFerruh Yigit* **[uses]       user config**: ``dev_conf.rx_adv_conf.dcb_rx_conf``.
379dad1ec72SFerruh Yigit* **[uses]       user config**: ``dev_conf.tx_adv_conf.vmdq_dcb_tx_conf``.
380dad1ec72SFerruh Yigit* **[uses]       user config**: ``dev_conf.tx_adv_conf.vmdq_tx_conf``.
381dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``get_dcb_info``.
382dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_get_dcb_info()``.
383dad1ec72SFerruh Yigit
384dad1ec72SFerruh Yigit
385dad1ec72SFerruh Yigit.. _nic_features_vlan_filter:
386dad1ec72SFerruh Yigit
387dad1ec72SFerruh YigitVLAN filter
388dad1ec72SFerruh Yigit-----------
389dad1ec72SFerruh Yigit
390dad1ec72SFerruh YigitSupports filtering of a VLAN Tag identifier.
391dad1ec72SFerruh Yigit
392295968d1SFerruh Yigit* **[uses]       rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_VLAN_FILTER``.
393dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``vlan_filter_set``.
394dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_vlan_filter()``.
395dad1ec72SFerruh Yigit
396dad1ec72SFerruh Yigit
397dad1ec72SFerruh Yigit.. _nic_features_flow_control:
398dad1ec72SFerruh Yigit
399dad1ec72SFerruh YigitFlow control
400dad1ec72SFerruh Yigit------------
401dad1ec72SFerruh Yigit
402dad1ec72SFerruh YigitSupports configuring link flow control.
403dad1ec72SFerruh Yigit
404dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``flow_ctrl_get``, ``flow_ctrl_set``,
4050de345e9SJerin Jacob  ``priority_flow_ctrl_set``, ``priority_flow_ctrl_queue_info_get``,
4060de345e9SJerin Jacob  ``priority_flow_ctrl_queue_configure``
407dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_flow_ctrl_get()``, ``rte_eth_dev_flow_ctrl_set()``,
4080de345e9SJerin Jacob  ``rte_eth_dev_priority_flow_ctrl_set()``,
4090de345e9SJerin Jacob  ``rte_eth_dev_priority_flow_ctrl_queue_info_get()``,
4100de345e9SJerin Jacob  ``rte_eth_dev_priority_flow_ctrl_queue_configure()``.
411dad1ec72SFerruh Yigit
412dad1ec72SFerruh Yigit
413dad1ec72SFerruh Yigit.. _nic_features_rate_limitation:
414dad1ec72SFerruh Yigit
415dad1ec72SFerruh YigitRate limitation
416dad1ec72SFerruh Yigit---------------
417dad1ec72SFerruh Yigit
418dad1ec72SFerruh YigitSupports Tx rate limitation for a queue.
419dad1ec72SFerruh Yigit
420dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``set_queue_rate_limit``.
421dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_set_queue_rate_limit()``.
422dad1ec72SFerruh Yigit
423dad1ec72SFerruh Yigit
42413e855a3SRadu Nicolau.. _nic_features_inline_crypto_doc:
42513e855a3SRadu Nicolau
42613e855a3SRadu NicolauInline crypto
42713e855a3SRadu Nicolau-------------
42813e855a3SRadu Nicolau
42953e9ef5dSAnoob JosephSupports inline crypto processing defined by rte_security library to perform crypto
43053e9ef5dSAnoob Josephoperations of security protocol while packet is received in NIC. NIC is not aware
43153e9ef5dSAnoob Josephof protocol operations. See Security library and PMD documentation for more details.
43213e855a3SRadu Nicolau
433295968d1SFerruh Yigit* **[uses]       rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_SECURITY``,
434295968d1SFerruh Yigit* **[uses]       rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_SECURITY``.
4356d1f8c13SNithin Dabilpuram* **[uses]       mbuf**: ``mbuf.l2_len``.
43613e855a3SRadu Nicolau* **[implements] rte_security_ops**: ``session_create``, ``session_update``,
43713e855a3SRadu Nicolau  ``session_stats_get``, ``session_destroy``, ``set_pkt_metadata``, ``capabilities_get``.
438295968d1SFerruh Yigit* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:RTE_ETH_RX_OFFLOAD_SECURITY``,
439295968d1SFerruh Yigit  ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_SECURITY``.
440daa02b5cSOlivier Matz* **[provides]   mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_SEC_OFFLOAD``,
441daa02b5cSOlivier Matz  ``mbuf.ol_flags:RTE_MBUF_F_TX_SEC_OFFLOAD``, ``mbuf.ol_flags:RTE_MBUF_F_RX_SEC_OFFLOAD_FAILED``.
44253e9ef5dSAnoob Joseph* **[provides]   rte_security_ops, capabilities_get**:  ``action: RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO``
44353e9ef5dSAnoob Joseph
44453e9ef5dSAnoob Joseph
44553e9ef5dSAnoob Joseph.. _nic_features_inline_protocol_doc:
44653e9ef5dSAnoob Joseph
44753e9ef5dSAnoob JosephInline protocol
44853e9ef5dSAnoob Joseph---------------
44953e9ef5dSAnoob Joseph
45053e9ef5dSAnoob JosephSupports inline protocol processing defined by rte_security library to perform
45153e9ef5dSAnoob Josephprotocol processing for the security protocol (e.g. IPsec, MACSEC) while the
45253e9ef5dSAnoob Josephpacket is received at NIC. The NIC is capable of understanding the security
45353e9ef5dSAnoob Josephprotocol operations. See security library and PMD documentation for more details.
45453e9ef5dSAnoob Joseph
455295968d1SFerruh Yigit* **[uses]       rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_SECURITY``,
456295968d1SFerruh Yigit* **[uses]       rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_SECURITY``.
457338eb151SNithin Dabilpuram* **[uses]       mbuf**: ``mbuf.l2_len``, ``mbuf.l3_len``, ``mbuf.ol_flags``.
45853e9ef5dSAnoob Joseph* **[implements] rte_security_ops**: ``session_create``, ``session_update``,
45968d25915SSrujana Challa  ``session_stats_get``, ``session_destroy``, ``set_pkt_metadata``,
46053e9ef5dSAnoob Joseph  ``capabilities_get``.
461295968d1SFerruh Yigit* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:RTE_ETH_RX_OFFLOAD_SECURITY``,
462295968d1SFerruh Yigit  ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_SECURITY``.
463daa02b5cSOlivier Matz* **[provides]   mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_SEC_OFFLOAD``,
464daa02b5cSOlivier Matz  ``mbuf.ol_flags:RTE_MBUF_F_TX_SEC_OFFLOAD``, ``mbuf.ol_flags:RTE_MBUF_F_RX_SEC_OFFLOAD_FAILED``.
46553e9ef5dSAnoob Joseph* **[provides]   rte_security_ops, capabilities_get**:  ``action: RTE_SECURITY_ACTION_TYPE_INLINE_PROTOCOL``
46613e855a3SRadu Nicolau
46713e855a3SRadu Nicolau
468dad1ec72SFerruh Yigit.. _nic_features_crc_offload:
469dad1ec72SFerruh Yigit
470dad1ec72SFerruh YigitCRC offload
471dad1ec72SFerruh Yigit-----------
472dad1ec72SFerruh Yigit
473dad1ec72SFerruh YigitSupports CRC stripping by hardware.
474323e7b66SFerruh YigitA PMD assumed to support CRC stripping by default. PMD should advertise if it supports keeping CRC.
475dad1ec72SFerruh Yigit
476295968d1SFerruh Yigit* **[uses] rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_KEEP_CRC``.
477dad1ec72SFerruh Yigit
478dad1ec72SFerruh Yigit
479dad1ec72SFerruh Yigit.. _nic_features_vlan_offload:
480dad1ec72SFerruh Yigit
481dad1ec72SFerruh YigitVLAN offload
482dad1ec72SFerruh Yigit------------
483dad1ec72SFerruh Yigit
484dad1ec72SFerruh YigitSupports VLAN offload to hardware.
485dad1ec72SFerruh Yigit
486295968d1SFerruh Yigit* **[uses]       rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_VLAN_STRIP,RTE_ETH_RX_OFFLOAD_VLAN_FILTER,RTE_ETH_RX_OFFLOAD_VLAN_EXTEND``.
487295968d1SFerruh Yigit* **[uses]       rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_VLAN_INSERT``.
488daa02b5cSOlivier Matz* **[uses]       mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_TX_VLAN``, ``mbuf.vlan_tci``.
489dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``vlan_offload_set``.
490daa02b5cSOlivier Matz* **[provides]   mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_VLAN_STRIPPED``, ``mbuf.ol_flags:RTE_MBUF_F_RX_VLAN`` ``mbuf.vlan_tci``.
491295968d1SFerruh Yigit* **[provides]   rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:RTE_ETH_RX_OFFLOAD_VLAN_STRIP``,
492295968d1SFerruh Yigit  ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_VLAN_INSERT``.
493dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_set_vlan_offload()``,
494dad1ec72SFerruh Yigit  ``rte_eth_dev_get_vlan_offload()``.
495dad1ec72SFerruh Yigit
496dad1ec72SFerruh Yigit
497dad1ec72SFerruh Yigit.. _nic_features_qinq_offload:
498dad1ec72SFerruh Yigit
499dad1ec72SFerruh YigitQinQ offload
500dad1ec72SFerruh Yigit------------
501dad1ec72SFerruh Yigit
502dad1ec72SFerruh YigitSupports QinQ (queue in queue) offload.
503dad1ec72SFerruh Yigit
504295968d1SFerruh Yigit* **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_QINQ_STRIP``.
505295968d1SFerruh Yigit* **[uses]     rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_QINQ_INSERT``.
506daa02b5cSOlivier Matz* **[uses]     mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_TX_QINQ``, ``mbuf.vlan_tci_outer``.
507daa02b5cSOlivier Matz* **[provides] mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_QINQ_STRIPPED``, ``mbuf.ol_flags:RTE_MBUF_F_RX_QINQ``,
508daa02b5cSOlivier Matz  ``mbuf.ol_flags:RTE_MBUF_F_RX_VLAN_STRIPPED``, ``mbuf.ol_flags:RTE_MBUF_F_RX_VLAN``
509b2fd0273SFerruh Yigit  ``mbuf.vlan_tci``, ``mbuf.vlan_tci_outer``.
510295968d1SFerruh Yigit* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:RTE_ETH_RX_OFFLOAD_QINQ_STRIP``,
511295968d1SFerruh Yigit  ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_QINQ_INSERT``.
512dad1ec72SFerruh Yigit
513dad1ec72SFerruh Yigit
514fa5dbd82SMin Hu (Connor).. _nic_features_fec:
515fa5dbd82SMin Hu (Connor)
516fa5dbd82SMin Hu (Connor)FEC
517fa5dbd82SMin Hu (Connor)---
518fa5dbd82SMin Hu (Connor)
519fa5dbd82SMin Hu (Connor)Supports Forward error correction. Forward error correction (FEC) is a bit error correction mode.
520fa5dbd82SMin Hu (Connor)It adds error correction information to data packets at the transmit end, and uses the error correction
521fa5dbd82SMin Hu (Connor)information to correct the bit errors generated during data packet transmission at the receive end. This
522fa5dbd82SMin Hu (Connor)improves signal quality but also brings a delay to signals. This function can be enabled or disabled as required.
523fa5dbd82SMin Hu (Connor)
524fa5dbd82SMin Hu (Connor)* **[implements] eth_dev_ops**: ``fec_get_capability``, ``fec_get``, ``fec_set``.
525295968d1SFerruh Yigit* **[provides]   rte_eth_fec_capa**: ``speed:RTE_ETH_SPEED_NUM_*``, ``capa:RTE_ETH_FEC_MODE_TO_CAPA()``.
526fa5dbd82SMin Hu (Connor)* **[related]    API**: ``rte_eth_fec_get_capability()``, ``rte_eth_fec_get()``, ``rte_eth_fec_set()``.
527fa5dbd82SMin Hu (Connor)
528fa5dbd82SMin Hu (Connor)
529a75ab6e5SAkhil Goyal.. _nic_features_ip_reassembly:
530a75ab6e5SAkhil Goyal
531a75ab6e5SAkhil GoyalIP reassembly
532a75ab6e5SAkhil Goyal-------------
533a75ab6e5SAkhil Goyal
534a75ab6e5SAkhil GoyalSupports IP reassembly in hardware.
535a75ab6e5SAkhil Goyal
536a75ab6e5SAkhil Goyal* **[provides] eth_dev_ops**: ``ip_reassembly_capability_get``,
537a75ab6e5SAkhil Goyal  ``ip_reassembly_conf_get``, ``ip_reassembly_conf_set``.
538a75ab6e5SAkhil Goyal* **[related]    API**: ``rte_eth_ip_reassembly_capability_get()``,
539a75ab6e5SAkhil Goyal  ``rte_eth_ip_reassembly_conf_get()``, ``rte_eth_ip_reassembly_conf_set()``.
540a75ab6e5SAkhil Goyal
541a75ab6e5SAkhil Goyal
542dad1ec72SFerruh Yigit.. _nic_features_l3_checksum_offload:
543dad1ec72SFerruh Yigit
544dad1ec72SFerruh YigitL3 checksum offload
545dad1ec72SFerruh Yigit-------------------
546dad1ec72SFerruh Yigit
547dad1ec72SFerruh YigitSupports L3 checksum offload.
548dad1ec72SFerruh Yigit
549295968d1SFerruh Yigit* **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_IPV4_CKSUM``.
550295968d1SFerruh Yigit* **[uses]     rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_IPV4_CKSUM``.
551daa02b5cSOlivier Matz* **[uses]     mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_TX_IP_CKSUM``,
552daa02b5cSOlivier Matz  ``mbuf.ol_flags:RTE_MBUF_F_TX_IPV4`` | ``RTE_MBUF_F_TX_IPV6``.
5539713e329SJerin Jacob* **[uses]     mbuf**: ``mbuf.l2_len``, ``mbuf.l3_len``.
554daa02b5cSOlivier Matz* **[provides] mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_IP_CKSUM_UNKNOWN`` |
555daa02b5cSOlivier Matz  ``RTE_MBUF_F_RX_IP_CKSUM_BAD`` | ``RTE_MBUF_F_RX_IP_CKSUM_GOOD`` |
556daa02b5cSOlivier Matz  ``RTE_MBUF_F_RX_IP_CKSUM_NONE``.
557295968d1SFerruh Yigit* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:RTE_ETH_RX_OFFLOAD_IPV4_CKSUM``,
558295968d1SFerruh Yigit  ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_IPV4_CKSUM``.
559dad1ec72SFerruh Yigit
560dad1ec72SFerruh Yigit
561dad1ec72SFerruh Yigit.. _nic_features_l4_checksum_offload:
562dad1ec72SFerruh Yigit
563dad1ec72SFerruh YigitL4 checksum offload
564dad1ec72SFerruh Yigit-------------------
565dad1ec72SFerruh Yigit
566dad1ec72SFerruh YigitSupports L4 checksum offload.
567dad1ec72SFerruh Yigit
568295968d1SFerruh Yigit* **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_UDP_CKSUM,RTE_ETH_RX_OFFLOAD_TCP_CKSUM,RTE_ETH_RX_OFFLOAD_SCTP_CKSUM``.
569295968d1SFerruh Yigit* **[uses]     rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_UDP_CKSUM,RTE_ETH_TX_OFFLOAD_TCP_CKSUM,RTE_ETH_TX_OFFLOAD_SCTP_CKSUM``.
570daa02b5cSOlivier Matz* **[uses]     mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_TX_IPV4`` | ``RTE_MBUF_F_TX_IPV6``,
571daa02b5cSOlivier Matz  ``mbuf.ol_flags:RTE_MBUF_F_TX_L4_NO_CKSUM`` | ``RTE_MBUF_F_TX_TCP_CKSUM`` |
572daa02b5cSOlivier Matz  ``RTE_MBUF_F_TX_SCTP_CKSUM`` | ``RTE_MBUF_F_TX_UDP_CKSUM``.
573425f0930SJerin Jacob* **[uses]     mbuf**: ``mbuf.l2_len``, ``mbuf.l3_len``.
574daa02b5cSOlivier Matz* **[provides] mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_L4_CKSUM_UNKNOWN`` |
575daa02b5cSOlivier Matz  ``RTE_MBUF_F_RX_L4_CKSUM_BAD`` | ``RTE_MBUF_F_RX_L4_CKSUM_GOOD`` |
576daa02b5cSOlivier Matz  ``RTE_MBUF_F_RX_L4_CKSUM_NONE``.
577295968d1SFerruh Yigit* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:RTE_ETH_RX_OFFLOAD_UDP_CKSUM,RTE_ETH_RX_OFFLOAD_TCP_CKSUM,RTE_ETH_RX_OFFLOAD_SCTP_CKSUM``,
578295968d1SFerruh Yigit  ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_UDP_CKSUM,RTE_ETH_TX_OFFLOAD_TCP_CKSUM,RTE_ETH_TX_OFFLOAD_SCTP_CKSUM``.
579dad1ec72SFerruh Yigit
58042ffc45aSRaslan Darawsheh.. _nic_features_hw_timestamp:
58142ffc45aSRaslan Darawsheh
58242ffc45aSRaslan DarawshehTimestamp offload
58342ffc45aSRaslan Darawsheh-----------------
58442ffc45aSRaslan Darawsheh
58542ffc45aSRaslan DarawshehSupports Timestamp.
58642ffc45aSRaslan Darawsheh
587295968d1SFerruh Yigit* **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_TIMESTAMP``.
588daa02b5cSOlivier Matz* **[provides] mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_TIMESTAMP``.
58942ffc45aSRaslan Darawsheh* **[provides] mbuf**: ``mbuf.timestamp``.
590295968d1SFerruh Yigit* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa: RTE_ETH_RX_OFFLOAD_TIMESTAMP``.
5915e741377STom Barbette* **[related] eth_dev_ops**: ``read_clock``.
592dad1ec72SFerruh Yigit
593dad1ec72SFerruh Yigit.. _nic_features_macsec_offload:
594dad1ec72SFerruh Yigit
595dad1ec72SFerruh YigitMACsec offload
596dad1ec72SFerruh Yigit--------------
597dad1ec72SFerruh Yigit
598dad1ec72SFerruh YigitSupports MACsec.
599dad1ec72SFerruh Yigit
600295968d1SFerruh Yigit* **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_MACSEC_STRIP``.
601295968d1SFerruh Yigit* **[uses]     rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_MACSEC_INSERT``.
602daa02b5cSOlivier Matz* **[uses]     mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_TX_MACSEC``.
603295968d1SFerruh Yigit* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:RTE_ETH_RX_OFFLOAD_MACSEC_STRIP``,
604295968d1SFerruh Yigit  ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_MACSEC_INSERT``.
605dad1ec72SFerruh Yigit
606dad1ec72SFerruh Yigit
607dad1ec72SFerruh Yigit.. _nic_features_inner_l3_checksum:
608dad1ec72SFerruh Yigit
609dad1ec72SFerruh YigitInner L3 checksum
610dad1ec72SFerruh Yigit-----------------
611dad1ec72SFerruh Yigit
612dad1ec72SFerruh YigitSupports inner packet L3 checksum.
613dad1ec72SFerruh Yigit
614295968d1SFerruh Yigit* **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_OUTER_IPV4_CKSUM``.
615295968d1SFerruh Yigit* **[uses]     rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM``.
616daa02b5cSOlivier Matz* **[uses]     mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_TX_IP_CKSUM``,
617daa02b5cSOlivier Matz  ``mbuf.ol_flags:RTE_MBUF_F_TX_IPV4`` | ``RTE_MBUF_F_TX_IPV6``,
618daa02b5cSOlivier Matz  ``mbuf.ol_flags:RTE_MBUF_F_TX_OUTER_IP_CKSUM``,
619daa02b5cSOlivier Matz  ``mbuf.ol_flags:RTE_MBUF_F_TX_OUTER_IPV4`` | ``RTE_MBUF_F_TX_OUTER_IPV6``.
620dad1ec72SFerruh Yigit* **[uses]     mbuf**: ``mbuf.outer_l2_len``, ``mbuf.outer_l3_len``.
621daa02b5cSOlivier Matz* **[provides] mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_OUTER_IP_CKSUM_BAD``.
622295968d1SFerruh Yigit* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:RTE_ETH_RX_OFFLOAD_OUTER_IPV4_CKSUM``,
623295968d1SFerruh Yigit  ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM``.
624dad1ec72SFerruh Yigit
625dad1ec72SFerruh Yigit
626dad1ec72SFerruh Yigit.. _nic_features_inner_l4_checksum:
627dad1ec72SFerruh Yigit
628dad1ec72SFerruh YigitInner L4 checksum
629dad1ec72SFerruh Yigit-----------------
630dad1ec72SFerruh Yigit
631dad1ec72SFerruh YigitSupports inner packet L4 checksum.
632dad1ec72SFerruh Yigit
633295968d1SFerruh Yigit* **[uses]     rte_eth_rxconf,rte_eth_rxmode**: ``offloads:RTE_ETH_RX_OFFLOAD_OUTER_UDP_CKSUM``.
634daa02b5cSOlivier Matz* **[provides] mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN`` |
635daa02b5cSOlivier Matz  ``RTE_MBUF_F_RX_OUTER_L4_CKSUM_BAD`` | ``RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD`` | ``RTE_MBUF_F_RX_OUTER_L4_CKSUM_INVALID``.
636295968d1SFerruh Yigit* **[uses]     rte_eth_txconf,rte_eth_txmode**: ``offloads:RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM``.
637daa02b5cSOlivier Matz* **[uses]     mbuf**: ``mbuf.ol_flags:RTE_MBUF_F_TX_OUTER_IPV4`` | ``RTE_MBUF_F_TX_OUTER_IPV6``.
638daa02b5cSOlivier Matz  ``mbuf.ol_flags:RTE_MBUF_F_TX_OUTER_UDP_CKSUM``.
639df694a05SJerin Jacob* **[uses]     mbuf**: ``mbuf.outer_l2_len``, ``mbuf.outer_l3_len``.
640295968d1SFerruh Yigit* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:RTE_ETH_RX_OFFLOAD_OUTER_UDP_CKSUM``,
641295968d1SFerruh Yigit  ``tx_offload_capa,tx_queue_offload_capa:RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM``.
642ec7f7157SJerin Jacob
643dad1ec72SFerruh Yigit
644dd22740cSXueming Li.. _nic_features_shared_rx_queue:
645dd22740cSXueming Li
646dd22740cSXueming LiShared Rx queue
647dd22740cSXueming Li---------------
648dd22740cSXueming Li
649dd22740cSXueming LiSupports shared Rx queue for ports in same Rx domain of a switch domain.
650dd22740cSXueming Li
651dd22740cSXueming Li* **[uses]     rte_eth_dev_info**: ``dev_capa:RTE_ETH_DEV_CAPA_RXQ_SHARE``.
652dd22740cSXueming Li* **[uses]     rte_eth_dev_info,rte_eth_switch_info**: ``rx_domain``, ``domain_id``.
653dd22740cSXueming Li* **[uses]     rte_eth_rxconf**: ``share_group``, ``share_qid``.
654dd22740cSXueming Li* **[provides] mbuf**: ``mbuf.port``.
655dd22740cSXueming Li
656dd22740cSXueming Li
657dad1ec72SFerruh Yigit.. _nic_features_packet_type_parsing:
658dad1ec72SFerruh Yigit
659dad1ec72SFerruh YigitPacket type parsing
660dad1ec72SFerruh Yigit-------------------
661dad1ec72SFerruh Yigit
662dad1ec72SFerruh YigitSupports packet type parsing and returns a list of supported types.
6635d4813acSPavan NikhileshAllows application to set ptypes it is interested in.
664dad1ec72SFerruh Yigit
6655d4813acSPavan Nikhilesh* **[implements] eth_dev_ops**: ``dev_supported_ptypes_get``,
6665d4813acSPavan Nikhilesh* **[related]    API**: ``rte_eth_dev_get_supported_ptypes()``,
6675d4813acSPavan Nikhilesh  ``rte_eth_dev_set_ptypes()``, ``dev_ptypes_set``.
6685d4813acSPavan Nikhilesh* **[provides]   mbuf**: ``mbuf.packet_type``.
669dad1ec72SFerruh Yigit
670dad1ec72SFerruh Yigit
671dad1ec72SFerruh Yigit.. _nic_features_timesync:
672dad1ec72SFerruh Yigit
673dad1ec72SFerruh YigitTimesync
674dad1ec72SFerruh Yigit--------
675dad1ec72SFerruh Yigit
676dad1ec72SFerruh YigitSupports IEEE1588/802.1AS timestamping.
677dad1ec72SFerruh Yigit
678dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``timesync_enable``, ``timesync_disable``
679dad1ec72SFerruh Yigit  ``timesync_read_rx_timestamp``, ``timesync_read_tx_timestamp``,
680be86a682SMingjin Ye  ``timesync_adjust_time``, ``timesync_adjust_freq``,
681be86a682SMingjin Ye  ``timesync_read_time``, ``timesync_write_time``.
682dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_timesync_enable()``, ``rte_eth_timesync_disable()``,
683dad1ec72SFerruh Yigit  ``rte_eth_timesync_read_rx_timestamp()``,
684dad1ec72SFerruh Yigit  ``rte_eth_timesync_read_tx_timestamp``, ``rte_eth_timesync_adjust_time()``,
685be86a682SMingjin Ye  ``rte_eth_timesync_adjust_freq()``,
686dad1ec72SFerruh Yigit  ``rte_eth_timesync_read_time()``, ``rte_eth_timesync_write_time()``.
687dad1ec72SFerruh Yigit
688dad1ec72SFerruh Yigit
689dad1ec72SFerruh Yigit.. _nic_features_rx_descriptor_status:
690dad1ec72SFerruh Yigit
691dad1ec72SFerruh YigitRx descriptor status
692dad1ec72SFerruh Yigit--------------------
693dad1ec72SFerruh Yigit
694dad1ec72SFerruh YigitSupports check the status of a Rx descriptor. When ``rx_descriptor_status`` is
6956c31a8c2SAndrew Rybchenkoused, status can be "Available", "Done" or "Unavailable".
696dad1ec72SFerruh Yigit
697cbfc6111SFerruh Yigit* **[implements] rte_eth_dev**: ``rx_descriptor_status``.
698dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_rx_descriptor_status()``.
699dad1ec72SFerruh Yigit
700dad1ec72SFerruh Yigit
701dad1ec72SFerruh Yigit.. _nic_features_tx_descriptor_status:
702dad1ec72SFerruh Yigit
703dad1ec72SFerruh YigitTx descriptor status
704dad1ec72SFerruh Yigit--------------------
705dad1ec72SFerruh Yigit
706dad1ec72SFerruh YigitSupports checking the status of a Tx descriptor. Status can be "Full", "Done"
707dad1ec72SFerruh Yigitor "Unavailable."
708dad1ec72SFerruh Yigit
709cbfc6111SFerruh Yigit* **[implements] rte_eth_dev**: ``tx_descriptor_status``.
710dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_tx_descriptor_status()``.
711dad1ec72SFerruh Yigit
712dad1ec72SFerruh Yigit
713d4b9235fSJerin Jacob.. _nic_features_tx_queue_count:
714d4b9235fSJerin Jacob
715d4b9235fSJerin JacobTx queue count
716d4b9235fSJerin Jacob--------------
717d4b9235fSJerin Jacob
718d4b9235fSJerin JacobSupports getting the number of used descriptors of a Tx queue.
719d4b9235fSJerin Jacob
720d4b9235fSJerin Jacob* **[implements] eth_dev_ops**: ``tx_queue_count``.
721d4b9235fSJerin Jacob* **[related] API**: ``rte_eth_tx_queue_count()``.
722d4b9235fSJerin Jacob
723d4b9235fSJerin Jacob
724dad1ec72SFerruh Yigit.. _nic_features_basic_stats:
725dad1ec72SFerruh Yigit
726dad1ec72SFerruh YigitBasic stats
727dad1ec72SFerruh Yigit-----------
728dad1ec72SFerruh Yigit
729dad1ec72SFerruh YigitSupport basic statistics such as: ipackets, opackets, ibytes, obytes,
730dad1ec72SFerruh Yigitimissed, ierrors, oerrors, rx_nombuf.
731dad1ec72SFerruh Yigit
732dad1ec72SFerruh YigitThese apply to all drivers.
733dad1ec72SFerruh Yigit
734dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``stats_get``, ``stats_reset``.
735dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_stats_get``, ``rte_eth_stats_reset()``.
736dad1ec72SFerruh Yigit
737dad1ec72SFerruh Yigit
738*71eae7feSStephen Hemminger.. _nic_features_stats_per_queue:
739*71eae7feSStephen Hemminger
740*71eae7feSStephen HemmingerStats per queue
741*71eae7feSStephen Hemminger---------------
742*71eae7feSStephen Hemminger
743*71eae7feSStephen HemmingerSupports per queue stats: q_ipackets, q_opackets, q_ibytes, q_obytes, q_errors.
744*71eae7feSStephen HemmingerStatistics only supplied for first ``RTE_ETHDEV_QUEUE_STAT_CNTRS`` (16) queues.
745*71eae7feSStephen HemmingerIf driver does not support this feature the per queue stats will be zero.
746*71eae7feSStephen Hemminger
747*71eae7feSStephen Hemminger* **[implements] eth_dev_ops**: ``stats_get``, ``stats_reset``.
748*71eae7feSStephen Hemminger* **[related]    API**: ``rte_eth_stats_get``, ``rte_eth_stats_reset()``.
749*71eae7feSStephen Hemminger
750*71eae7feSStephen HemmingerMay also support configuring per-queue stat counter mapping.
751*71eae7feSStephen HemmingerUsed by some drivers to workaround HW limitations.
752*71eae7feSStephen Hemminger
753*71eae7feSStephen Hemminger* **[implements] eth_dev_ops**: ``queue_stats_mapping_set``.
754*71eae7feSStephen Hemminger* **[related]    API**: ``rte_eth_dev_set_rx_queue_stats_mapping()``,
755*71eae7feSStephen Hemminger  ``rte_eth_dev_set_tx_queue_stats_mapping()``.
756*71eae7feSStephen Hemminger
757*71eae7feSStephen Hemminger
758dad1ec72SFerruh Yigit.. _nic_features_extended_stats:
759dad1ec72SFerruh Yigit
760dad1ec72SFerruh YigitExtended stats
761dad1ec72SFerruh Yigit--------------
762dad1ec72SFerruh Yigit
763dad1ec72SFerruh YigitSupports Extended Statistics, changes from driver to driver.
764dad1ec72SFerruh Yigit
765dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``xstats_get``, ``xstats_reset``, ``xstats_get_names``.
766dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``xstats_get_by_id``, ``xstats_get_names_by_id``.
767dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_xstats_get()``, ``rte_eth_xstats_reset()``,
768dad1ec72SFerruh Yigit  ``rte_eth_xstats_get_names``, ``rte_eth_xstats_get_by_id()``,
769dad1ec72SFerruh Yigit  ``rte_eth_xstats_get_names_by_id()``, ``rte_eth_xstats_get_id_by_name()``.
770dad1ec72SFerruh Yigit
771dad1ec72SFerruh Yigit
7726b81dddbSJerin Jacob.. _nic_features_congestion_management:
7736b81dddbSJerin Jacob
7746b81dddbSJerin JacobCongestion management
7756b81dddbSJerin Jacob---------------------
7766b81dddbSJerin Jacob
7776b81dddbSJerin JacobSupports congestion management.
7786b81dddbSJerin Jacob
7796b81dddbSJerin Jacob* **[implements] eth_dev_ops**: ``cman_info_get``, ``cman_config_set``, ``cman_config_get``.
7806b81dddbSJerin Jacob* **[related]    API**: ``rte_eth_cman_info_get()``, ``rte_eth_cman_config_init()``,
7816b81dddbSJerin Jacob  ``rte_eth_cman_config_set()``, ``rte_eth_cman_config_get()``.
7826b81dddbSJerin Jacob
7836b81dddbSJerin Jacob
784a905e821SHuisong Li.. _nic_features_traffic_manager:
785a905e821SHuisong Li
786a905e821SHuisong LiTraffic manager
787a905e821SHuisong Li---------------
788a905e821SHuisong Li
789a905e821SHuisong LiSupports Traffic manager.
790a905e821SHuisong Li
791a905e821SHuisong Li* **[implements] rte_tm_ops**: ``capabilities_get``, ``shaper_profile_add``,
792a905e821SHuisong Li  ``hierarchy_commit`` and so on.
793a905e821SHuisong Li* **[related]    API**: ``rte_tm_capabilities_get()``, ``rte_tm_shaper_profile_add()``,
794a905e821SHuisong Li  ``rte_tm_hierarchy_commit()`` and so on.
795a905e821SHuisong Li
796a905e821SHuisong Li
797dad1ec72SFerruh Yigit.. _nic_features_fw_version:
798dad1ec72SFerruh Yigit
799dad1ec72SFerruh YigitFW version
800dad1ec72SFerruh Yigit----------
801dad1ec72SFerruh Yigit
802dad1ec72SFerruh YigitSupports getting device hardware firmware information.
803dad1ec72SFerruh Yigit
804dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``fw_version_get``.
805dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_fw_version_get()``.
806dad1ec72SFerruh Yigit
807dad1ec72SFerruh Yigit
808dad1ec72SFerruh Yigit.. _nic_features_eeprom_dump:
809dad1ec72SFerruh Yigit
810dad1ec72SFerruh YigitEEPROM dump
811dad1ec72SFerruh Yigit-----------
812dad1ec72SFerruh Yigit
813dad1ec72SFerruh YigitSupports getting/setting device eeprom data.
814dad1ec72SFerruh Yigit
815dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``get_eeprom_length``, ``get_eeprom``, ``set_eeprom``.
816dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_get_eeprom_length()``, ``rte_eth_dev_get_eeprom()``,
817dad1ec72SFerruh Yigit  ``rte_eth_dev_set_eeprom()``.
818dad1ec72SFerruh Yigit
819dad1ec72SFerruh Yigit
8203a18c44bSZijie Pan.. _nic_features_module_eeprom_dump:
8213a18c44bSZijie Pan
8223a18c44bSZijie PanModule EEPROM dump
8233a18c44bSZijie Pan------------------
8243a18c44bSZijie Pan
8253a18c44bSZijie PanSupports getting information and data of plugin module eeprom.
8263a18c44bSZijie Pan
8273a18c44bSZijie Pan* **[implements] eth_dev_ops**: ``get_module_info``, ``get_module_eeprom``.
8283a18c44bSZijie Pan* **[related]    API**: ``rte_eth_dev_get_module_info()``, ``rte_eth_dev_get_module_eeprom()``.
8293a18c44bSZijie Pan
8303a18c44bSZijie Pan
831dad1ec72SFerruh Yigit.. _nic_features_register_dump:
832dad1ec72SFerruh Yigit
833dad1ec72SFerruh YigitRegisters dump
834dad1ec72SFerruh Yigit--------------
835dad1ec72SFerruh Yigit
836dad1ec72SFerruh YigitSupports retrieving device registers and registering attributes (number of
837dad1ec72SFerruh Yigitregisters and register size).
838dad1ec72SFerruh Yigit
839dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``get_reg``.
840dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_dev_get_reg_info()``.
841dad1ec72SFerruh Yigit
842dad1ec72SFerruh Yigit
843dad1ec72SFerruh Yigit.. _nic_features_led:
844dad1ec72SFerruh Yigit
845dad1ec72SFerruh YigitLED
846dad1ec72SFerruh Yigit---
847dad1ec72SFerruh Yigit
848dad1ec72SFerruh YigitSupports turning on/off a software controllable LED on a device.
849dad1ec72SFerruh Yigit
850dad1ec72SFerruh Yigit* **[implements] eth_dev_ops**: ``dev_led_on``, ``dev_led_off``.
851dad1ec72SFerruh Yigit* **[related]    API**: ``rte_eth_led_on()``, ``rte_eth_led_off()``.
852dad1ec72SFerruh Yigit
853dad1ec72SFerruh Yigit
854dad1ec72SFerruh Yigit.. _nic_features_multiprocess_aware:
855dad1ec72SFerruh Yigit
856dad1ec72SFerruh YigitMultiprocess aware
857dad1ec72SFerruh Yigit------------------
858dad1ec72SFerruh Yigit
859dad1ec72SFerruh YigitDriver can be used for primary-secondary process model.
860dad1ec72SFerruh Yigit
861dad1ec72SFerruh Yigit
86204ed01f1SThomas Monjalon.. _nic_features_freebsd:
863dad1ec72SFerruh Yigit
86404ed01f1SThomas MonjalonFreeBSD
86504ed01f1SThomas Monjalon-------
866dad1ec72SFerruh Yigit
86704ed01f1SThomas MonjalonSupports running on FreeBSD.
868dad1ec72SFerruh Yigit
869dad1ec72SFerruh Yigit
87004ed01f1SThomas Monjalon.. _nic_features_linux:
871dad1ec72SFerruh Yigit
87204ed01f1SThomas MonjalonLinux
87304ed01f1SThomas Monjalon-----
874dad1ec72SFerruh Yigit
87504ed01f1SThomas MonjalonSupports running on Linux.
876dad1ec72SFerruh Yigit
877dad1ec72SFerruh Yigit
8785881b2d2STal Shnaiderman.. _nic_features_windows:
8795881b2d2STal Shnaiderman
8805881b2d2STal ShnaidermanWindows
8815881b2d2STal Shnaiderman-------
8825881b2d2STal Shnaiderman
88304ed01f1SThomas MonjalonSupports running on Windows.
8845881b2d2STal Shnaiderman
8855881b2d2STal Shnaiderman
886dad1ec72SFerruh Yigit.. _nic_features_armv7:
887dad1ec72SFerruh Yigit
888dad1ec72SFerruh YigitARMv7
889dad1ec72SFerruh Yigit-----
890dad1ec72SFerruh Yigit
891dad1ec72SFerruh YigitSupport armv7 architecture.
892dad1ec72SFerruh Yigit
893dad1ec72SFerruh Yigit
894dad1ec72SFerruh Yigit.. _nic_features_armv8:
895dad1ec72SFerruh Yigit
896dad1ec72SFerruh YigitARMv8
897dad1ec72SFerruh Yigit-----
898dad1ec72SFerruh Yigit
899dad1ec72SFerruh YigitSupport armv8a (64bit) architecture.
900dad1ec72SFerruh Yigit
901dad1ec72SFerruh Yigit
90229631ee5SMin Zhou.. _nic_features_loongarch64:
90329631ee5SMin Zhou
90429631ee5SMin ZhouLoongArch64
90529631ee5SMin Zhou-----------
90629631ee5SMin Zhou
90729631ee5SMin ZhouSupport 64-bit LoongArch architecture.
90829631ee5SMin Zhou
90929631ee5SMin Zhou
910dad1ec72SFerruh Yigit.. _nic_features_power8:
911dad1ec72SFerruh Yigit
912dad1ec72SFerruh YigitPower8
913dad1ec72SFerruh Yigit------
914dad1ec72SFerruh Yigit
915dad1ec72SFerruh YigitSupport PowerPC architecture.
916dad1ec72SFerruh Yigit
917dad1ec72SFerruh Yigit
918dad1ec72SFerruh Yigit.. _nic_features_x86-32:
919dad1ec72SFerruh Yigit
920f22e705eSMichal Mazurekrv64
921f22e705eSMichal Mazurek----
922f22e705eSMichal Mazurek
923f22e705eSMichal MazurekSupport 64-bit RISC-V architecture.
924f22e705eSMichal Mazurek
925f22e705eSMichal Mazurek
926dad1ec72SFerruh Yigitx86-32
927dad1ec72SFerruh Yigit------
928dad1ec72SFerruh Yigit
929dad1ec72SFerruh YigitSupport 32bits x86 architecture.
930dad1ec72SFerruh Yigit
931dad1ec72SFerruh Yigit
932dad1ec72SFerruh Yigit.. _nic_features_x86-64:
933dad1ec72SFerruh Yigit
934dad1ec72SFerruh Yigitx86-64
935dad1ec72SFerruh Yigit------
936dad1ec72SFerruh Yigit
937dad1ec72SFerruh YigitSupport 64bits x86 architecture.
938dad1ec72SFerruh Yigit
939dad1ec72SFerruh Yigit.. _nic_features_usage_doc:
940dad1ec72SFerruh Yigit
941dad1ec72SFerruh YigitUsage doc
942dad1ec72SFerruh Yigit---------
943dad1ec72SFerruh Yigit
944dad1ec72SFerruh YigitDocumentation describes usage.
945dad1ec72SFerruh Yigit
946dad1ec72SFerruh YigitSee ``doc/guides/nics/*.rst``
947dad1ec72SFerruh Yigit
948dad1ec72SFerruh Yigit
949dad1ec72SFerruh Yigit.. _nic_features_design_doc:
950dad1ec72SFerruh Yigit
951dad1ec72SFerruh YigitDesign doc
952dad1ec72SFerruh Yigit----------
953dad1ec72SFerruh Yigit
954dad1ec72SFerruh YigitDocumentation describes design.
955dad1ec72SFerruh Yigit
956dad1ec72SFerruh YigitSee ``doc/guides/nics/*.rst``.
957dad1ec72SFerruh Yigit
958dad1ec72SFerruh Yigit
959dad1ec72SFerruh Yigit.. _nic_features_perf_doc:
960dad1ec72SFerruh Yigit
961dad1ec72SFerruh YigitPerf doc
962dad1ec72SFerruh Yigit--------
963dad1ec72SFerruh Yigit
964dad1ec72SFerruh YigitDocumentation describes performance values.
965dad1ec72SFerruh Yigit
966dad1ec72SFerruh YigitSee ``dpdk.org/doc/perf/*``.
967dad1ec72SFerruh Yigit
968cac923cfSQi Zhang.. _nic_features_runtime_rx_queue_setup:
969dad1ec72SFerruh Yigit
970cac923cfSQi ZhangRuntime Rx queue setup
971cac923cfSQi Zhang----------------------
972cac923cfSQi Zhang
973cac923cfSQi ZhangSupports Rx queue setup after device started.
974cac923cfSQi Zhang
975cac923cfSQi Zhang* **[provides] rte_eth_dev_info**: ``dev_capa:RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP``.
976cac923cfSQi Zhang* **[related]  API**: ``rte_eth_dev_info_get()``.
977cac923cfSQi Zhang
978cac923cfSQi Zhang.. _nic_features_runtime_tx_queue_setup:
979cac923cfSQi Zhang
980cac923cfSQi ZhangRuntime Tx queue setup
981cac923cfSQi Zhang----------------------
982cac923cfSQi Zhang
983cac923cfSQi ZhangSupports Tx queue setup after device started.
984cac923cfSQi Zhang
985cac923cfSQi Zhang* **[provides] rte_eth_dev_info**: ``dev_capa:RTE_ETH_DEV_CAPA_RUNTIME_TX_QUEUE_SETUP``.
986cac923cfSQi Zhang* **[related]  API**: ``rte_eth_dev_info_get()``.
987dad1ec72SFerruh Yigit
988eb590250SHaiyue Wang.. _nic_features_burst_mode_info:
989eb590250SHaiyue Wang
990eb590250SHaiyue WangBurst mode info
991eb590250SHaiyue Wang---------------
992eb590250SHaiyue Wang
993eb590250SHaiyue WangSupports to get Rx/Tx packet burst mode information.
994eb590250SHaiyue Wang
995eb590250SHaiyue Wang* **[implements] eth_dev_ops**: ``rx_burst_mode_get``, ``tx_burst_mode_get``.
9968dedb546SHaiyue Wang* **[related] API**: ``rte_eth_rx_burst_mode_get()``, ``rte_eth_tx_burst_mode_get()``.
997eb590250SHaiyue Wang
99876e6f99cSAnatoly Burakov.. _nic_features_get_monitor_addr:
99976e6f99cSAnatoly Burakov
100076e6f99cSAnatoly BurakovPMD power management using monitor addresses
100176e6f99cSAnatoly Burakov--------------------------------------------
100276e6f99cSAnatoly Burakov
100376e6f99cSAnatoly BurakovSupports getting a monitoring condition to use together with Ethernet PMD power
100476e6f99cSAnatoly Burakovmanagement (see :doc:`../prog_guide/power_man` for more details).
100576e6f99cSAnatoly Burakov
100676e6f99cSAnatoly Burakov* **[implements] eth_dev_ops**: ``get_monitor_addr``
100776e6f99cSAnatoly Burakov
1008dad1ec72SFerruh Yigit.. _nic_features_other:
1009dad1ec72SFerruh Yigit
1010dad1ec72SFerruh YigitOther dev ops not represented by a Feature
1011dad1ec72SFerruh Yigit------------------------------------------
1012dad1ec72SFerruh Yigit
1013dad1ec72SFerruh Yigit* ``rxq_info_get``
1014dad1ec72SFerruh Yigit* ``txq_info_get``
1015dad1ec72SFerruh Yigit* ``vlan_tpid_set``
1016dad1ec72SFerruh Yigit* ``vlan_strip_queue_set``
1017dad1ec72SFerruh Yigit* ``vlan_pvid_set``
1018dad1ec72SFerruh Yigit* ``rx_queue_count``
1019dad1ec72SFerruh Yigit* ``uc_hash_table_set``
1020dad1ec72SFerruh Yigit* ``uc_all_hash_table_set``
1021dad1ec72SFerruh Yigit* ``udp_tunnel_port_add``
1022dad1ec72SFerruh Yigit* ``udp_tunnel_port_del``
1023dad1ec72SFerruh Yigit* ``tx_pkt_prepare``
1024