[dpdk-dev] [PATCH v4] doc: flow bifurcation guide on Linux

2016-07-22 Thread Thomas Monjalon
> > Flow Bifurcation is a mechanism which uses features of advanced Ethernet
> > devices to split traffic between queues. It provides the capability to let
> > the kernel driver and DPDK driver co-exist and take advantage of both.
> > 
> > It is achieved by using SR-IOV and the NIC's advanced filtering. This
> > patch describes Flow Bifurcation and adds the user guide for ixgbe and
> > i40e NICs.
> > 
> > Signed-off-by: Jingjing Wu 
> 
> Acked-by: John McNamara 

Applied, thanks


[dpdk-dev] [PATCH v4] doc: flow bifurcation guide on Linux

2016-07-20 Thread Wu, Jingjing


> -Original Message-
> From: Mcnamara, John
> Sent: Wednesday, July 20, 2016 12:35 AM
> To: Wu, Jingjing
> Cc: dev at dpdk.org; Liu, Yong; Zhang, Helin; Iremonger, Bernard
> Subject: RE: [PATCH v4] doc: flow bifurcation guide on Linux
> 
> 
> 
> > -Original Message-
> > From: Wu, Jingjing
> > Sent: Tuesday, July 19, 2016 4:31 AM
> > To: Mcnamara, John 
> > Cc: dev at dpdk.org; Wu, Jingjing ; Liu, Yong
> > ; Zhang, Helin 
> > Subject: [PATCH v4] doc: flow bifurcation guide on Linux
> >
> > Flow Bifurcation is a mechanism which uses features of advanced
> > Ethernet devices to split traffic between queues. It provides the
> > capability to let the kernel driver and DPDK driver co-exist and take
> advantage of both.
> >
> > It is achieved by using SR-IOV and the NIC's advanced filtering. This
> > patch describes Flow Bifurcation and adds the user guide for ixgbe and
> > i40e NICs.
> >
> > Signed-off-by: Jingjing Wu 
> 
> 
> 
> 
> This patch is dependent on:
> [PATCH v5 1/2] doc: live migration of VM with Virtio and VF
> 
> The following patch is also dependent on it:
> 
> [PATCH v3 1/2] doc: live migration of VM with vhost_user on host
> 
> There is now a merge conflict between your patch and the second patch
> because index.rst has been changed.
> 
> Maybe the 2 patches above could be combined and you can rebase your
> patch against it.
> 
Sure, I can definitely rebase if above one or two patches are merged. Thanks.

> But as for the patch itself:
> 
> 
> Acked-by: John McNamara 



[dpdk-dev] [PATCH v4] doc: flow bifurcation guide on Linux

2016-07-19 Thread Mcnamara, John


> -Original Message-
> From: Wu, Jingjing
> Sent: Tuesday, July 19, 2016 4:31 AM
> To: Mcnamara, John 
> Cc: dev at dpdk.org; Wu, Jingjing ; Liu, Yong
> ; Zhang, Helin 
> Subject: [PATCH v4] doc: flow bifurcation guide on Linux
> 
> Flow Bifurcation is a mechanism which uses features of advanced Ethernet
> devices to split traffic between queues. It provides the capability to let
> the kernel driver and DPDK driver co-exist and take advantage of both.
> 
> It is achieved by using SR-IOV and the NIC's advanced filtering. This
> patch describes Flow Bifurcation and adds the user guide for ixgbe and
> i40e NICs.
> 
> Signed-off-by: Jingjing Wu 




This patch is dependent on:
[PATCH v5 1/2] doc: live migration of VM with Virtio and VF

The following patch is also dependent on it:

[PATCH v3 1/2] doc: live migration of VM with vhost_user on host

There is now a merge conflict between your patch and the second patch
because index.rst has been changed.

Maybe the 2 patches above could be combined and you can rebase your
patch against it.

But as for the patch itself:


Acked-by: John McNamara 



[dpdk-dev] [PATCH v4] doc: flow bifurcation guide on Linux

2016-07-19 Thread Jingjing Wu
Flow Bifurcation is a mechanism which uses features of advanced
Ethernet devices to split traffic between queues. It provides
the capability to let the kernel driver and DPDK driver co-exist
and take advantage of both.

It is achieved by using SR-IOV and the NIC's advanced filtering. This
patch describes Flow Bifurcation and adds the user guide for ixgbe
and i40e NICs.

Signed-off-by: Jingjing Wu 
---
v3 changes:
 - rename bifurcated driver to flow bifurcation.
 - move the doc from nics to howto.

v4 changes:
 - rework on John's comments about format.

 doc/guides/howto/flow_bifurcation.rst  | 299 +++
 doc/guides/howto/img/flow_bifurcation_overview.svg | 544 +
 doc/guides/howto/img/ixgbe_bifu_queue_idx.svg  | 101 
 doc/guides/howto/index.rst |   1 +
 4 files changed, 945 insertions(+)
 create mode 100644 doc/guides/howto/flow_bifurcation.rst
 create mode 100644 doc/guides/howto/img/flow_bifurcation_overview.svg
 create mode 100644 doc/guides/howto/img/ixgbe_bifu_queue_idx.svg

diff --git a/doc/guides/howto/flow_bifurcation.rst 
b/doc/guides/howto/flow_bifurcation.rst
new file mode 100644
index 000..a1c6262
--- /dev/null
+++ b/doc/guides/howto/flow_bifurcation.rst
@@ -0,0 +1,299 @@
+..  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.
+
+
+Flow Bifurcation How-to Guide
+=
+
+Flow Bifurcation is a mechanism which uses hardware capable Ethernet devices
+to split traffic between Linux user space and kernel space. Since it is a
+hardware assisted feature this approach can provide line rate processing
+capability. Other than :ref:`KNI `, the software is just required to
+enable device configuration, there is no need to take care of the packet
+movement during the traffic split. This can yield better performance with
+less CPU overhead.
+
+The Flow Bifurcation splits the incoming data traffic to user space
+applications (such as DPDK applications) and/or kernel space programs (such as
+the Linux kernel stack). It can direct some traffic, for example data plane
+traffic, to DPDK, while directing some other traffic, for example control
+plane traffic, to the traditional Linux networking stack.
+
+There are a number of technical options to achieve this. A typical example is
+to combine the technology of SR-IOV and packet classification filtering.
+
+SR-IOV is a PCI standard that allows the same physical adapter to be split as
+multiple virtual functions. Each virtual function (VF) has separated queues
+with physical functions (PF). The network adapter will direct traffic to a
+virtual function with a matching destination MAC address. In a sense, SR-IOV
+has the capability for queue division.
+
+Packet classification filtering is a hardware capability available on most
+network adapters. Filters can be configured to direct specific flows to a
+given receive queue by hardware. Different NICs may have different filter
+types to direct flows to a Virtual Function or a queue that belong to it.
+
+In this way the Linux networking stack can receive specific traffic through
+the kernel driver while a DPDK application can receive specific traffic
+bypassing the Linux kernel by using drivers like VFIO or the DPDK ``igb_uio``
+module.
+
+.. _figure_flow_bifurcation_overview:
+
+.. figure:: img/flow_bifurcation_overview.*
+
+   Flow Bifurcation Overview
+
+
+Using