All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] doc: add doc for i40e pmd driver introduction
@ 2016-01-28  8:50 Jingjing Wu
  2016-02-22  5:49 ` Lu, Wenzhuo
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Jingjing Wu @ 2016-01-28  8:50 UTC (permalink / raw)
  To: dev

A new doc "i40e.rst" is added to introduce i40e pmd driver.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
---
 doc/guides/nics/i40e.rst  | 351 ++++++++++++++++++++++++++++++++++++++++++++++
 doc/guides/nics/index.rst |   1 +
 2 files changed, 352 insertions(+)
 create mode 100644 doc/guides/nics/i40e.rst

diff --git a/doc/guides/nics/i40e.rst b/doc/guides/nics/i40e.rst
new file mode 100644
index 0000000..de44486
--- /dev/null
+++ b/doc/guides/nics/i40e.rst
@@ -0,0 +1,351 @@
+..  BSD LICENSE
+    Copyright(c) 2010-2016 Intel Corporation. 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 Intel Corporation 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 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.
+
+I40E Poll Mode Driver
+======================
+
+The I40E PMD (**librte_pmd_i40e**) provides poll mode driver support
+for **Intel X710/XL710/X722** 10/40 Gbps family of adapters.
+
+
+More information can be found at `Intel Official Website <http://www.intel.com>`_.
+
+Features
+--------
+
+- Multiple queues for TX and RX
+- Receiver Side Steering (RSS)
+- MAC/VLAN filtering
+- Packet type information
+- flow director
+- cloud filter
+- Checksum offload
+- VLAN/QinQ stripping and inserting
+- TSO offload
+- Promiscuous mode
+- Multicast mode
+- Port hardware statistics
+- Jumbo frames
+- Link state information
+- Link flow control
+- Mirror on port, VLAN and VSI
+- Interrupt mode RX
+- Scattered and gather for TX and RX
+- Vector Poll mode driver
+- DCB
+- VMDQ
+- SR-IOV VF
+- Hot plug
+- IEEE1588/802.1AS timestamping
+
+Prerequisites
+-------------
+
+- Identifying Your Adapter
+  `Intel Support <http://www.intel.com/support>`_ to identify your
+  adapter, and get latest NVM/FW images.
+
+- Follow the **DPDK Getting Started Guide** to setup the basic DPDK environment.
+
+- To get better performance on Intel platforms, please follow **How to get best performance with NICs on Intel platforms** to set up environment.
+
+Pre-Installation Configuration
+------------------------------
+
+Config File Options
+~~~~~~~~~~~~~~~~~~~
+
+The following options can be modified in the ``config`` file. Please note that
+enabling debugging options may affect system performance.
+
+- ``CONFIG_RTE_LIBRTE_I40E_PMD`` (default **y**)
+
+  Toggle compilation of librte_pmd_i40e driver.
+
+- ``CONFIG_RTE_LIBRTE_I40E_DEBUG_*`` (default **n**)
+
+  Toggle display of generic debugging messages.
+
+- ``CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC`` (default **y**)
+
+  Toggle allow bulk allocation for RX.
+
+- ``CONFIG_RTE_LIBRTE_I40E_INC_VECTOR`` (default **n**)
+
+  Toggle to use Vector PMD instead of normal RX TX path, to enable vPMD for
+  RX, bulk allocation for Rx must be allowed.
+
+- ``CONFIG_RTE_LIBRTE_I40E_RX_OLFLAGS_ENABLE`` (default **y**)
+
+  Toggle to enable RX olflags, it is only meaningful when Vector PMD is used.
+
+- ``CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC`` (default **n**)
+
+  Toggle to use 16-byte RX descriptor, by defualt the RX descriptor is 32 byte.
+
+- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF`` (default **64**)
+
+  Number of queues reserved for PF.
+
+- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF`` (default **4**)
+
+  Number of queues reserverd for each SR-IOV VF.
+
+- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM`` (default **4**)
+
+  Number of queues reserverd for each VMDQ Pool.
+
+- ``CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL`` (default **-1**)
+
+  Interrupt Throttling interval.
+
+Driver Compilation
+~~~~~~~~~~~~~~~~~~
+
+I40E PMD for Linux, please see :ref:`Linux guide <linux_gsg>`.
+I40E PMD for FreeBSD, please see :ref:`FreeBSD guide <freebsd_gsg>`.
+
+Linux
+-----
+
+Linux Installation
+~~~~~~~~~~~~~~~~~~
+
+Running testpmd
+~~~~~~~~~~~~~~~
+
+This section demonstrates how to launch **testpmd** with Intel XL710/X710
+devices managed by librte_pmd_i40e in Linux operating system.
+
+#. Load ``igb_uio`` or ``vfio-pci`` driver:
+
+   .. code-block:: console
+
+      modprobe uio
+      insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
+
+   or
+
+   .. code-block:: console
+
+      modprobe vfio-pci
+
+#. Bind the XL710/X710 adapters to igb_uio or vfio-pci loaded in the previous
+   step:
+
+   .. code-block:: console
+
+      ./tools/dpdk_nic_bind.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
+
+#. Start ``testpmd`` with basic parameters:
+
+   .. code-block:: console
+
+      ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w 83:00.0 -- -i
+
+   Example output:
+
+   .. code-block:: console
+
+      [...]
+      EAL: PCI device 0000:83:00.0 on NUMA socket 1
+      EAL: probe driver: 8086:1572 rte_i40e_pmd
+      EAL: PCI memory mapped at 0x7f7f80000000
+      EAL: PCI memory mapped at 0x7f7f80800000
+      PMD: eth_i40e_dev_init(): FW 5.0 API 1.5 NVM 05.00.02 eetrack 8000208a
+      Interactive-mode selected
+      Configuring Port 0 (socket 0)
+      PMD: i40e_dev_rx_queue_setup(): Rx Burst Bulk Alloc Preconditions are
+      satisfied.Rx Burst Bulk Alloc function will be used on port=0, queue=0.
+      [...]
+      Port 0: 68:05:CA:26:85:84
+      Checking link statuses...
+      Port 0 Link Up - speed 10000 Mbps - full-duplex
+      Done
+      testpmd>
+
+SR-IOV: Prerequisites and sample Application Notes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#. Load the kernel module:
+
+   .. code-block:: console
+
+      modprobe i40e
+
+   Output in dmesg:
+
+   .. code-block:: console
+
+      i40e 0000:83:00.1 ens802f0: renamed from eth0
+
+#. Bring up the PF ports:
+
+   .. code-block:: console
+
+      ifconfig ens802f0 up
+
+#. Create VF device(s):
+
+   Echo the number of VFs to be created into "sriov_numvfs" sysfs entry
+   of the parent PF.
+
+   Example output:
+
+   .. code-block:: console
+
+      echo 2 > /sys/devices/pci0000:00/0000:00:03.0/0000:81:00.0/sriov_numvfs
+
+
+#. Assign VF MAC address:
+
+   Assign MAC address to the VF using iproute2 utility. The syntax is:
+   ip link set <PF netdev id> vf <VF id> mac <macaddr>
+
+   Example output:
+
+   .. code-block:: console
+
+      ip link set ens802f0 vf 0 mac a0:b0:c0:d0:e0:f0
+
+#. Assign VF to VM, and bring up VM
+   Please see the **I40E/IXGBE/IGB Virtual Function Driver**.
+
+Sample Application Notes
+------------------------
+
+Vlan filter
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Vlan filter only works when Promiscuous mode is off.
+
+To start ``testpmd``, and add vlan 10 to port 0:
+
+.. code-block:: console
+
+    ./app/testpmd -c ffff -n 4 -- -i --forward-mode=mac
+    [...]
+
+     testpmd> set promisc 0 off
+     testpmd> rx_vlan add 10 0
+
+
+Intel flow director
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The Flow Director works in receive mode to identify specific flows or sets of flows and route them to specific queues.
+The Flow Director filters can match the different fields for different type of packet: flow type, specific input set
+per flow type and the flexible payload.
+
+.. note::
+
+   The default input set of each flow type is:
+
+   ipv4-other : src_ip_address, dst_ip_address
+   ipv4-frag  : src_ip_address, dst_ip_address
+   ipv4-tcp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv4-udp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv4-sctp  : src_ip_address, dst_ip_address, src_port, dst_port, verification_tag
+   ipv6-other : src_ip_address, dst_ip_address
+   ipv6-frag  : src_ip_address, dst_ip_address
+   ipv6-tcp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv6-udp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv6-sctp  : src_ip_address, dst_ip_address, src_port, dst_port, verification_tag
+   l2_payload : ether_type
+
+   The flex payload is selected from offset 0 to 15 of packet's payload by default, while it is masked out from matching.
+
+To start ``testpmd`` with ``--disable-rss`` and ``--pkt-filter-mode=perfect``:
+
+.. code-block:: console
+
+   ./app/testpmd -c ffff -n 4 -- -i --disable-rss --pkt-filter-mode=perfect  --rxq=8 --txq=8 --nb-cores=8 --nb-ports=1
+   [...]
+
+Add a rule to direct ``ipv4-udp`` packet whose ``dst_ip=2.2.2.5, src_ip=2.2.2.3, src_port=32, dst_port=32`` to queue 1:
+
+.. code-block:: console
+
+   testpmd> flow_director_filter 0 mode IP add flow ipv4-udp src 2.2.2.3 32 dst 2.2.2.5 32 vlan 0 flexbytes () fwd pf queue 1 fd_id 1 
+
+Check fdir status:
+
+.. code-block:: console
+
+   testpmd> show port fdir 0
+
+   ######################## FDIR infos for port 0      ########################
+     MODE:   PERFECT
+     SUPPORTED FLOW TYPE:  ipv4-frag ipv4-tcp ipv4-udp ipv4-sctp ipv4-other ipv6-frag ipv6-tcp ipv6-udp ipv6-sctp ipv6-other l2_payload
+     FLEX PAYLOAD INFO:
+     max_len:	    16	        payload_limit: 480
+     payload_unit:  2	        payload_seg:   3
+     bitmask_unit:  2	        bitmask_num:   2
+     MASK:
+       vlan_tci: 0x0000, src_ipv4: 0x00000000, dst_ipv4: 0x00000000, src_port: 0x0000, dst_port: 0x0000
+       src_ipv6: 0x00000000,0x00000000,0x00000000,0x00000000, dst_ipv6: 0x00000000,0x00000000,0x00000000,0x00000000
+     FLEX PAYLOAD SRC OFFSET:
+       L2_PAYLOAD:    0      1	    2	   3	  4	 5	6      7      8      9	    10	   11	  12	 13	14     15
+       L3_PAYLOAD:    0      1	    2	   3	  4	 5	6      7      8      9	    10	   11	  12	 13	14     15
+       L4_PAYLOAD:    0      1	    2	   3	  4	 5	6      7      8      9	    10	   11	  12	 13	14     15
+     FLEX MASK CFG:
+       ipv4-udp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-tcp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-sctp:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-other:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-frag:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-udp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-tcp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-sctp:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-other:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-frag:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       l2_payload:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+     guarant_count: 1	        best_count:    0
+     guarant_space: 512         best_space:    7168
+     collision:     0	        free:	       0
+     maxhash:	    0	        maxlen:        0
+     add:	    0	        remove:        0
+     f_add:	    0	        f_remove:      0
+   ############################################################################
+
+Detele all flow director rules on port
+
+.. code-block:: console
+
+   testpmd> flush_flow_director 0
+
diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst
index 33c9cea..fbea54f 100644
--- a/doc/guides/nics/index.rst
+++ b/doc/guides/nics/index.rst
@@ -41,6 +41,7 @@ Network Interface Controller Drivers
     enic
     fm10k
     ixgbe
