From 252e1e5764439085e32f07695b45848a079ba4df Mon Sep 17 00:00:00 2001 From: Ian Stokes Date: Tue, 15 Dec 2020 16:41:28 +0000 Subject: dpdk: Update to use DPDK v20.11. This commit adds support for DPDK v20.11, it includes the following changes. 1. travis: Remove explicit DPDK kmods configuration. 2. sparse: Fix build with 20.05 DPDK tracepoints. 3. netdev-dpdk: Remove experimental API flag. http://patchwork.ozlabs.org/project/openvswitch/list/?series=173216&state=* 4. sparse: Update to DPDK 20.05 trace point header. http://patchwork.ozlabs.org/project/openvswitch/list/?series=179604&state=* 5. sparse: Fix build with DPDK 20.08. http://patchwork.ozlabs.org/project/openvswitch/list/?series=200181&state=* 6. build: Add support for DPDK meson build. http://patchwork.ozlabs.org/project/openvswitch/list/?series=199138&state=* 7. netdev-dpdk: Remove usage of RTE_ETH_DEV_CLOSE_REMOVE flag. http://patchwork.ozlabs.org/project/openvswitch/list/?series=207850&state=* 8. netdev-dpdk: Fix build with 20.11-rc1. http://patchwork.ozlabs.org/project/openvswitch/list/?series=209006&state=* 9. sparse: Fix __ATOMIC_* redefinition errors http://patchwork.ozlabs.org/project/openvswitch/list/?series=209452&state=* 10. build: Remove DPDK make build references. http://patchwork.ozlabs.org/project/openvswitch/list/?series=216682&state=* For credit all authors of the original commits to 'dpdk-latest' with the above changes have been added as co-authors for this commit. Signed-off-by: David Marchand Co-authored-by: David Marchand Signed-off-by: Sunil Pai G Co-authored-by: Sunil Pai G Signed-off-by: Eli Britstein Co-authored-by: Eli Britstein Tested-by: Harry van Haaren Tested-by: Govindharajan, Hariprasad Tested-by: Tonghao Zhang Acked-by: Ilya Maximets Signed-off-by: Ian Stokes --- Documentation/intro/install/afxdp.rst | 2 +- Documentation/intro/install/dpdk.rst | 68 +++++++++++++++++++---------------- 2 files changed, 39 insertions(+), 31 deletions(-) (limited to 'Documentation/intro') diff --git a/Documentation/intro/install/afxdp.rst b/Documentation/intro/install/afxdp.rst index 3c8f78825..aad0aeebe 100644 --- a/Documentation/intro/install/afxdp.rst +++ b/Documentation/intro/install/afxdp.rst @@ -396,7 +396,7 @@ PVP using vhostuser device -------------------------- First, build OVS with DPDK and AFXDP:: - ./configure --enable-afxdp --with-dpdk= + ./configure --enable-afxdp --with-dpdk=shared|static make -j4 && make install Create a vhost-user port from OVS:: diff --git a/Documentation/intro/install/dpdk.rst b/Documentation/intro/install/dpdk.rst index fe11571d2..a595417ce 100644 --- a/Documentation/intro/install/dpdk.rst +++ b/Documentation/intro/install/dpdk.rst @@ -42,7 +42,7 @@ Build requirements In addition to the requirements described in :doc:`general`, building Open vSwitch with DPDK will require the following: -- DPDK 19.11.2 +- DPDK 20.11 - A `DPDK supported NIC`_ @@ -59,8 +59,10 @@ vSwitch with DPDK will require the following: Detailed system requirements can be found at `DPDK requirements`_. -.. _DPDK supported NIC: http://dpdk.org/doc/nics -.. _DPDK requirements: http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html +.. _DPDK supported NIC: https://doc.dpdk.org/guides-20.11/nics/index.html +.. _DPDK requirements: https://doc.dpdk.org/guides-20.11/linux_gsg/sys_reqs.html + +.. _dpdk-install: Installing ---------- @@ -71,38 +73,44 @@ Install DPDK #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``:: $ cd /usr/src/ - $ wget https://fast.dpdk.org/rel/dpdk-19.11.2.tar.xz - $ tar xf dpdk-19.11.2.tar.xz - $ export DPDK_DIR=/usr/src/dpdk-stable-19.11.2 + $ wget https://fast.dpdk.org/rel/dpdk-20.11.tar.xz + $ tar xf dpdk-20.11.tar.xz + $ export DPDK_DIR=/usr/src/dpdk-20.11 $ cd $DPDK_DIR -#. (Optional) Configure DPDK as a shared library +#. Configure and install DPDK using Meson - DPDK can be built as either a static library or a shared library. By - default, it is configured for the former. If you wish to use the latter, set - ``CONFIG_RTE_BUILD_SHARED_LIB=y`` in ``$DPDK_DIR/config/common_base``. + Build and install the DPDK library:: - .. note:: + $ export DPDK_BUILD=$DPDK_DIR/build + $ meson build + $ ninja -C build + $ sudo ninja -C build install + $ sudo ldconfig - Minor performance loss is expected when using OVS with a shared DPDK - library compared to a static DPDK library. + Detailed information can be found at `DPDK documentation`_. -#. Configure and install DPDK +#. (Optional) Configure and export the DPDK shared library location - Build and install the DPDK library:: + Since DPDK is built both as static and shared library by default, no extra + configuration is required for the build. - $ export DPDK_TARGET=x86_64-native-linuxapp-gcc - $ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET - $ make install T=$DPDK_TARGET DESTDIR=install + Exporting the path to library is not necessary if the DPDK libraries are + system installed. For libraries installed using a prefix, export the path + to this library and also update the $PKG_CONFIG_PATH for use + before building OVS:: -#. (Optional) Export the DPDK shared library location + $ export LD_LIBRARY_PATH=/path/to/installed/DPDK/libraries + $ export PKG_CONFIG_PATH=/path/to/installed/".pc" file/for/DPDK - If DPDK was built as a shared library, export the path to this library for - use when building OVS:: + .. note:: - $ export LD_LIBRARY_PATH=$DPDK_DIR/x86_64-native-linuxapp-gcc/lib + Minor performance loss is expected when using OVS with a shared DPDK + library compared to a static DPDK library. .. _DPDK sources: http://dpdk.org/rel +.. _DPDK documentation: + https://doc.dpdk.org/guides-20.11/linux_gsg/build_dpdk.html Install OVS ~~~~~~~~~~~ @@ -121,16 +129,16 @@ has to be configured to build against the DPDK library (``--with-dpdk``). #. Bootstrap, if required, as described in :ref:`general-bootstrapping` -#. Configure the package using the ``--with-dpdk`` flag:: +#. Configure the package using the ``--with-dpdk`` flag: + + If OVS must consume DPDK static libraries + (also equivalent to ``--with-dpdk=yes`` ):: - $ ./configure --with-dpdk=$DPDK_BUILD + $ ./configure --with-dpdk=static - where ``DPDK_BUILD`` is the path to the built DPDK library. This can be - skipped if DPDK library is installed in its default location. + If OVS must consume DPDK shared libraries:: - If no path is provided to ``--with-dpdk``, but a pkg-config configuration - for libdpdk is available the include paths will be generated via an - equivalent ``pkg-config --cflags libdpdk``. + $ ./configure --with-dpdk=shared .. note:: While ``--with-dpdk`` is required, you can pass any other configuration @@ -703,7 +711,7 @@ Limitations release notes`_. .. _DPDK release notes: - https://doc.dpdk.org/guides-19.11/rel_notes/release_19_11.html + https://doc.dpdk.org/guides-20.11/rel_notes/release_20_11.html - Upper bound MTU: DPDK device drivers differ in how the L2 frame for a given MTU value is calculated e.g. i40e driver includes 2 x vlan headers in -- cgit v1.2.1