From 32e04ea00cd159613e04acef75e52bfca6eeff2f Mon Sep 17 00:00:00 2001 From: Christian Ehrhardt Date: Mon, 5 Dec 2016 11:42:44 +0100 Subject: Imported Upstream version 16.07.2 Change-Id: I76bc313e0942233ce259612069ded302dd6c87bb Signed-off-by: Christian Ehrhardt --- doc/guides/nics/enic.rst | 53 ++++++++++- doc/guides/nics/i40e.rst | 48 ++++++++++ doc/guides/nics/mlx5.rst | 3 +- doc/guides/rel_notes/release_16_07.rst | 141 ++++++++++++++++++++++++++++ doc/guides/testpmd_app_ug/testpmd_funcs.rst | 3 +- 5 files changed, 240 insertions(+), 8 deletions(-) (limited to 'doc') diff --git a/doc/guides/nics/enic.rst b/doc/guides/nics/enic.rst index 42e781e3..26692022 100644 --- a/doc/guides/nics/enic.rst +++ b/doc/guides/nics/enic.rst @@ -59,11 +59,31 @@ Configuration information - **Number of Queues** - The maximum number of receive and transmit queues are configurable on a per - vNIC basis through the Cisco UCS Manager (CIMC or UCSM). These values - should be configured to be greater than or equal to the nb_rx_q and nb_tx_q - parameters expected to used in the call to the rte_eth_dev_configure() - function. + The maximum number of receive queues (RQs), work queues (WQs) and + completion queues (CQs) are configurable on a per vNIC basis + through the Cisco UCS Manager (CIMC or UCSM). + + These values should be configured as follows: + + - The number of WQs should be greater or equal to the value of the + expected nb_tx_q parameter in the call to the + rte_eth_dev_configure() + + - The number of RQs configured in the vNIC should be greater or + equal to *twice* the value of the expected nb_rx_q parameter in + the call to rte_eth_dev_configure(). With the addition of rx + scatter, a pair of RQs on the vnic is needed for each receive + queue used by DPDK, even if rx scatter is not being used. + Having a vNIC with only 1 RQ is not a valid configuration, and + will fail with an error message. + + - The number of CQs should set so that there is one CQ for each + WQ, and one CQ for each pair of RQs. + + For example: If the application requires 3 Rx queues, and 3 Tx + queues, the vNIC should be configured to have at least 3 WQs, 6 + RQs (3 pairs), and 6 CQs (3 for use by WQs + 3 for use by the 3 + pairs of RQs). - **Size of Queues** @@ -71,6 +91,29 @@ Configuration information a per vNIC bases via the UCS Manager and should be greater than or equal to the nb_rx_desc and nb_tx_desc parameters expected to be used in the calls to rte_eth_rx_queue_setup() and rte_eth_tx_queue_setup() respectively. + An application requesting more than the set size will be limited to that + size. + + Unless there is a lack of resources due to creating many vNICs, it + is recommended that the WQ and RQ sizes be set to the maximum. This + gives the application the greatest amount of flexibility in its + queue configuration. + + - *Note*: Since the introduction of rx scatter, for performance + reasons, this PMD uses two RQs on the vNIC per receive queue in + DPDK. One RQ holds descriptors for the start of a packet the + second RQ holds the descriptors for the rest of the fragments of + a packet. This means that the nb_rx_desc parameter to + rte_eth_rx_queue_setup() can be a greater than 4096. The exact + amount will depend on the size of the mbufs being used for + receives, and the MTU size. + + For example: If the mbuf size is 2048, and the MTU is 9000, then + receiving a full size packet will take 5 descriptors, 1 from the + start of packet queue, and 4 from the second queue. Assuming + that the RQ size was set to the maximum of 4096, then the + application can specify up to 1024 + 4096 as the nb_rx_desc + parameter to rte_eth_rx_queue_setup(). - **Interrupts** diff --git a/doc/guides/nics/i40e.rst b/doc/guides/nics/i40e.rst index 4d12b10c..5780268f 100644 --- a/doc/guides/nics/i40e.rst +++ b/doc/guides/nics/i40e.rst @@ -411,3 +411,51 @@ configuration passed on the EAL command line. The floating VEB functionality requires a NIC firmware version of 5.0 or greater. + + +Limitations or Known issues +--------------------------- + +MPLS packet classification on X710/XL710 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For firmware versions prior to 5.0, MPLS packets are not recognized by the NIC. +The L2 Payload flow type in flow director can be used to classify MPLS packet +by using a command in testpmd like: + + testpmd> flow_director_filter 0 mode IP add flow l2_payload ether \ + 0x8847 flexbytes () fwd pf queue fd_id + +With the NIC firmware version 5.0 or greater, some limited MPLS support +is added: Native MPLS (MPLS in Ethernet) skip is implemented, while no +new packet type, no classification or offload are possible. With this change, +L2 Payload flow type in flow director cannot be used to classify MPLS packet +as with previous firmware versions. Meanwhile, the Ethertype filter can be +used to classify MPLS packet by using a command in testpmd like: + + testpmd> ethertype_filter 0 add mac_ignr 00:00:00:00:00:00 ethertype \ + 0x8847 fwd queue + +16 Byte Descriptor cannot be used on DPDK VF +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If the Linux i40e kernel driver is used as host driver, while DPDK i40e PMD +is used as the VF driver, DPDK cannot choose 16 byte receive descriptor. That +is to say, user should keep ``CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n`` in +config file. + +Link down with i40e kernel driver after DPDK application exist +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +After DPDK application quit, and the device is bound back to Linux i40e +kernel driver, the link cannot be up after ``ifconfig up``. +To work around this issue, ``ethtool -s autoneg on`` should be +set first and then the link can be brought up through ``ifconfig up``. + +NOTE: requires Linux kernel i40e driver version >= 1.4.X + +Receive packets with Ethertype 0x88A8 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Due to the FW limitation, PF can receive packets with Ethertype 0x88A8 +only when floating VEB is disabled. diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index 5c10cd34..89231738 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -84,7 +84,8 @@ Features - Promiscuous mode. - Multicast promiscuous mode. - Hardware checksum offloads. -- Flow director (RTE_FDIR_MODE_PERFECT and RTE_FDIR_MODE_PERFECT_MAC_VLAN). +- Flow director (RTE_FDIR_MODE_PERFECT, RTE_FDIR_MODE_PERFECT_MAC_VLAN and + RTE_ETH_FDIR_REJECT). - Secondary process TX is supported. - KVM and VMware ESX SR-IOV modes are supported. diff --git a/doc/guides/rel_notes/release_16_07.rst b/doc/guides/rel_notes/release_16_07.rst index a8a3fc11..4d6e0d50 100644 --- a/doc/guides/rel_notes/release_16_07.rst +++ b/doc/guides/rel_notes/release_16_07.rst @@ -548,3 +548,144 @@ Tested OSes - Ubuntu 16.04 LTS - Wind River Linux 8 +Fixes in Stable Release +----------------------- + +16.07.1 +~~~~~~~ + +The following fixes were applied in DPDK 16.07.01 Stable Release: + +* app/test: fix verification of digest for GCM +* app/testpmd: fix crash when mempool allocation fails +* app/testpmd: fix help of MTU set commmand +* app/testpmd: fix timeout in Rx queue flushing +* contigmem: zero all pages during mmap +* crypto/null: fix key size increment value +* crypto/qat: fix FreeBSD build +* crypto: fix build with icc +* examples/ip_pipeline: fix Python interpreter +* examples/ip_pipeline: fix lcore mapping for ppc64 +* hash: fix false zero signature key hit lookup +* hash: fix ring size +* mbuf: fix error handling on pool creation +* mem: fix build with -O1 +* mem: fix crash on hugepage mapping error +* mempool: fix corruption due to invalid handler +* net/e1000: fix returned number of available Rx descriptors +* net/enic: fix bad L4 checksum flag on ICMP packets +* net/enic: fix freeing memory for descriptor ring +* net/fm10k: fix MAC address removal from switch +* net/i40e/base: fix UDP packet header +* net/i40e: fix dropping packets with ethertype 0x88A8 +* net/i40e: fix mbuf leak during Rx queue release +* net/i40e: fix null pointer dereferences when using VMDq+RSS +* net/i40e: fix parsing QinQ packets type +* net/ixgbe/base: fix check for NACK +* net/ixgbe/base: fix pointer check +* net/ixgbe/base: fix possible corruption of shadow RAM +* net/ixgbe/base: fix skipping PHY config +* net/ixgbe: fix VF reset to apply to correct VF +* net/ixgbe: fix mbuf leak during Rx queue release +* net/mlx: fix debug build with gcc 6.1 +* net/nfp: fix copying MAC address +* net/pcap: fix memory leak in jumbo frames +* net/virtio: fix xstats name +* net/virtio_user: fix error management during init +* net/virtio_user: fix first queue pair without multiqueue +* net/virtio_user: fix wrong sequence of messages +* pci: fix memory leak when detaching device +* pmdinfogen: fix clang build +* sched: fix releasing enqueued packets +* table: fix symbol exports +* timer: fix lag delay +* tools: fix json output of pmdinfo +* tools: fix virtio interface name when binding + + +16.07.2 +~~~~~~~ + +* app/procinfo: free xstats memory upon failure +* app/test: fix hash multiwriter sequence +* app/testpmd: fix DCB configuration +* app/testpmd: fix DCB configuration +* app/testpmd: fix PF/VF check of flow director +* app/testpmd: fix RSS hash key size +* app/testpmd: fix flow director endianness +* app/testpmd: fix flow director mask +* doc: add limitations for i40e PMD +* eal/arm: fix file descriptor leak when getting CPU features +* eal/ppc: fix file descriptor leak when getting CPU features +* ethdev: fix vendor id in debug message +* ethdev: prevent duplicate event callback +* examples/ip_pipeline: fix plugin loading +* examples/ipsec-secgw: check SP only when setup +* examples/l2fwd-crypto: fix verify with decrypt in chain +* examples/qos_sched: fix dequeue from ring +* examples/tep_term: fix L4 length +* examples/tep_term: fix packet length with multi-segments +* hash: fix bucket size usage +* hash: fix unlimited cuckoo path +* kni: fix build with kernel 4.8 +* kni: fix build with kernel 4.9 +* lpm: fix freeing memory +* lpm: fix freeing unused sub-table on rule delete +* mempool: fix leak if populate fails +* mempool: fix search of maximum contiguous pages +* net/bnx2x: fix build with icc +* net/bnx2x: fix maximum PF queues +* net/bnx2x: fix socket id for slowpath memory +* net/bnxt: ensure entry length is unsigned +* net/bnxt: fix bit shift size +* net/bnxt: fix crash when closing +* net/bonding: validate speed after link up +* net/ena: improve safety of string handling +* net/enic: document how to configure vNIC parameters +* net/enic: fix Rx queue index when not using Rx scatter +* net/enic: fix crash on MTU update or Rx queue reconfigure +* net/enic: fix crash with removed flow director filters +* net/enic: fix flow director +* net/enic: fix max packet length check +* net/enic: fix multi-queue Rx performance +* net/enic: revert truncated packets counter fix +* net/fm10k: fix Rx checksum flags +* net/fm10k: fix VF Tx queue initialization +* net/fm10k: fix out of order Rx read +* net/i40e: do not use VSI before NULL check +* net/i40e: fix DCB configuration +* net/i40e: fix Rx hang when disable LLDP +* net/i40e: fix VF bonded device link down +* net/i40e: fix floating VEB +* net/i40e: fix hash filter on X722 +* net/i40e: fix link status change interrupt +* net/i40e: fix out of order Rx read +* net/i40e: fixed build error with icc +* net/ixgbe: fix VF registers +* net/ixgbe: fix flow director mask +* net/ixgbe: fix out of order Rx read +* net/mlx5: fix Rx VLAN offload capability report +* net/mlx5: fix Rx checksum macros +* net/mlx5: fix Rx function selection +* net/mlx5: fix flow director drop mode +* net/mlx5: fix handling of small mbuf sizes +* net/mlx5: fix hash key size retrieval +* net/mlx5: fix inconsistent return value in flow director +* net/mlx5: fix initialization in secondary process +* net/mlx5: fix inline logic +* net/mlx5: fix link speed capability information +* net/mlx5: fix link status report +* net/mlx5: fix possible NULL dereference in Rx path +* net/mlx5: fix removing VLAN filter +* net/mlx5: fix support for newer link speeds +* net/mlx5: re-factorize functions +* net/mlx5: refactor allocation of flow director queues +* net/mlx5: support Mellanox OFED 3.4 +* net/qede/base: fix 32-bit build +* net/ring: fix ring device creation via devargs +* net/thunderx: fix Tx checksum handling +* net/virtio: revert fix restart +* net/vmxnet3: fix mbuf release on reset/stop +* pci: fix probing error if no driver found +* pdump: fix created directory permissions +* vhost: fix Windows VM hang diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index f87e0c29..ed04532a 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -1844,8 +1844,7 @@ Set flow director's input masks:: src_mask (ipv4_src) (ipv6_src) (src_port) \ dst_mask (ipv4_dst) (ipv6_dst) (dst_port) - flow_director_mask (port_id) mode MAC-VLAN vlan (vlan_value) \ - mac (mac_value) + flow_director_mask (port_id) mode MAC-VLAN vlan (vlan_value) flow_director_mask (port_id) mode Tunnel vlan (vlan_value) \ mac (mac_value) tunnel-type (tunnel_type_value) \ -- cgit 1.2.3-korg