+    i40e
     intel_vf
     mlx4
     mlx5
-- 
2.4.0

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH] doc: add doc for i40e pmd driver introduction
  2016-01-28  8:50 [PATCH] doc: add doc for i40e pmd driver introduction Jingjing Wu
@ 2016-02-22  5:49 ` Lu, Wenzhuo
  2016-02-22 15:34 ` Mcnamara, John
  2016-02-23  1:23 ` [PATCH v2] " Jingjing Wu
  2 siblings, 0 replies; 13+ messages in thread
From: Lu, Wenzhuo @ 2016-02-22  5:49 UTC (permalink / raw)
  To: Wu, Jingjing, dev

Hi,

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jingjing Wu
> Sent: Thursday, January 28, 2016 4:51 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] doc: add doc for i40e pmd driver introduction
> 
> A new doc "i40e.rst" is added to introduce i40e pmd driver.
> 
> Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Seems all the other NICs have their own doc. I40e should have one either, so we can add i40e specific info here.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH] doc: add doc for i40e pmd driver introduction
  2016-01-28  8:50 [PATCH] doc: add doc for i40e pmd driver introduction Jingjing Wu
  2016-02-22  5:49 ` Lu, Wenzhuo
@ 2016-02-22 15:34 ` Mcnamara, John
  2016-02-23  1:23 ` [PATCH v2] " Jingjing Wu
  2 siblings, 0 replies; 13+ messages in thread
