[dpdk-dev,v2,46/46] doc: add doc for liquidio
Checks
Commit Message
Added doc/guides/nics/liquidio.rst and
doc/guides/nics/features/liquidio.ini. Updated release notes.
Signed-off-by: Shijith Thotton <shijith.thotton@caviumnetworks.com>
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Signed-off-by: Derek Chickles <derek.chickles@caviumnetworks.com>
Signed-off-by: Venkat Koppula <venkat.koppula@caviumnetworks.com>
Signed-off-by: Srisivasubramanian S <ssrinivasan@caviumnetworks.com>
Signed-off-by: Mallesham Jatharakonda <mjatharakonda@oneconvergence.com>
---
MAINTAINERS | 2 +
doc/guides/nics/features/liquidio.ini | 29 ++++
doc/guides/nics/index.rst | 1 +
doc/guides/nics/liquidio.rst | 280 +++++++++++++++++++++++++++++++++
doc/guides/rel_notes/release_17_05.rst | 3 +
5 files changed, 315 insertions(+)
create mode 100644 doc/guides/nics/features/liquidio.ini
create mode 100644 doc/guides/nics/liquidio.rst
Comments
On 3/2/2017 11:32 AM, Shijith Thotton wrote:
> Added doc/guides/nics/liquidio.rst and
> doc/guides/nics/features/liquidio.ini. Updated release notes.
>
> Signed-off-by: Shijith Thotton <shijith.thotton@caviumnetworks.com>
> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
> Signed-off-by: Derek Chickles <derek.chickles@caviumnetworks.com>
> Signed-off-by: Venkat Koppula <venkat.koppula@caviumnetworks.com>
> Signed-off-by: Srisivasubramanian S <ssrinivasan@caviumnetworks.com>
> Signed-off-by: Mallesham Jatharakonda <mjatharakonda@oneconvergence.com>
<...>
> --- /dev/null
> +++ b/doc/guides/nics/features/liquidio.ini
> @@ -0,0 +1,29 @@
> +;
> +; Supported features of the 'LiquidIO' network poll mode driver.
> +;
> +; Refer to default.ini for the full list of available PMD features.
> +;
> +[Features]
> +Link status = Y
> +Link status event = Y
> +MTU update = Y
> +Jumbo frame = Y
> +Scattered Rx = Y
> +Allmulticast mode = Y
> +RSS hash = Y
> +RSS key update = Y
> +RSS reta update = Y
> +SR-IOV = Y
This has been discussed before, but I am not still clear what does
setting this feature in VF driver means. What is the intention here?
> +VLAN filter = Y
> +CRC offload = Y
> +VLAN offload = P
> +L3 checksum offload = Y
> +L4 checksum offload = Y
> +Inner L3 checksum = Y
> +Inner L4 checksum = Y
> +Basic stats = Y
> +Extended stats = Y
> +Linux UIO = Y
> +Linux VFIO = Y
> +x86-64 = Y
Is other platforms not supported?
If that is the case, PMD should not be enabled by default.
> +Usage doc = Y
Instead of features file in one patch, can you please split some into
other patches?
Each patch that implements the feature can update the relevant item in
the doc?
<...>
> +.. _lio_driver-compilation:
Thank you for the documentation but below part seems generic to all
PMDs, and already documented in other PMDs.
I am not sure about this part, what do you think only keeping LiquidIO
related part? And perhaps we can prepare a common document that you can
reference here.
> +
> +Driver Compilation
> +------------------
> +
> +To compile LiquidIO PMD for Linux x86_64 gcc target, run the following "make"
> +command:
> +
> +.. code-block:: console
> +
> + cd <DPDK-source-directory>
> + make install T=x86_64-native-linuxapp-gcc
> +
> +
> +Sample Application Notes
> +------------------------
> +
> +This section demonstrates how to launch ``testpmd`` with LiquidIO® CN23XX
> +device managed by ``librte_pmd_lio`` in Linux operating system.
> +
> +#. Mount huge pages:
> +
> + .. code-block:: console
> +
> + mkdir /mnt/huge
> + mount -t hugetlbfs nodev /mnt/huge
> +
> +#. Request huge pages:
> +
> + .. code-block:: console
> +
> + echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages/nr_hugepages
> +
> +#. Load ``vfio-pci`` driver:
> +
> + .. code-block:: console
> +
> + modprobe vfio-pci
> +
> +#. Bind the LiquidIO VFs to ``vfio-pci`` loaded in previous step:
> +
> + Setup VFIO permissions for regular users and then bind to ``vfio-pci``:
> +
> + .. code-block:: console
> +
> + sudo chmod a+x /dev/vfio
> +
> + sudo chmod 0666 /dev/vfio/*
> +
> + ./usertools/dpdk-devbind.py --bind vfio-pci 0000:03:00.3 0000:03:08.3
> +
> +#. Start ``testpmd`` with basic parameters:
> +
> + .. code-block:: console
> +
> + ./build/app/testpmd -c 0xf -n 4 -- -i
> +
> + 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 <mbuf_pool_socket_0>: 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>
> +
> +
> +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 <slot> -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 <PF iface> vf <VF id> mac <macaddr>
> +
> + 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=<disk_file>,if=none,id=disk1,format=<type> \
> + -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 :ref:`notes above <lio_driver-compilation>`
> + to compile and run ``testpmd`` application.
> + Use ``igb_uio`` instead of ``vfio-pci`` in VM.
> +
> +
> +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
> +~~~~~~~~~~~~
> +
<...>
On Tue, Mar 21, 2017 at 12:33:30PM +0000, Ferruh Yigit wrote:
> On 3/2/2017 11:32 AM, Shijith Thotton wrote:
> > Added doc/guides/nics/liquidio.rst and
> > doc/guides/nics/features/liquidio.ini. Updated release notes.
> >
> > Signed-off-by: Shijith Thotton <shijith.thotton@caviumnetworks.com>
> > Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
> > Signed-off-by: Derek Chickles <derek.chickles@caviumnetworks.com>
> > Signed-off-by: Venkat Koppula <venkat.koppula@caviumnetworks.com>
> > Signed-off-by: Srisivasubramanian S <ssrinivasan@caviumnetworks.com>
> > Signed-off-by: Mallesham Jatharakonda <mjatharakonda@oneconvergence.com>
>
> <...>
>
> > --- /dev/null
> > +++ b/doc/guides/nics/features/liquidio.ini
> > @@ -0,0 +1,29 @@
> > +;
> > +; Supported features of the 'LiquidIO' network poll mode driver.
> > +;
> > +; Refer to default.ini for the full list of available PMD features.
> > +;
> > +[Features]
> > +Link status = Y
> > +Link status event = Y
> > +MTU update = Y
> > +Jumbo frame = Y
> > +Scattered Rx = Y
> > +Allmulticast mode = Y
> > +RSS hash = Y
> > +RSS key update = Y
> > +RSS reta update = Y
> > +SR-IOV = Y
>
> This has been discussed before, but I am not still clear what does
> setting this feature in VF driver means. What is the intention here?
>
Will remove.
> > +VLAN filter = Y
> > +CRC offload = Y
> > +VLAN offload = P
> > +L3 checksum offload = Y
> > +L4 checksum offload = Y
> > +Inner L3 checksum = Y
> > +Inner L4 checksum = Y
> > +Basic stats = Y
> > +Extended stats = Y
> > +Linux UIO = Y
> > +Linux VFIO = Y
> > +x86-64 = Y
>
> Is other platforms not supported?
> If that is the case, PMD should not be enabled by default.
>
Verified build on x86-32, x86-64, ARM and for BSD targets. Hope that
qualifies to be enabled by default.
> > +Usage doc = Y
>
> Instead of features file in one patch, can you please split some into
> other patches?
> Each patch that implements the feature can update the relevant item in
> the doc?
Will do.
>
> <...>
>
> > +.. _lio_driver-compilation:
>
> Thank you for the documentation but below part seems generic to all
> PMDs, and already documented in other PMDs.
> I am not sure about this part, what do you think only keeping LiquidIO
> related part? And perhaps we can prepare a common document that you can
> reference here.
>
I can submit a patchset aimed at this later, as this need to touch
documentation of all PMDs with common part.
> > +
> > +Driver Compilation
> > +------------------
> > +
> > +To compile LiquidIO PMD for Linux x86_64 gcc target, run the following "make"
> > +command:
> > +
> > +.. code-block:: console
> > +
> > + cd <DPDK-source-directory>
> > + make install T=x86_64-native-linuxapp-gcc
> > +
> > +
> > +Sample Application Notes
> > +------------------------
> > +
> > +This section demonstrates how to launch ``testpmd`` with LiquidIO® CN23XX
> > +device managed by ``librte_pmd_lio`` in Linux operating system.
> > +
> > +#. Mount huge pages:
> > +
> > + .. code-block:: console
> > +
> > + mkdir /mnt/huge
> > + mount -t hugetlbfs nodev /mnt/huge
> > +
> > +#. Request huge pages:
> > +
> > + .. code-block:: console
> > +
> > + echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages/nr_hugepages
> > +
> > +#. Load ``vfio-pci`` driver:
> > +
> > + .. code-block:: console
> > +
> > + modprobe vfio-pci
> > +
> > +#. Bind the LiquidIO VFs to ``vfio-pci`` loaded in previous step:
> > +
> > + Setup VFIO permissions for regular users and then bind to ``vfio-pci``:
> > +
> > + .. code-block:: console
> > +
> > + sudo chmod a+x /dev/vfio
> > +
> > + sudo chmod 0666 /dev/vfio/*
> > +
> > + ./usertools/dpdk-devbind.py --bind vfio-pci 0000:03:00.3 0000:03:08.3
> > +
> > +#. Start ``testpmd`` with basic parameters:
> > +
> > + .. code-block:: console
> > +
> > + ./build/app/testpmd -c 0xf -n 4 -- -i
> > +
> > + 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 <mbuf_pool_socket_0>: 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>
> > +
> > +
> > +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 <slot> -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 <PF iface> vf <VF id> mac <macaddr>
> > +
> > + 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=<disk_file>,if=none,id=disk1,format=<type> \
> > + -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 :ref:`notes above <lio_driver-compilation>`
> > + to compile and run ``testpmd`` application.
> > + Use ``igb_uio`` instead of ``vfio-pci`` in VM.
> > +
> > +
> > +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
> > +~~~~~~~~~~~~
> > +
>
> <...>
On 3/23/2017 5:44 AM, Shijith Thotton wrote:
> On Tue, Mar 21, 2017 at 12:33:30PM +0000, Ferruh Yigit wrote:
>> On 3/2/2017 11:32 AM, Shijith Thotton wrote:
>>> Added doc/guides/nics/liquidio.rst and
>>> doc/guides/nics/features/liquidio.ini. Updated release notes.
>>>
>>> Signed-off-by: Shijith Thotton <shijith.thotton@caviumnetworks.com>
>>> Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
>>> Signed-off-by: Derek Chickles <derek.chickles@caviumnetworks.com>
>>> Signed-off-by: Venkat Koppula <venkat.koppula@caviumnetworks.com>
>>> Signed-off-by: Srisivasubramanian S <ssrinivasan@caviumnetworks.com>
>>> Signed-off-by: Mallesham Jatharakonda <mjatharakonda@oneconvergence.com>
>>
<...>
>
>>> +VLAN filter = Y
>>> +CRC offload = Y
>>> +VLAN offload = P
>>> +L3 checksum offload = Y
>>> +L4 checksum offload = Y
>>> +Inner L3 checksum = Y
>>> +Inner L4 checksum = Y
>>> +Basic stats = Y
>>> +Extended stats = Y
>>> +Linux UIO = Y
>>> +Linux VFIO = Y
>>> +x86-64 = Y
>>
>> Is other platforms not supported?
>> If that is the case, PMD should not be enabled by default.
>>
>
> Verified build on x86-32, x86-64, ARM and for BSD targets. Hope that
> qualifies to be enabled by default.
That should be OK, thanks.
<...>
>>> +.. _lio_driver-compilation:
>>
>> Thank you for the documentation but below part seems generic to all
>> PMDs, and already documented in other PMDs.
>> I am not sure about this part, what do you think only keeping LiquidIO
>> related part? And perhaps we can prepare a common document that you can
>> reference here.
>>
>
> I can submit a patchset aimed at this later, as this need to touch
> documentation of all PMDs with common part.
OK, thanks.
Please leave this part in patch as it is as this needs to be resolves in
a higher level.
@@ -303,6 +303,8 @@ Cavium LiquidIO
M: Shijith Thotton <shijith.thotton@cavium.com>
M: Srisivasubramanian Srinivasan <ssrinivasan@cavium.com>
F: drivers/net/liquidio/
+F: doc/guides/nics/liquidio.rst
+F: doc/guides/nics/features/liquidio.ini
Chelsio cxgbe
M: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
new file mode 100644
@@ -0,0 +1,29 @@
+;
+; Supported features of the 'LiquidIO' network poll mode driver.
+;
+; Refer to default.ini for the full list of available PMD features.
+;
+[Features]
+Link status = Y
+Link status event = Y
+MTU update = Y
+Jumbo frame = Y
+Scattered Rx = Y
+Allmulticast mode = Y
+RSS hash = Y
+RSS key update = Y
+RSS reta update = Y
+SR-IOV = Y
+VLAN filter = Y
+CRC offload = Y
+VLAN offload = P
+L3 checksum offload = Y
+L4 checksum offload = Y
+Inner L3 checksum = Y
+Inner L4 checksum = Y
+Basic stats = Y
+Extended stats = Y
+Linux UIO = Y
+Linux VFIO = Y
+x86-64 = Y
+Usage doc = Y
@@ -47,6 +47,7 @@ Network Interface Controller Drivers
ixgbe
intel_vf
kni
+ liquidio
mlx4
mlx5
nfp
new file mode 100644
@@ -0,0 +1,280 @@
+.. BSD LICENSE
+ Copyright(c) 2017 Cavium, Inc.. 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 Cavium, Inc. 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(S) 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.
+
+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
+<http://cavium.com/LiquidIO_Adapters.html>`_.
+
+Supported LiquidIO Adapters
+-----------------------------
+
+- LiquidIO II CN2350 210SV
+- LiquidIO II CN2360 210SV
+
+
+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.
+
+
+.. _lio_driver-compilation:
+
+Driver Compilation
+------------------
+
+To compile LiquidIO PMD for Linux x86_64 gcc target, run the following "make"
+command:
+
+.. code-block:: console
+
+ cd <DPDK-source-directory>
+ make install T=x86_64-native-linuxapp-gcc
+
+
+Sample Application Notes
+------------------------
+
+This section demonstrates how to launch ``testpmd`` with LiquidIO® CN23XX
+device managed by ``librte_pmd_lio`` in Linux operating system.
+
+#. Mount huge pages:
+
+ .. code-block:: console
+
+ mkdir /mnt/huge
+ mount -t hugetlbfs nodev /mnt/huge
+
+#. Request huge pages:
+
+ .. code-block:: console
+
+ echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages/nr_hugepages
+
+#. Load ``vfio-pci`` driver:
+
+ .. code-block:: console
+
+ modprobe vfio-pci
+
+#. Bind the LiquidIO VFs to ``vfio-pci`` loaded in previous step:
+
+ Setup VFIO permissions for regular users and then bind to ``vfio-pci``:
+
+ .. code-block:: console
+
+ sudo chmod a+x /dev/vfio
+
+ sudo chmod 0666 /dev/vfio/*
+
+ ./usertools/dpdk-devbind.py --bind vfio-pci 0000:03:00.3 0000:03:08.3
+
+#. Start ``testpmd`` with basic parameters:
+
+ .. code-block:: console
+
+ ./build/app/testpmd -c 0xf -n 4 -- -i
+
+ 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 <mbuf_pool_socket_0>: 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>
+
+
+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 <slot> -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 <PF iface> vf <VF id> mac <macaddr>
+
+ 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=<disk_file>,if=none,id=disk1,format=<type> \
+ -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 :ref:`notes above <lio_driver-compilation>`
+ to compile and run ``testpmd`` application.
+ Use ``igb_uio`` instead of ``vfio-pci`` in VM.
+
+
+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``.
@@ -41,6 +41,9 @@ New Features
Also, make sure to start the actual text at the margin.
=========================================================
+* **Added LiquidIO network PMD.**
+
+ Added poll mode driver support for Cavium LiquidIO II server adapter VFs.
Resolved Issues
---------------