.. SPDX-License-Identifier: BSD-3-Clause Copyright(c) 2017 Cavium, Inc LiquidIO VF Poll Mode Driver ============================ The LiquidIO VF PMD library (librte_pmd_lio) provides poll mode driver support for Cavium LiquidIO® II server adapter VFs. PF management and VF creation can be done using kernel driver. More information can be found at `Cavium Official Website `_. Supported LiquidIO Adapters ----------------------------- - LiquidIO II CN2350 210SV/225SV - LiquidIO II CN2350 210SVPT - LiquidIO II CN2360 210SV/225SV - LiquidIO II CN2360 210SVPT Pre-Installation Configuration ------------------------------ The following options can be modified in the ``config`` file. Please note that enabling debugging options may affect system performance. - ``CONFIG_RTE_LIBRTE_LIO_PMD`` (default ``y``) Toggle compilation of LiquidIO PMD. - ``CONFIG_RTE_LIBRTE_LIO_DEBUG_DRIVER`` (default ``n``) Toggle display of generic debugging messages. - ``CONFIG_RTE_LIBRTE_LIO_DEBUG_INIT`` (default ``n``) Toggle display of initialization related messages. - ``CONFIG_RTE_LIBRTE_LIO_DEBUG_RX`` (default ``n``) Toggle display of receive fast path run-time messages. - ``CONFIG_RTE_LIBRTE_LIO_DEBUG_TX`` (default ``n``) Toggle display of transmit fast path run-time messages. - ``CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX`` (default ``n``) Toggle display of mailbox messages. - ``CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS`` (default ``n``) Toggle display of register reads and writes. SR-IOV: Prerequisites and Sample Application Notes -------------------------------------------------- This section provides instructions to configure SR-IOV with Linux OS. #. Verify SR-IOV and ARI capabilities are enabled on the adapter using ``lspci``: .. code-block:: console lspci -s -vvv Example output: .. code-block:: console [...] Capabilities: [148 v1] Alternative Routing-ID Interpretation (ARI) [...] Capabilities: [178 v1] Single Root I/O Virtualization (SR-IOV) [...] Kernel driver in use: LiquidIO #. Load the kernel module: .. code-block:: console modprobe liquidio #. Bring up the PF ports: .. code-block:: console ifconfig p4p1 up ifconfig p4p2 up #. Change PF MTU if required: .. code-block:: console ifconfig p4p1 mtu 9000 ifconfig p4p2 mtu 9000 #. Create VF device(s): Echo number of VFs to be created into ``"sriov_numvfs"`` sysfs entry of the parent PF. .. code-block:: console echo 1 > /sys/bus/pci/devices/0000:03:00.0/sriov_numvfs echo 1 > /sys/bus/pci/devices/0000:03:00.1/sriov_numvfs #. Assign VF MAC address: Assign MAC address to the VF using iproute2 utility. The syntax is:: ip link set vf mac Example output: .. code-block:: console ip link set p4p1 vf 0 mac F2:A8:1B:5E:B4:66 #. Assign VF(s) to VM. The VF devices may be passed through to the guest VM using qemu or virt-manager or virsh etc. Example qemu guest launch command: .. code-block:: console ./qemu-system-x86_64 -name lio-vm -machine accel=kvm \ -cpu host -m 4096 -smp 4 \ -drive file=,if=none,id=disk1,format= \ -device virtio-blk-pci,scsi=off,drive=disk1,id=virtio-disk1,bootindex=1 \ -device vfio-pci,host=03:00.3 -device vfio-pci,host=03:08.3 #. Running testpmd Refer to the document :ref:`compiling and testing a PMD for a NIC ` to run ``testpmd`` application. .. note:: Use ``igb_uio`` instead of ``vfio-pci`` in VM. Example output: .. code-block:: console [...] EAL: PCI device 0000:03:00.3 on NUMA socket 0 EAL: probe driver: 177d:9712 net_liovf EAL: using IOMMU type 1 (Type 1) PMD: net_liovf[03:00.3]INFO: DEVICE : CN23XX VF EAL: PCI device 0000:03:08.3 on NUMA socket 0 EAL: probe driver: 177d:9712 net_liovf PMD: net_liovf[03:08.3]INFO: DEVICE : CN23XX VF Interactive-mode selected USER1: create a new mbuf pool : n=171456, size=2176, socket=0 Configuring Port 0 (socket 0) PMD: net_liovf[03:00.3]INFO: Starting port 0 Port 0: F2:A8:1B:5E:B4:66 Configuring Port 1 (socket 0) PMD: net_liovf[03:08.3]INFO: Starting port 1 Port 1: 32:76:CC:EE:56:D7 Checking link statuses... Port 0 Link Up - speed 10000 Mbps - full-duplex Port 1 Link Up - speed 10000 Mbps - full-duplex Done testpmd> #. Enabling VF promiscuous mode One VF per PF can be marked as trusted for promiscuous mode. .. code-block:: console ip link set dev vf trust on Limitations ----------- VF MTU ~~~~~~ VF MTU is limited by PF MTU. Raise PF value before configuring VF for larger packet size. VLAN offload ~~~~~~~~~~~~ Tx VLAN insertion is not supported and consequently VLAN offload feature is marked partial. Ring size ~~~~~~~~~ Number of descriptors for Rx/Tx ring should be in the range 128 to 512. CRC striping ~~~~~~~~~~~~ LiquidIO adapters strip ethernet FCS of every packet coming to the host interface. So, CRC will be stripped even when the ``rxmode.hw_strip_crc`` member is set to 0 in ``struct rte_eth_conf``.