From: Mcnamara, John @ 2016-02-22 15:34 UTC (permalink / raw)
  To: Wu, Jingjing, dev

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jingjing Wu
> Sent: Thursday, January 28, 2016 8:51 AM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] doc: add doc for i40e pmd driver introduction
> 
> A new doc "i40e.rst" is added to introduce i40e pmd driver.
> 
> Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>


Thanks for the new doc. Some minor comments below.

> +
> +- Multiple queues for TX and RX
> +- Receiver Side Steering (RSS)

s/Steering/Scaling


> +- MAC/VLAN filtering
> +- Packet type information
> +- flow director
> +- cloud filter

Capitalize these for consistency.

> +   ./app/testpmd -c ffff -n 4 -- -i --disable-rss --pkt-filter-
> mode=perfect  --rxq=8 --txq=8 --nb-cores=8 --nb-ports=1
> +   [...]

Long code lines like this don't wrap in the PDF output and should be restricted to
80 characters. You can add a commandline continuation like the following:


.. code-block:: console

   ./app/testpmd -c ffff -n 4 -- -i --disable-rss --pkt-filter-mode=perfect \
                 --rxq=8 --txq=8 --nb-cores=8 --nb-ports=1

Same for the next examples.
> +     MODE:   PERFECT
> +     SUPPORTED FLOW TYPE:  ipv4-frag ipv4-tcp ipv4-udp ipv4-sctp ipv4-
> other ipv6-frag ipv6-tcp ipv6-udp ipv6-sctp ipv6-other l2_payload
> +     FLEX PAYLOAD INFO:

Some of this information could also be wrapped/omitted while retaining the
same information. I'll send you on an example.

John.
-- 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v2] doc: add doc for i40e pmd driver introduction
  2016-01-28  8:50 [PATCH] doc: add doc for i40e pmd driver introduction Jingjing Wu
  2016-02-22  5:49 ` Lu, Wenzhuo
  2016-02-22 15:34 ` Mcnamara, John
