X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fnics%2Fenic.rst;h=4e7629c5cd69f2264b7f2fabbb1eecdbc640387a;hb=cb299214a6cfa5b3bf4fdddf369ef028ae376c27;hp=fbc001d222125bd22f5bdab77260518a85153424;hpb=c02a96fc4aec932ef3af69f0df3bd4359ef8b375;p=dpdk.git diff --git a/doc/guides/nics/enic.rst b/doc/guides/nics/enic.rst index fbc001d222..4e7629c5cd 100644 --- a/doc/guides/nics/enic.rst +++ b/doc/guides/nics/enic.rst @@ -14,19 +14,12 @@ How to obtain ENIC PMD integrated DPDK -------------------------------------- ENIC PMD support is integrated into the DPDK suite. dpdk-.tar.gz -should be downloaded from http://core.dpdk.org/download/ +should be downloaded from https://core.dpdk.org/download/ Configuration information ------------------------- -- **DPDK Configuration Parameters** - - The following configuration options are available for the ENIC PMD: - - - **CONFIG_RTE_LIBRTE_ENIC_PMD** (default y): Enables or disables inclusion - of the ENIC PMD driver in the DPDK compilation. - - **vNIC Configuration Parameters** - **Number of Queues** @@ -187,7 +180,7 @@ or ``vfio`` in non-IOMMU mode. In the VM, the kernel enic driver may be automatically bound to the VF during boot. Unbinding it currently hangs due to a known issue with the driver. To -work around the issue, blacklist the enic module as follows. +work around the issue, block the enic module as follows. Please see :ref:`Limitations ` for limitations in the use of SR-IOV. @@ -248,6 +241,15 @@ selected via CIMC or UCSM followed by a reboot of the server. - Selectors: 'is', 'spec' and 'mask'. 'last' is not supported - In total, up to 64 bytes of mask is allowed across all headers +- **1400 and later series VICs with Flow Manager API enabled** + + - Attributes: ingress, egress + - Items: eth, vlan, ipv4, ipv6, sctp, udp, tcp, vxlan, raw, inner eth, vlan, ipv4, ipv6, sctp, udp, tcp + - Ingress Actions: count, drop, flag, jump, mark, port_id, passthru, queue, rss, vxlan_decap, vxlan_encap, and void + - Egress Actions: count, drop, jump, passthru, vxlan_encap, and void + - Selectors: 'is', 'spec' and 'mask'. 'last' is not supported + - In total, up to 64 bytes of mask is allowed across all headers + The VIC performs packet matching after applying VLAN strip. If VLAN stripping is enabled, EtherType in the ETH item corresponds to the stripped VLAN header's EtherType. Stripping does not affect the VLAN @@ -303,7 +305,7 @@ enables overlay offload, it prints the following message on the console. By default, PMD enables overlay offload if hardware supports it. To disable it, set ``devargs`` parameter ``disable-overlay=1``. For example:: - -w 12:00.0,disable-overlay=1 + -a 12:00.0,disable-overlay=1 By default, the NIC uses 4789 as the VXLAN port. The user may change it through ``rte_eth_dev_udp_tunnel_port_{add,delete}``. However, as @@ -369,7 +371,7 @@ vectorized handler, take the following steps. PMD consider the vectorized handler when selecting the receive handler. For example:: - -w 12:00.0,enable-avx2-rx=1 + -a 12:00.0,enable-avx2-rx=1 As the current implementation is intended for field trials, by default, the vectorized handler is not considered (``enable-avx2-rx=0``). @@ -386,6 +388,31 @@ vectorized handler is selected, enable debug logging enic_use_vector_rx_handler use the non-scatter avx2 Rx handler +64B Completion Queue Entry +-------------------------- + +Recent VIC adapters support 64B completion queue entries, as well as +16B entries that are available on all adapter models. ENIC PMD enables +and uses 64B entries by default, if available. 64B entries generally +lower CPU cycles per Rx packet, as they avoid partial DMA writes and +reduce cache contention between DMA and polling CPU. The effect is +most pronounced when multiple Rx queues are used on Intel platforms +with Data Direct I/O Technology (DDIO). + +If 64B entries are not available, PMD uses 16B entries. The user may +explicitly disable 64B entries and use 16B entries by setting +``devarg`` parameter ``cq64=0``. For example:: + + -a 12:00.0,cq64=0 + +To verify the selected entry size, enable debug logging +(``--log-level=enic,debug``) and check the following messages. + +.. code-block:: console + + PMD: rte_enic_pmd: Supported CQ entry sizes: 16 32 + PMD: rte_enic_pmd: Using 16B CQ entry size + .. _enic_limitations: Limitations @@ -418,7 +445,7 @@ DPDK as untagged packets. In this case mbuf->vlan_tci and the PKT_RX_VLAN and PKT_RX_VLAN_STRIPPED mbuf flags would not be set. This mode is enabled with the ``devargs`` parameter ``ig-vlan-rewrite=untag``. For example:: - -w 12:00.0,ig-vlan-rewrite=untag + -a 12:00.0,ig-vlan-rewrite=untag - **SR-IOV** @@ -428,7 +455,7 @@ PKT_RX_VLAN_STRIPPED mbuf flags would not be set. This mode is enabled with the - VF devices are not usable directly from the host. They can only be used as assigned devices on VM instances. - Currently, unbind of the ENIC kernel mode driver 'enic.ko' on the VM - instance may hang. As a workaround, enic.ko should be blacklisted or removed + instance may hang. As a workaround, enic.ko should be blocked or removed from the boot process. - pci_generic cannot be used as the uio module in the VM. igb_uio or vfio in non-IOMMU mode can be used. @@ -450,6 +477,10 @@ PKT_RX_VLAN_STRIPPED mbuf flags would not be set. This mode is enabled with the packets and then receive them normally. These require 1400 series VIC adapters and latest firmware. - RAW items are limited to matching UDP tunnel headers like VXLAN. + - For 1400 VICs, all flows using the RSS action on a port use same hash + configuration. The RETA is ignored. The queues used in the RSS group must be + sequential. There is a performance hit if the number of queues is not a power of 2. + Only level 0 (outer header) RSS is allowed. - **Statistics** @@ -570,11 +601,6 @@ The value depends on the memory configuration of the application, DPDK and PMD. Typically, the limit has to be raised to higher than 2GB. e.g., 2621440 -The compilation of any unused drivers can be disabled using the -configuration file in config/ directory (e.g., config/common_linux). -This would help in bringing down the time taken for building the -libraries and the initialization time of the application. - Additional Reference --------------------