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