@ 2016-02-23  1:23 ` Jingjing Wu
  2016-02-23 10:21   ` Mcnamara, John
                     ` (2 more replies)
  2 siblings, 3 replies; 13+ messages in thread
From: Jingjing Wu @ 2016-02-23  1:23 UTC (permalink / raw)
  To: dev

A new doc "i40e.rst" is added to introduce i40e pmd driver.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
---
 doc/guides/nics/i40e.rst  | 368 ++++++++++++++++++++++++++++++++++++++++++++++
 doc/guides/nics/index.rst |   1 +
 2 files changed, 369 insertions(+)
 create mode 100644 doc/guides/nics/i40e.rst

diff --git a/doc/guides/nics/i40e.rst b/doc/guides/nics/i40e.rst
new file mode 100644
index 0000000..4019b41
--- /dev/null
+++ b/doc/guides/nics/i40e.rst
@@ -0,0 +1,368 @@
+..  BSD LICENSE
+    Copyright(c) 2016 Intel Corporation. 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 Intel Corporation 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 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.
+
+I40E Poll Mode Driver
+======================
+
+The I40E PMD (librte_pmd_i40e) provides poll mode driver support
+for the Intel X710/XL710/X722 10/40 Gbps family of adapters.
+
+
+Features
+--------
+
+Features of the I40E PMD are:
+
+- Multiple queues for TX and RX
+- Receiver Side Scaling (RSS)
+- MAC/VLAN filtering
+- Packet type information
+- Flow director
+- Cloud filter
+- Checksum offload
+- VLAN/QinQ stripping and inserting
+- TSO offload
+- Promiscuous mode
+- Multicast mode
+- Port hardware statistics
+- Jumbo frames
+- Link state information
+- Link flow control
+- Mirror on port, VLAN and VSI
+- Interrupt mode for RX
+- Scattered and gather for TX and RX
+- Vector Poll mode driver
+- DCB
+- VMDQ
+- SR-IOV VF
+- Hot plug
+- IEEE1588/802.1AS timestamping
+
+
+Prerequisites
+-------------
+
+- Identifying your adapter using `Intel Support
+  <http://www.intel.com/support>`_ and get the latest NVM/FW images.
+
+- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
+
+- To get better performance on Intel platforms, please follow the "How to get best performance with NICs on Intel platforms"
+  section of the :ref:`Getting Started Guide for Linux <linux_gsg>`.
+
+
+Pre-Installation Configuration
+------------------------------
+
+Config File Options
+~~~~~~~~~~~~~~~~~~~
+
+The following options can be modified in the ``config`` file.
+Please note that enabling debugging options may affect system performance.
+
+- ``CONFIG_RTE_LIBRTE_I40E_PMD`` (default ``y``)
+
+  Toggle compilation of the ``librte_pmd_i40e`` driver.
+
+- ``CONFIG_RTE_LIBRTE_I40E_DEBUG_*`` (default ``n``)
+
+  Toggle display of generic debugging messages.
+
+- ``CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC`` (default ``y``)
+
+  Toggle bulk allocation for RX.
+
+- ``CONFIG_RTE_LIBRTE_I40E_INC_VECTOR`` (default ``n``)
+
+  Toggle the use of Vector PMD instead of normal RX/TX path.
+  To enable vPMD for RX, bulk allocation for Rx must be allowed.
+
+- ``CONFIG_RTE_LIBRTE_I40E_RX_OLFLAGS_ENABLE`` (default ``y``)
+
+  Toggle to enable RX ``olflags``.
+  This is only meaningful when Vector PMD is used.
+
+- ``CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC`` (default ``n``)
+
+  Toggle to use a 16-byte RX descriptor, by default the RX descriptor is 32 byte.
+
+- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF`` (default ``64``)
+
+  Number of queues reserved for PF.
+
+- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF`` (default ``4``)
+
+  Number of queues reserved for each SR-IOV VF.
+
+- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM`` (default ``4``)
+
+  Number of queues reserved for each VMDQ Pool.
+
+- ``CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL`` (default ``-1``)
+
+  Interrupt Throttling interval.
+
+
+Driver Compilation
+~~~~~~~~~~~~~~~~~~
+
+To compile the I40E PMD see :ref:`Getting Started Guide for Linux <linux_gsg>` or
+:ref:`Getting Started Guide for FreeBSD <freebsd_gsg>` depending on your platform.
+
+
+Linux
+-----
+
+
+Running testpmd
+~~~~~~~~~~~~~~~
+
+This section demonstrates how to launch ``testpmd`` with Intel XL710/X710
+devices managed by ``librte_pmd_i40e`` in the Linux operating system.
+
+#. Load ``igb_uio`` or ``vfio-pci`` driver:
+
+   .. code-block:: console
+
+      modprobe uio
+      insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
+
+   or
+
+   .. code-block:: console
+
+      modprobe vfio-pci
+
+#. Bind the XL710/X710 adapters to ``igb_uio`` or ``vfio-pci`` loaded in the previous step:
+
+   .. code-block:: console
+
+      ./tools/dpdk_nic_bind.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
+
+#. Start ``testpmd`` with basic parameters:
+
+   .. code-block:: console
+
+      ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w 83:00.0 -- -i
+
+   Example output:
+
+   .. code-block:: console
+
+      ...
+      EAL: PCI device 0000:83:00.0 on NUMA socket 1
+      EAL: probe driver: 8086:1572 rte_i40e_pmd
+      EAL: PCI memory mapped at 0x7f7f80000000
+      EAL: PCI memory mapped at 0x7f7f80800000
+      PMD: eth_i40e_dev_init(): FW 5.0 API 1.5 NVM 05.00.02 eetrack 8000208a
+      Interactive-mode selected
+      Configuring Port 0 (socket 0)
+      ...
+
+      PMD: i40e_dev_rx_queue_setup(): Rx Burst Bulk Alloc Preconditions are
+      satisfied.Rx Burst Bulk Alloc function will be used on port=0, queue=0.
+
+      ...
+      Port 0: 68:05:CA:26:85:84
+      Checking link statuses...
+      Port 0 Link Up - speed 10000 Mbps - full-duplex
+      Done
+
+      testpmd>
+
+
+SR-IOV: Prerequisites and sample Application Notes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#. Load the kernel module:
+
+   .. code-block:: console
+
+      modprobe i40e
+
+   Check the output in dmesg:
+
+   .. code-block:: console
+
+      i40e 0000:83:00.1 ens802f0: renamed from eth0
+
+#. Bring up the PF ports:
+
+   .. code-block:: console
+
+      ifconfig ens802f0 up
+
+#. Create VF device(s):
+
+   Echo the number of VFs to be created into the ``sriov_numvfs`` sysfs entry
+   of the parent PF.
+
+   Example:
+
+   .. code-block:: console
+
+      echo 2 > /sys/devices/pci0000:00/0000:00:03.0/0000:81:00.0/sriov_numvfs
+
+
+#. Assign VF MAC address:
+
+   Assign MAC address to the VF using iproute2 utility. The syntax is:
+
+   .. code-block:: console
+
+      ip link set <PF netdev id> vf <VF id> mac <macaddr>
+
+   Example:
+
+   .. code-block:: console
+
+      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*.
+
+
+Sample Application Notes
+------------------------
+
+Vlan filter
+~~~~~~~~~~~
+
+Vlan filter only works when Promiscuous mode is off.
+
+To start ``testpmd``, and add vlan 10 to port 0:
+
+.. code-block:: console
+
+    ./app/testpmd -c ffff -n 4 -- -i --forward-mode=mac
+    ...
+
+    testpmd> set promisc 0 off
+    testpmd> rx_vlan add 10 0
+
+
+Flow Director
+~~~~~~~~~~~~~
+
+The Flow Director works in receive mode to identify specific flows or sets of flows and route them to specific queues.
+The Flow Director filters can match the different fields for different type of packet: flow type, specific input set per flow type and the flexible payload.
+
+The default input set of each flow type is::
+
+   ipv4-other : src_ip_address, dst_ip_address
+   ipv4-frag  : src_ip_address, dst_ip_address
+   ipv4-tcp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv4-udp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv4-sctp  : src_ip_address, dst_ip_address, src_port, dst_port,
+                verification_tag
+   ipv6-other : src_ip_address, dst_ip_address
+   ipv6-frag  : src_ip_address, dst_ip_address
+   ipv6-tcp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv6-udp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv6-sctp  : src_ip_address, dst_ip_address, src_port, dst_port,
+                verification_tag
+   l2_payload : ether_type
+
+The flex payload is selected from offset 0 to 15 of packet's payload by default, while it is masked out from matching.
+
+Start ``testpmd`` with ``--disable-rss`` and ``--pkt-filter-mode=perfect``:
+
+.. code-block:: console
+
+   ./app/testpmd -c ffff -n 4 -- -i --disable-rss --pkt-filter-mode=perfect \
+                 --rxq=8 --txq=8 --nb-cores=8 --nb-ports=1
+
+Add a rule to direct ``ipv4-udp`` packet whose ``dst_ip=2.2.2.5, src_ip=2.2.2.3, src_port=32, dst_port=32`` to queue 1:
+
+.. code-block:: console
+
+   testpmd> flow_director_filter 0 mode IP add flow ipv4-udp  \
+            src 2.2.2.3 32 dst 2.2.2.5 32 vlan 0 flexbytes () \
+	    fwd pf queue 1 fd_id 1
+
+Check the flow director status:
+
+.. code-block:: console
+
+   testpmd> show port fdir 0
+
+   ######################## FDIR infos for port 0      ####################
+     MODE:   PERFECT
+     SUPPORTED FLOW TYPE:  ipv4-frag ipv4-tcp ipv4-udp ipv4-sctp ipv4-other
+                           ipv6-frag ipv6-tcp ipv6-udp ipv6-sctp ipv6-other
+			   l2_payload
+     FLEX PAYLOAD INFO:
+     max_len:	    16	        payload_limit: 480
+     payload_unit:  2	        payload_seg:   3
+     bitmask_unit:  2	        bitmask_num:   2
+     MASK:
+       vlan_tci: 0x0000,
+       src_ipv4: 0x00000000,
+       dst_ipv4: 0x00000000,
+       src_port: 0x0000,
+       dst_port: 0x0000
+       src_ipv6: 0x00000000,0x00000000,0x00000000,0x00000000,
+       dst_ipv6: 0x00000000,0x00000000,0x00000000,0x00000000
+     FLEX PAYLOAD SRC OFFSET:
+       L2_PAYLOAD:    0      1	    2	   3	  4	 5	6  ...
+       L3_PAYLOAD:    0      1	    2	   3	  4	 5	6  ...
+       L4_PAYLOAD:    0      1	    2	   3	  4	 5	6  ...
+     FLEX MASK CFG:
+       ipv4-udp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-tcp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-sctp:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-other:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-frag:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-udp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-tcp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-sctp:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-other:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-frag:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       l2_payload:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+     guarant_count: 1	        best_count:    0
+     guarant_space: 512         best_space:    7168
+     collision:     0	        free:	       0
+     maxhash:	    0	        maxlen:        0
+     add:	    0	        remove:        0
+     f_add:	    0	        f_remove:      0
+
+
+Delete all flow director rules on a port:
+
+.. code-block:: console
+
+   testpmd> flush_flow_director 0
+
diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst
index 8618114..8c9abcb 100644
--- a/doc/guides/nics/index.rst
+++ b/doc/guides/nics/index.rst
@@ -42,6 +42,7 @@ Network Interface Controller Drivers
     enic
     fm10k
     ixgbe
