X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fnics%2Fi40e.rst;h=0cc9268ad54958d4e86a1403184102615ef1afb6;hb=9ba3d0ae2090;hp=4019b41bd6ee2fb8241cb2944692c775b1fb0cc0;hpb=21fefd1c714f9b4ec088d6f4ac9d706daa45c95a;p=dpdk.git diff --git a/doc/guides/nics/i40e.rst b/doc/guides/nics/i40e.rst index 4019b41bd6..0cc9268ad5 100644 --- a/doc/guides/nics/i40e.rst +++ b/doc/guides/nics/i40e.rst @@ -164,13 +164,13 @@ devices managed by ``librte_pmd_i40e`` in the Linux operating system. .. code-block:: console - ./tools/dpdk_nic_bind.py --bind igb_uio 0000:83:00.0 + ./usertools/dpdk-devbind.py --bind igb_uio 0000:83:00.0 Or setup VFIO permissions for regular users and then bind to ``vfio-pci``: .. code-block:: console - ./tools/dpdk_nic_bind.py --bind vfio-pci 0000:83:00.0 + ./usertools/dpdk-devbind.py --bind vfio-pci 0000:83:00.0 #. Start ``testpmd`` with basic parameters: @@ -252,7 +252,7 @@ SR-IOV: Prerequisites and sample Application Notes ip link set ens802f0 vf 0 mac a0:b0:c0:d0:e0:f0 #. Assign VF to VM, and bring up the VM. - Please see the documenation for the*I40E/IXGBE/IGB Virtual Function Driver*. + Please see the documentation for the *I40E/IXGBE/IGB Virtual Function Driver*. Sample Application Notes @@ -366,3 +366,96 @@ Delete all flow director rules on a port: testpmd> flush_flow_director 0 +Floating VEB +~~~~~~~~~~~~~ + +The Intel® Ethernet Controller X710 and XL710 Family support a feature called +"Floating VEB". + +A Virtual Ethernet Bridge (VEB) is an IEEE Edge Virtual Bridging (EVB) term +for functionality that allows local switching between virtual endpoints within +a physical endpoint and also with an external bridge/network. + +A "Floating" VEB doesn't have an uplink connection to the outside world so all +switching is done internally and remains within the host. As such, this +feature provides security benefits. + +In addition, a Floating VEB overcomes a limitation of normal VEBs where they +cannot forward packets when the physical link is down. Floating VEBs don't need +to connect to the NIC port so they can still forward traffic from VF to VF +even when the physical link is down. + +Therefore, with this feature enabled VFs can be limited to communicating with +each other but not an outside network, and they can do so even when there is +no physical uplink on the associated NIC port. + +To enable this feature, the user should pass a ``devargs`` parameter to the +EAL, for example:: + + -w 84:00.0,enable_floating_veb=1 + +In this configuration the PMD will use the floating VEB feature for all the +VFs created by this PF device. + +Alternatively, the user can specify which VFs need to connect to this floating +VEB using the ``floating_veb_list`` argument:: + + -w 84:00.0,enable_floating_veb=1,floating_veb_list=1;3-4 + +In this example ``VF1``, ``VF3`` and ``VF4`` connect to the floating VEB, +while other VFs connect to the normal VEB. + +The current implementation only supports one floating VEB and one regular +VEB. VFs can connect to a floating VEB or a regular VEB according to the +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.