[dpdk-dev] [RFC] doc: document NIC features

Ferruh Yigit ferruh.yigit at intel.com
Mon May 15 18:37:11 CEST 2017


Document NIC features, add more information about them and add more
implementation related support.

TODO:
- Not all features all fully documented, need help from community

- Instead of having a new file, it would be nice to auto generate this
file from defaults.ini, and perhaps add extra information as comment to
that file.

- Some features are implementing eth_dev_ops and some are updates in
Rx/Tx path. These features can be grouped together.

- A link from overview file per feature would be nice.

Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com>
---
 doc/guides/nics/overview_features.rst | 396 ++++++++++++++++++++++++++++++++++
 1 file changed, 396 insertions(+)
 create mode 100644 doc/guides/nics/overview_features.rst

diff --git a/doc/guides/nics/overview_features.rst b/doc/guides/nics/overview_features.rst
new file mode 100644
index 0000000..26c83b6
--- /dev/null
+++ b/doc/guides/nics/overview_features.rst
@@ -0,0 +1,396 @@
+..  BSD LICENSE
+    Copyright(c) 2017 Intel Corporation. All rights reserved.
+    All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+    * Neither the name of Intel Corporation nor the names of its
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Overview features
+=================
+
+Speed capabilities
+------------------
+eth_dev_ops: dev_infos_get:speed_capa
+
+Driver advertise the speed capabilities that the current device capable to offer.
+
+
+Link status
+-----------
+eth_dev_ops: link_update
+
+
+Link status event
+-----------------
+rte_pci_driver.drv_flags = RTE_PCI_DRV_INTR_LSC
+
+
+Removal event
+-------------
+rte_pci_driver.drv_flags = RTE_PCI_DRV_INTR_RMV
+
+
+Queue status event
+------------------
+eth_dev_ops: link_update
+
+
+Rx interrupt
+------------
+eth_dev_ops: rx_queue_intr_enable, rx_queue_intr_disable
+
+
+Free Tx mbuf on demand
+----------------------
+eth_dev_ops: tx_done_cleanup
+
+
+Queue start/stop
+----------------
+eth_dev_ops: rx_queue_start, rx_queue_stop, tx_queue_start, tx_queue_stop
+
+
+MTU update
+----------
+eth_dev_ops: mtu_set
+
+
+Jumbo frame
+-----------
+
+
+Scattered Rx
+------------
+
+
+LRO
+---
+Large Receive Offload.
+
+
+TSO
+---
+TCP Segmentation Offloading.
+
+
+Promiscuous mode
+----------------
+eth_dev_ops: promiscuous_enable, promiscuous_disable
+
+
+Allmulticast mode
+-----------------
+eth_dev_ops: allmulticast_enable, allmulticast_disable
+
+
+Unicast MAC filter
+------------------
+eth_dev_ops: mac_addr_add, mac_addr_remove
+
+
+Multicast MAC filter
+--------------------
+eth_dev_ops: set_mc_addr_list
+
+
+RSS hash
+--------
+eth_dev_ops: rss_hash_update, rss_hash_conf_get
+
+
+RSS key update
+--------------
+eth_dev_ops: rss_hash_update, rss_hash_conf_get
+
+
+RSS reta update
+---------------
+eth_dev_ops: reta_update, reta_query
+
+
+VMDq
+----
+
+
+SR-IOV
+------
+
+
+DCB
+---
+eth_dev_ops: get_dcb_info
+
+
+VLAN filter
+-----------
+eth_dev_ops: vlan_filter_set
+
+
+Ethertype filter
+----------------
+eth_dev_ops: filter_ctrl:RTE_ETH_FILTER_ETHERTYPE
+
+
+N-tuple filter
+--------------
+eth_dev_ops: filter_ctrl:RTE_ETH_FILTER_NTUPLE
+
+
+SYN filter
+----------
+eth_dev_ops: filter_ctrl:RTE_ETH_FILTER_SYN
+
+
+Tunnel filter
+-------------
+eth_dev_ops: filter_ctrl:RTE_ETH_FILTER_TUNNEL
+
+
+Flexible filter
+---------------
+eth_dev_ops: filter_ctrl:RTE_ETH_FILTER_FLEXIBLE
+
+
+Hash filter
+-----------
+eth_dev_ops: filter_ctrl:RTE_ETH_FILTER_HASH
+
+
+Flow director
+-------------
+eth_dev_ops: filter_ctrl:RTE_ETH_FILTER_FDIR
+
+
+Flow control
+------------
+eth_dev_ops: flow_ctrl_get, flow_ctrl_set, priority_flow_ctrl_set
+
+
+Flow API
+--------
+eth_dev_ops: filter_ctrl:RTE_ETH_FILTER_GENERIC
+rte_flow_ops: *
+
+
+Rate limitation
+---------------
+eth_dev_ops: set_queue_rate_limit
+
+
+Traffic mirroring
+-----------------
+eth_dev_ops: mirror_rule_set, mirror_rule_reset
+
+
+CRC offload
+-----------
+
+
+VLAN offload
+------------
+eth_dev_ops: vlan_offload_set
+
+
+QinQ offload
+------------
+
+
+L3 checksum offload
+-------------------
+
+
+L4 checksum offload
+-------------------
+
+
+MACsec offload
+--------------
+
+
+Inner L3 checksum
+-----------------
+
+
+Inner L4 checksum
+-----------------
+
+
+Packet type parsing
+-------------------
+eth_dev_ops: dev_supported_ptypes_get
+
+
+Timesync
+--------
+eth_dev_ops: timesync_enable, timesync_disable
+eth_dev_ops: timesync_read_rx_timestamp, timesync_read_tx_timestamp
+eth_dev_ops: timesync_adjust_time, timesync_read_time, timesync_write_time
+
+
+
+Rx descriptor status
+--------------------
+eth_dev_ops: rx_descriptor_status
+
+Check the status of a Rx descriptor.
+
+
+Tx descriptor status
+--------------------
+eth_dev_ops: tx_descriptor_status
+
+Check the status of a Tx descriptor.
+
+
+Basic stats
+-----------
+eth_dev_ops: stats_get, stats_reset
+
+Basic statistics, same for all drivers.
+
+
+Extended stats
+--------------
+eth_dev_ops: xstats_get, xstats_reset, xstats_get_names
+eth_dev_ops: xstats_get_by_id, xstats_get_names_by_id
+
+Extended statistics, changes from driver to driver.
+
+
+Stats per queue
+---------------
+eth_dev_ops: queue_stats_mapping_set
+
+
+FW version
+----------
+eth_dev_ops: fw_version_get
+
+
+EEPROM dump
+-----------
+eth_dev_ops: get_eeprom_length, get_eeprom, set_eeprom
+
+
+Registers dump
+--------------
+eth_dev_ops: get_reg
+
+
+Multiprocess aware
+------------------
+
+
+BSD nic_uio
+-----------
+
+
+Linux UIO
+---------
+Works with igb_uio kernel module.
+
+
+Linux VFIO
+----------
+Works with vfio-pci kernel module.
+
+
+Other kdrv
+----------
+
+
+ARMv7
+-----
+defconfig_arm-armv7a-\*-\*
+
+Support armv7 architecture.
+
+
+ARMv8
+-----
+defconfig_arm64-armv8a-\*-\*
+
+Support armv7 architecture.
+
+
+Power8
+------
+defconfig_ppc_64-power8-\*-\*
+
+Support PowerPC architecture.
+
+
+x86-32
+------
+defconfig_x86_x32-native-\*-\*
+defconfig_i686-native-\*-\*
+
+Support 32bits x86 architecture.
+
+
+x86-64
+------
+defconfig_x86_64-native-\*-\*
+
+Support 64bits x86 architecture.
+
+
+Usage doc
+---------
+doc/guides/nics/\*.rst
+
+
+Design doc
+----------
+
+
+Perf doc
+--------
+
+Other dev ops not represented by a Feature
+------------------------------------------
+rxq_info_get
+txq_info_get
+vlan_tpid_set
+vlan_strip_queue_set
+vlan_pvid_set
+rx_queue_setup
+rx_queue_release
+rx_queue_count
+rx_descriptor_done
+tx_queue_setup
+tx_queue_release
+dev_led_on
+dev_led_off
+l2_tunnel_offload_set
+uc_hash_table_set
+uc_all_hash_table_set
+udp_tunnel_port_add
+udp_tunnel_port_del
+l2_tunnel_eth_type_conf
+l2_tunnel_offload_set
+bypass\*
+
-- 
2.9.3



More information about the dev mailing list