+    i40e
     intel_vf
     mlx4
     mlx5
-- 
2.4.0

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v2] doc: add doc for i40e pmd driver introduction
  2016-02-23  1:23 ` [PATCH v2] " Jingjing Wu
@ 2016-02-23 10:21   ` Mcnamara, John
  2016-03-06 22:39   ` Thomas Monjalon
  2016-03-09  7:28   ` [PATCH v3 0/2] doc: add " Jingjing Wu
  2 siblings, 0 replies; 13+ messages in thread
From: Mcnamara, John @ 2016-02-23 10:21 UTC (permalink / raw)
  To: Wu, Jingjing, dev

> -----Original Message-----
> From: Wu, Jingjing
> Sent: Tuesday, February 23, 2016 1:23 AM
> To: dev@dpdk.org
> Cc: Wu, Jingjing <jingjing.wu@intel.com>; Zhang, Helin
> <helin.zhang@intel.com>; Lu, Wenzhuo <wenzhuo.lu@intel.com>; Mcnamara,
> John <john.mcnamara@intel.com>
> Subject: [PATCH v2] doc: add doc for i40e pmd driver introduction
> 
> A new doc "i40e.rst" is added to introduce i40e pmd driver.
> 
> Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>

Acked-by: John McNamara <john.mcnamara@intel.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2] doc: add doc for i40e pmd driver introduction
  2016-02-23  1:23 ` [PATCH v2] " Jingjing Wu
  2016-02-23 10:21   ` Mcnamara, John
@ 2016-03-06 22:39   ` Thomas Monjalon
  2016-03-07  2:37     ` Wu, Jingjing
  2016-03-09  7:28   ` [PATCH v3 0/2] doc: add " Jingjing Wu
  2 siblings, 1 reply; 13+ messages in thread
From: Thomas Monjalon @ 2016-03-06 22:39 UTC (permalink / raw)
  To: Jingjing Wu; +Cc: dev

2016-02-23 09:23, Jingjing Wu:
> A new doc "i40e.rst" is added to introduce i40e pmd driver.
> 
> Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
> ---
>  doc/guides/nics/i40e.rst  | 368 ++++++++++++++++++++++++++++++++++++++++++++++
>  doc/guides/nics/index.rst |   1 +
>  2 files changed, 369 insertions(+)
>  create mode 100644 doc/guides/nics/i40e.rst

May I ask to update the table in overview.rst, please?

> --- a/doc/guides/nics/index.rst
> +++ b/doc/guides/nics/index.rst
> @@ -42,6 +42,7 @@ Network Interface Controller Drivers
>      enic
>      fm10k
>      ixgbe
> +    i40e
>      intel_vf
>      mlx4
>      mlx5

Please, let's keep an alphabetical order and insert i40e before ixgbe.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2] doc: add doc for i40e pmd driver introduction
  2016-03-06 22:39   ` Thomas Monjalon
@ 2016-03-07  2:37     ` Wu, Jingjing
  2016-03-07  8:35       ` Thomas Monjalon
  0 siblings, 1 reply; 13+ messages in thread
From: Wu, Jingjing @ 2016-03-07  2:37 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

Hi, Thomas

> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Monday, March 07, 2016 6:39 AM
> To: Wu, Jingjing
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v2] doc: add doc for i40e pmd driver
> introduction
> 
> 2016-02-23 09:23, Jingjing Wu:
> > A new doc "i40e.rst" is added to introduce i40e pmd driver.
> >
> > Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
> > ---
> >  doc/guides/nics/i40e.rst  | 368
> ++++++++++++++++++++++++++++++++++++++++++++++
> >  doc/guides/nics/index.rst |   1 +
> >  2 files changed, 369 insertions(+)
> >  create mode 100644 doc/guides/nics/i40e.rst
> 
> May I ask to update the table in overview.rst, please?
So glad to see this table, I would like to update it. But I'm not sure which symbol
should I use to indicate support, not support, or haven't tested.  Take the
row "ARMv7" for example, we haven't test on ARM platform.
Could you share a draft patch to show us how to update it?

> 
> > --- a/doc/guides/nics/index.rst
> > +++ b/doc/guides/nics/index.rst
> > @@ -42,6 +42,7 @@ Network Interface Controller Drivers
> >      enic
> >      fm10k
> >      ixgbe
> > +    i40e
> >      intel_vf
> >      mlx4
> >      mlx5
> 
> Please, let's keep an alphabetical order and insert i40e before ixgbe.
OK, I will do that.

Thanks
Jingjing

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2] doc: add doc for i40e pmd driver introduction
  2016-03-07  2:37     ` Wu, Jingjing
@ 2016-03-07  8:35       ` Thomas Monjalon
  2016-03-07  8:38         ` Wu, Jingjing
  0 siblings, 1 reply; 13+ messages in thread
From: Thomas Monjalon @ 2016-03-07  8:35 UTC (permalink / raw)
  To: Wu, Jingjing; +Cc: dev

2016-03-07 02:37, Wu, Jingjing:
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> > May I ask to update the table in overview.rst, please?
> So glad to see this table, I would like to update it. But I'm not sure which symbol
> should I use to indicate support, not support, or haven't tested.  Take the
> row "ARMv7" for example, we haven't test on ARM platform.
> Could you share a draft patch to show us how to update it?

Please use an uppercase X to fill the table as in this patch:
	http://dpdk.org/ml/archives/dev/2016-March/034699.html

If you are not sure if a row is supported (ARM case), please ignore the row.
Hint: i40e is disabled in ARM defconfigs.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2] doc: add doc for i40e pmd driver introduction
  2016-03-07  8:35       ` Thomas Monjalon
