2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 01:51:26 +00:00

netdev-dpdk: DPDK v17.11 upgrade

This commit adds support for DPDK v17.11:
- minor updates to accomodate DPDK API changes
- update references to DPDK version in Documentation
- update DPDK version in travis' linux-build script
- document DPDK v17.11 virtio driver bug

Signed-off-by: Mark Kavanagh <mark.b.kavanagh@intel.com>
Acked-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Acked-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Jan Scheurich <jan.scheurich@ericsson.com>
Tested-by: Jan Scheurich <jan.scheurich@ericsson.com>
Tested-by: Guoshuai Li <ligs@dtdream.com>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
Signed-off-by: Ian Stokes <ian.stokes@intel.com>
This commit is contained in:
Mark Kavanagh 2017-12-08 10:53:46 +00:00 committed by Ian Stokes
parent d1ce9c2033
commit 5e925ccc2a
7 changed files with 40 additions and 14 deletions

View File

@ -81,7 +81,7 @@ fi
if [ "$DPDK" ]; then
if [ -z "$DPDK_VER" ]; then
DPDK_VER="17.05.2"
DPDK_VER="17.11"
fi
install_dpdk $DPDK_VER
if [ "$CC" = "clang" ]; then

View File

@ -164,6 +164,7 @@ Q: What DPDK version does each Open vSwitch release work with?
2.6.x 16.07.2
2.7.x 16.11.3
2.8.x 17.05.2
2.9.x 17.11
============ =======
Q: I get an error like this when I configure Open vSwitch:

View File

@ -40,7 +40,7 @@ Build requirements
In addition to the requirements described in :doc:`general`, building Open
vSwitch with DPDK will require the following:
- DPDK 17.05.2
- DPDK 17.11
- A `DPDK supported NIC`_
@ -69,9 +69,9 @@ Install DPDK
#. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``::
$ cd /usr/src/
$ wget http://fast.dpdk.org/rel/dpdk-17.05.2.tar.xz
$ tar xf dpdk-17.05.2.tar.xz
$ export DPDK_DIR=/usr/src/dpdk-stable-17.05.2
$ wget http://fast.dpdk.org/rel/dpdk-17.11.tar.xz
$ tar xf dpdk-17.11.tar.xz
$ export DPDK_DIR=/usr/src/dpdk-17.11
$ cd $DPDK_DIR
#. (Optional) Configure DPDK as a shared library
@ -583,7 +583,7 @@ Limitations
The latest list of validated firmware versions can be found in the `DPDK
release notes`_.
.. _DPDK release notes: http://dpdk.org/doc/guides/rel_notes/release_17_05.html
.. _DPDK release notes: http://dpdk.org/doc/guides/rel_notes/release_17_11.html
Reporting Bugs
--------------

View File

@ -77,4 +77,4 @@ DPDK. However, this functionality was removed because:
- :doc:`vhost-user interfaces <vhost-user>` are the defacto DPDK-based path to
guests
.. _DPDK documentation: https://dpdk.readthedocs.io/en/v17.05/prog_guide/ring_lib.html
.. _DPDK documentation: https://dpdk.readthedocs.io/en/v17.11/prog_guide/ring_lib.html

View File

@ -292,9 +292,9 @@ To begin, instantiate a guest as described in :ref:`dpdk-vhost-user` or
DPDK sources to VM and build DPDK::
$ cd /root/dpdk/
$ wget http://fast.dpdk.org/rel/dpdk-17.05.2.tar.xz
$ tar xf dpdk-17.05.2.tar.xz
$ export DPDK_DIR=/root/dpdk/dpdk-stable-17.05.2
$ wget http://fast.dpdk.org/rel/dpdk-17.11.tar.xz
$ tar xf dpdk-17.11.tar.xz
$ export DPDK_DIR=/root/dpdk/dpdk-17.11
$ export DPDK_TARGET=x86_64-native-linuxapp-gcc
$ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
$ cd $DPDK_DIR
@ -327,6 +327,28 @@ Finally, start the application::
# TODO
.. important::
DPDK v17.11 virtio PMD contains a bug in the vectorized Rx function that
affects testpmd/DPDK guest applications. As such, guest DPDK applications
should use a non-vectorized Rx function.
The DPDK v17.11 virtio net driver contains a bug that prevents guest DPDK
applications from receiving packets when the vectorized Rx function is used.
This only occurs when guest-bound traffic is live before a DPDK application is
started within the guest, and where two or more forwarding cores are used. As
such, it is not recommended for guests which execute DPDK applications to use
the virtio vectorized Rx function. A simple method of ensuring that a non-
vectorized Rx function is used is to enable mergeable buffers for the guest,
with the following QEMU command line option::
mrg_rxbuf=on
Additional details regarding the virtio driver bug are available on the
`DPDK mailing list`_.
.. _DPDK mailing list: http://dpdk.org/ml/archives/dev/2017-December/082801.html
.. _dpdk-vhost-user-xml:
Sample XML
@ -387,7 +409,7 @@ Sample XML
<source type='unix' path='/usr/local/var/run/openvswitch/dpdkvhostuser0' mode='client'/>
<model type='virtio'/>
<driver queues='2'>
<host mrg_rxbuf='off'/>
<host mrg_rxbuf='on'/>
</driver>
</interface>
<interface type='vhostuser'>
@ -395,7 +417,7 @@ Sample XML
<source type='unix' path='/usr/local/var/run/openvswitch/dpdkvhostuser1' mode='client'/>
<model type='virtio'/>
<driver queues='2'>
<host mrg_rxbuf='off'/>
<host mrg_rxbuf='on'/>
</driver>
</interface>
<serial type='pty'>

2
NEWS
View File

@ -15,6 +15,8 @@ Post-v2.8.0
* Add support for compiling OVS with the latest Linux 4.13 kernel
- "flush-conntrack" in ovs-dpctl and ovs-appctl now accept a 5-tuple to
delete a specific connection tracking entry.
- DPDK:
* Add support for DPDK v17.11
v2.8.0 - 31 Aug 2017
--------------------

View File

@ -26,6 +26,7 @@
#include <sys/socket.h>
#include <linux/if.h>
#include <rte_bus_pci.h>
#include <rte_config.h>
#include <rte_cycles.h>
#include <rte_errno.h>
@ -140,8 +141,8 @@ static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 20);
#define DPDK_ETH_PORT_ID_INVALID RTE_MAX_ETHPORTS
/* DPDK library uses uint8_t for port_id. */
typedef uint8_t dpdk_port_t;
/* DPDK library uses uint16_t for port_id. */
typedef uint16_t dpdk_port_t;
#define VHOST_ENQ_RETRY_NUM 8
#define IF_NAME_SZ (PATH_MAX > IFNAMSIZ ? PATH_MAX : IFNAMSIZ)