From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ferruh Yigit Subject: [RFC] doc: document NIC features Date: Mon, 15 May 2017 17:37:11 +0100 Message-ID: <20170515163711.8796-1-ferruh.yigit@intel.com> Cc: dev@dpdk.org, Ferruh Yigit To: Thomas Monjalon , John McNamara Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 89904234 for ; Mon, 15 May 2017 18:37:16 +0200 (CEST) List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- 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