@ 2016-03-07  8:38         ` Wu, Jingjing
  0 siblings, 0 replies; 13+ messages in thread
From: Wu, Jingjing @ 2016-03-07  8:38 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev



> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Monday, March 07, 2016 4:35 PM
> To: Wu, Jingjing
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v2] doc: add doc for i40e pmd driver
> introduction
> 
> 2016-03-07 02:37, Wu, Jingjing:
> > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> > > May I ask to update the table in overview.rst, please?
> > So glad to see this table, I would like to update it. But I'm not sure
> > which symbol should I use to indicate support, not support, or haven't
> > tested.  Take the row "ARMv7" for example, we haven't test on ARM
> platform.
> > Could you share a draft patch to show us how to update it?
> 
> Please use an uppercase X to fill the table as in this patch:
> 	http://dpdk.org/ml/archives/dev/2016-March/034699.html
> 
> If you are not sure if a row is supported (ARM case), please ignore the row.
> Hint: i40e is disabled in ARM defconfigs.

Thanks. I will work out it.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v3 0/2] doc: add i40e pmd driver introduction
  2016-02-23  1:23 ` [PATCH v2] " Jingjing Wu
  2016-02-23 10:21   ` Mcnamara, John
  2016-03-06 22:39   ` Thomas Monjalon
@ 2016-03-09  7:28   ` Jingjing Wu
  2016-03-09  7:28     ` [PATCH v3 1/2] doc: add doc for " Jingjing Wu
                       ` (2 more replies)
  2 siblings, 3 replies; 13+ messages in thread
From: Jingjing Wu @ 2016-03-09  7:28 UTC (permalink / raw)
  To: thomas.monjalon; +Cc: dev

A new doc "i40e.rst" is added to introduce i40e pmd driver.

v3 changes:
 - update table in overview.rst.
 - rework index.rst to keep an alphabetical order.

v2 changes:
 - restrict long code line
 - fix typo

Jingjing Wu (2):
  doc: add doc for i40e pmd driver introduction
  doc: add i40e to overview table

 doc/guides/nics/i40e.rst     | 368 +++++++++++++++++++++++++++++++++++++++++++
 doc/guides/nics/index.rst    |   1 +
 doc/guides/nics/overview.rst |  82 +++++-----
 3 files changed, 410 insertions(+), 41 deletions(-)
 create mode 100644 doc/guides/nics/i40e.rst

-- 
2.4.0

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v3 1/2] doc: add doc for i40e pmd driver introduction
  2016-03-09  7:28   ` [PATCH v3 0/2] doc: add " Jingjing Wu
@ 2016-03-09  7:28     ` Jingjing Wu
  2016-03-09  7:28     ` [PATCH v3 2/2] doc: add i40e to overview table Jingjing Wu
  2016-03-09 17:01     ` [PATCH v3 0/2] doc: add i40e pmd driver introduction Thomas Monjalon
  2 siblings, 0 replies; 13+ messages in thread
From: Jingjing Wu @ 2016-03-09  7:28 UTC (permalink / raw)
  To: thomas.monjalon; +Cc: dev

A new doc "i40e.rst" is added to introduce i40e pmd driver.

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
---
 doc/guides/nics/i40e.rst  | 368 ++++++++++++++++++++++++++++++++++++++++++++++
 doc/guides/nics/index.rst |   1 +
 2 files changed, 369 insertions(+)
 create mode 100644 doc/guides/nics/i40e.rst

diff --git a/doc/guides/nics/i40e.rst b/doc/guides/nics/i40e.rst
new file mode 100644
index 0000000..4019b41
--- /dev/null
+++ b/doc/guides/nics/i40e.rst
@@ -0,0 +1,368 @@
+..  BSD LICENSE
+    Copyright(c) 2016 Intel Corporation. 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 Intel Corporation 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 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.
+
+I40E Poll Mode Driver
+======================
+
+The I40E PMD (librte_pmd_i40e) provides poll mode driver support
+for the Intel X710/XL710/X722 10/40 Gbps family of adapters.
+
+
+Features
+--------
+
+Features of the I40E PMD are:
+
+- Multiple queues for TX and RX
+- Receiver Side Scaling (RSS)
+- MAC/VLAN filtering
+- Packet type information
+- Flow director
+- Cloud filter
+- Checksum offload
+- VLAN/QinQ stripping and inserting
+- TSO offload
+- Promiscuous mode
+- Multicast mode
+- Port hardware statistics
+- Jumbo frames
+- Link state information
+- Link flow control
+- Mirror on port, VLAN and VSI
+- Interrupt mode for RX
+- Scattered and gather for TX and RX
+- Vector Poll mode driver
+- DCB
+- VMDQ
+- SR-IOV VF
+- Hot plug
+- IEEE1588/802.1AS timestamping
+
+
+Prerequisites
+-------------
+
+- Identifying your adapter using `Intel Support
+  <http://www.intel.com/support>`_ and get the latest NVM/FW images.
+
+- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
+
+- To get better performance on Intel platforms, please follow the "How to get best performance with NICs on Intel platforms"
+  section of the :ref:`Getting Started Guide for Linux <linux_gsg>`.
+
+
+Pre-Installation Configuration
+------------------------------
+
+Config File Options
+~~~~~~~~~~~~~~~~~~~
+
+The following options can be modified in the ``config`` file.
+Please note that enabling debugging options may affect system performance.
+
+- ``CONFIG_RTE_LIBRTE_I40E_PMD`` (default ``y``)
+
+  Toggle compilation of the ``librte_pmd_i40e`` driver.
+
+- ``CONFIG_RTE_LIBRTE_I40E_DEBUG_*`` (default ``n``)
+
+  Toggle display of generic debugging messages.
+
+- ``CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC`` (default ``y``)
+
+  Toggle bulk allocation for RX.
+
+- ``CONFIG_RTE_LIBRTE_I40E_INC_VECTOR`` (default ``n``)
+
+  Toggle the use of Vector PMD instead of normal RX/TX path.
+  To enable vPMD for RX, bulk allocation for Rx must be allowed.
+
+- ``CONFIG_RTE_LIBRTE_I40E_RX_OLFLAGS_ENABLE`` (default ``y``)
+
+  Toggle to enable RX ``olflags``.
+  This is only meaningful when Vector PMD is used.
+
+- ``CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC`` (default ``n``)
+
+  Toggle to use a 16-byte RX descriptor, by default the RX descriptor is 32 byte.
+
+- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF`` (default ``64``)
+
+  Number of queues reserved for PF.
+
+- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF`` (default ``4``)
+
+  Number of queues reserved for each SR-IOV VF.
+
+- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM`` (default ``4``)
+
+  Number of queues reserved for each VMDQ Pool.
+
+- ``CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL`` (default ``-1``)
+
+  Interrupt Throttling interval.
+
+
+Driver Compilation
+~~~~~~~~~~~~~~~~~~
+
+To compile the I40E PMD see :ref:`Getting Started Guide for Linux <linux_gsg>` or
+:ref:`Getting Started Guide for FreeBSD <freebsd_gsg>` depending on your platform.
+
+
+Linux
+-----
+
+
+Running testpmd
+~~~~~~~~~~~~~~~
+
+This section demonstrates how to launch ``testpmd`` with Intel XL710/X710
+devices managed by ``librte_pmd_i40e`` in the Linux operating system.
+
+#. Load ``igb_uio`` or ``vfio-pci`` driver:
+
+   .. code-block:: console
+
+      modprobe uio
+      insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
+
+   or
+
+   .. code-block:: console
+
+      modprobe vfio-pci
+
+#. Bind the XL710/X710 adapters to ``igb_uio`` or ``vfio-pci`` loaded in the previous step:
+
+   .. code-block:: console
+
+      ./tools/dpdk_nic_bind.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
+
+#. Start ``testpmd`` with basic parameters:
+
+   .. code-block:: console
+
+      ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w 83:00.0 -- -i
+
+   Example output:
+
+   .. code-block:: console
+
+      ...
+      EAL: PCI device 0000:83:00.0 on NUMA socket 1
+      EAL: probe driver: 8086:1572 rte_i40e_pmd
+      EAL: PCI memory mapped at 0x7f7f80000000
+      EAL: PCI memory mapped at 0x7f7f80800000
+      PMD: eth_i40e_dev_init(): FW 5.0 API 1.5 NVM 05.00.02 eetrack 8000208a
+      Interactive-mode selected
+      Configuring Port 0 (socket 0)
+      ...
+
+      PMD: i40e_dev_rx_queue_setup(): Rx Burst Bulk Alloc Preconditions are
+      satisfied.Rx Burst Bulk Alloc function will be used on port=0, queue=0.
+
+      ...
+      Port 0: 68:05:CA:26:85:84
+      Checking link statuses...
+      Port 0 Link Up - speed 10000 Mbps - full-duplex
+      Done
+
+      testpmd>
+
+
+SR-IOV: Prerequisites and sample Application Notes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+#. Load the kernel module:
+
+   .. code-block:: console
+
+      modprobe i40e
+
+   Check the output in dmesg:
+
+   .. code-block:: console
+
+      i40e 0000:83:00.1 ens802f0: renamed from eth0
+
+#. Bring up the PF ports:
+
+   .. code-block:: console
+
+      ifconfig ens802f0 up
+
+#. Create VF device(s):
+
+   Echo the number of VFs to be created into the ``sriov_numvfs`` sysfs entry
+   of the parent PF.
+
+   Example:
+
+   .. code-block:: console
+
+      echo 2 > /sys/devices/pci0000:00/0000:00:03.0/0000:81:00.0/sriov_numvfs
+
+
+#. Assign VF MAC address:
+
+   Assign MAC address to the VF using iproute2 utility. The syntax is:
+
+   .. code-block:: console
+
+      ip link set <PF netdev id> vf <VF id> mac <macaddr>
+
+   Example:
+
+   .. code-block:: console
+
+      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*.
+
+
+Sample Application Notes
+------------------------
+
+Vlan filter
+~~~~~~~~~~~
+
+Vlan filter only works when Promiscuous mode is off.
+
+To start ``testpmd``, and add vlan 10 to port 0:
+
+.. code-block:: console
+
+    ./app/testpmd -c ffff -n 4 -- -i --forward-mode=mac
+    ...
+
+    testpmd> set promisc 0 off
+    testpmd> rx_vlan add 10 0
+
+
+Flow Director
+~~~~~~~~~~~~~
+
+The Flow Director works in receive mode to identify specific flows or sets of flows and route them to specific queues.
+The Flow Director filters can match the different fields for different type of packet: flow type, specific input set per flow type and the flexible payload.
+
+The default input set of each flow type is::
+
+   ipv4-other : src_ip_address, dst_ip_address
+   ipv4-frag  : src_ip_address, dst_ip_address
+   ipv4-tcp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv4-udp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv4-sctp  : src_ip_address, dst_ip_address, src_port, dst_port,
+                verification_tag
+   ipv6-other : src_ip_address, dst_ip_address
+   ipv6-frag  : src_ip_address, dst_ip_address
+   ipv6-tcp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv6-udp   : src_ip_address, dst_ip_address, src_port, dst_port
+   ipv6-sctp  : src_ip_address, dst_ip_address, src_port, dst_port,
+                verification_tag
+   l2_payload : ether_type
+
+The flex payload is selected from offset 0 to 15 of packet's payload by default, while it is masked out from matching.
+
+Start ``testpmd`` with ``--disable-rss`` and ``--pkt-filter-mode=perfect``:
+
+.. code-block:: console
+
+   ./app/testpmd -c ffff -n 4 -- -i --disable-rss --pkt-filter-mode=perfect \
+                 --rxq=8 --txq=8 --nb-cores=8 --nb-ports=1
+
+Add a rule to direct ``ipv4-udp`` packet whose ``dst_ip=2.2.2.5, src_ip=2.2.2.3, src_port=32, dst_port=32`` to queue 1:
+
+.. code-block:: console
+
+   testpmd> flow_director_filter 0 mode IP add flow ipv4-udp  \
+            src 2.2.2.3 32 dst 2.2.2.5 32 vlan 0 flexbytes () \
+	    fwd pf queue 1 fd_id 1
+
+Check the flow director status:
+
+.. code-block:: console
+
+   testpmd> show port fdir 0
+
+   ######################## FDIR infos for port 0      ####################
+     MODE:   PERFECT
+     SUPPORTED FLOW TYPE:  ipv4-frag ipv4-tcp ipv4-udp ipv4-sctp ipv4-other
+                           ipv6-frag ipv6-tcp ipv6-udp ipv6-sctp ipv6-other
+			   l2_payload
+     FLEX PAYLOAD INFO:
+     max_len:	    16	        payload_limit: 480
+     payload_unit:  2	        payload_seg:   3
+     bitmask_unit:  2	        bitmask_num:   2
+     MASK:
+       vlan_tci: 0x0000,
+       src_ipv4: 0x00000000,
+       dst_ipv4: 0x00000000,
+       src_port: 0x0000,
+       dst_port: 0x0000
+       src_ipv6: 0x00000000,0x00000000,0x00000000,0x00000000,
+       dst_ipv6: 0x00000000,0x00000000,0x00000000,0x00000000
+     FLEX PAYLOAD SRC OFFSET:
+       L2_PAYLOAD:    0      1	    2	   3	  4	 5	6  ...
+       L3_PAYLOAD:    0      1	    2	   3	  4	 5	6  ...
+       L4_PAYLOAD:    0      1	    2	   3	  4	 5	6  ...
+     FLEX MASK CFG:
+       ipv4-udp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-tcp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-sctp:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-other:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv4-frag:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-udp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-tcp:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-sctp:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-other:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       ipv6-frag:   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+       l2_payload:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+     guarant_count: 1	        best_count:    0
+     guarant_space: 512         best_space:    7168
+     collision:     0	        free:	       0
+     maxhash:	    0	        maxlen:        0
+     add:	    0	        remove:        0
+     f_add:	    0	        f_remove:      0
+
+
+Delete all flow director rules on a port:
+
+.. code-block:: console
+
+   testpmd> flush_flow_director 0
+
diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst
index 8618114..0b353a8 100644
--- a/doc/guides/nics/index.rst
+++ b/doc/guides/nics/index.rst
@@ -41,6 +41,7 @@ Network Interface Controller Drivers
     e1000em
     enic
     fm10k
+    i40e
     ixgbe
     intel_vf
     mlx4
-- 
2.4.0

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v3 2/2] doc: add i40e to overview table
  2016-03-09  7:28   ` [PATCH v3 0/2] doc: add " Jingjing Wu
  2016-03-09  7:28     ` [PATCH v3 1/2] doc: add doc for " Jingjing Wu
@ 2016-03-09  7:28     ` Jingjing Wu
  2016-03-09 17:01     ` [PATCH v3 0/2] doc: add i40e pmd driver introduction Thomas Monjalon
  2 siblings, 0 replies; 13+ messages in thread
From: Jingjing Wu @ 2016-03-09  7:28 UTC (permalink / raw)
  To: thomas.monjalon; +Cc: dev

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
---
 doc/guides/nics/overview.rst | 82 ++++++++++++++++++++++----------------------
 1 file changed, 41 insertions(+), 41 deletions(-)

diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index d4c6ff4..431bd1e 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -86,61 +86,61 @@ Most of these differences are summarized below.
                                         e   e       e   e   e                   e
                                         c   c       c   c   c                   c
    ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-   link status
-   link status event
-   Rx interrupt
-   queue start/stop
+   link status                        X X
+   link status event                  X X
+   Rx interrupt                       X X X X
+   queue start/stop                   X X X X
    MTU update
-   jumbo frame
-   scattered Rx
+   jumbo frame                        X X X X
+   scattered Rx                       X X X X
    LRO
-   TSO
-   promiscuous mode
-   allmulticast mode
-   unicast MAC filter
-   multicast MAC filter
-   RSS hash
-   RSS key update
-   RSS reta update
-   VMDq
-   SR-IOV
-   DCB
-   VLAN filter
-   ethertype filter
+   TSO                                X X X X
+   promiscuous mode                   X X X X
+   allmulticast mode                  X X X X
+   unicast MAC filter                 X X X X
+   multicast MAC filter               X X X X
+   RSS hash                           X X X X
+   RSS key update                     X X X X
+   RSS reta update                    X X X X
+   VMDq                               X X
+   SR-IOV                             X X
+   DCB                                X X
+   VLAN filter                        X X X X
+   ethertype filter                   X X
    n-tuple filter
    SYN filter
-   tunnel filter
+   tunnel filter                      X X
    flexible filter
-   hash filter
-   flow director
-   flow control
+   hash filter                        X X X X
+   flow director                      X X
+   flow control                       X X
    rate limitation
-   traffic mirroring
-   CRC offload
-   VLAN offload
-   QinQ offload
-   L3 checksum offload
-   L4 checksum offload
-   inner L3 checksum
-   inner L4 checksum
-   packet type parsing
-   timesync
-   basic stats
-   extended stats
+   traffic mirroring                  X X
+   CRC offload                        X   X
+   VLAN offload                       X   X
+   QinQ offload                       X   X
+   L3 checksum offload                X   X
+   L4 checksum offload                X   X
+   inner L3 checksum                  X   X
+   inner L4 checksum                  X   X
+   packet type parsing                X   X
+   timesync                           X X
+   basic stats                        X X X X
+   extended stats                     X X X X
    stats per queue
    EEPROM dump
    registers dump
-   multiprocess aware
-   BSD nic_uio
-   Linux UIO
-   Linux VFIO
+   multiprocess aware                 X X X X
+   BSD nic_uio                        X X X X
+   Linux UIO                          X X X X
+   Linux VFIO                         X X X X
    other kdrv
    ARMv7
    ARMv8
    Power8
    TILE-Gx
-   x86-32
-   x86-64
+   x86-32                             X X X X
+   x86-64                             X X X X
    usage doc
    design doc
    perf doc
-- 
2.4.0

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v3 0/2] doc: add i40e pmd driver introduction
  2016-03-09  7:28   ` [PATCH v3 0/2] doc: add " Jingjing Wu
  2016-03-09  7:28     ` [PATCH v3 1/2] doc: add doc for " Jingjing Wu
  2016-03-09  7:28     ` [PATCH v3 2/2] doc: add i40e to overview table Jingjing Wu
@ 2016-03-09 17:01     ` Thomas Monjalon
  2 siblings, 0 replies; 13+ messages in thread
From: Thomas Monjalon @ 2016-03-09 17:01 UTC (permalink / raw)
  To: Jingjing Wu; +Cc: dev

2016-03-09 15:28, Jingjing Wu:
> A new doc "i40e.rst" is added to introduce i40e pmd driver.
> 
> v3 changes:
>  - update table in overview.rst.
>  - rework index.rst to keep an alphabetical order.
> 
> v2 changes:
>  - restrict long code line
>  - fix typo
> 
> Jingjing Wu (2):
>   doc: add doc for i40e pmd driver introduction
>   doc: add i40e to overview table

Applied as one patch, thanks

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2016-03-09 17:03 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-28  8:50 [PATCH] doc: add doc for i40e pmd driver introduction Jingjing Wu
2016-02-22  5:49 ` Lu, Wenzhuo
2016-02-22 15:34 ` Mcnamara, John
2016-02-23  1:23 ` [PATCH v2] " Jingjing Wu
2016-02-23 10:21   ` Mcnamara, John
2016-03-06 22:39   ` Thomas Monjalon
2016-03-07  2:37     ` Wu, Jingjing
2016-03-07  8:35       ` Thomas Monjalon
2016-03-07  8:38         ` Wu, Jingjing
2016-03-09  7:28   ` [PATCH v3 0/2] doc: add " Jingjing Wu
2016-03-09  7:28     ` [PATCH v3 1/2] doc: add doc for " Jingjing Wu
2016-03-09  7:28     ` [PATCH v3 2/2] doc: add i40e to overview table Jingjing Wu
2016-03-09 17:01     ` [PATCH v3 0/2] doc: add i40e pmd driver introduction Thomas Monjalon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.