On 4/23/15 4:58 PM, Kavanagh, Mark B wrote:
Hi all,

Just a quick poll: are the resolutions to review comments in this patch 
acceptable to everyone?

If I've missed anything, or are there any additional opens that need to be 
addressed before it can be merged, just let me know.

Thanks in advance,
Mark
Mark,

I have been running it. It seems to work well and is quite stable. I vote for merge. I don't see a reason to stay with 1.8.

--TFH

Update relevant artifacts to add support for DPDK v2.0.0
- INSTALL.DPDK.md
- travis build script
- acinclude.m4: add 'mssse3' flag to OVS_CFLAGS
- netdev-dpdk: fix build with unified offload types in DPDK v2.0.0

Note that this breaks compatibility with DPDK v1.8.0

v1: - update DPDK version & build instructions in INSTALL.DPDK.md
    - update DPDK version and remove compile flags in travis/build.sh
    - fix build with unified offload types in DPDK v2.0.0

v2: - add mssse3 flag to OVS_CFLAGS in acinclude.m4
    - reinstate '-Wno-cast-align' compile flag for clang
    - add details of vhost user support limitations to INSTALL.DPDK.md
    - refactor travis/build.sh to reflect these changes

v3: -correct minor typos in commit message

Signed-off-by: Mark Kavanagh <mark.b.kavan...@intel.com>
Signed-off-by: Panu Matilainen <pmati...@redhat.com>
---
.travis/build.sh  | 11 +++++++----
INSTALL.DPDK.md   | 13 +++++++++----
acinclude.m4      |  2 +-
lib/netdev-dpdk.c |  3 +--
4 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/.travis/build.sh b/.travis/build.sh
index 46c5c4d..c7796e1 100755
--- a/.travis/build.sh
+++ b/.travis/build.sh
@@ -49,6 +49,7 @@ function install_dpdk()
     find ./ -type f | xargs sed -i 
's/max-inline-insns-single=100/max-inline-insns-
single=400/'
     sed -ri 's,(CONFIG_RTE_BUILD_COMBINE_LIBS=).*,\1y,' config/common_linuxapp
     sed -ri 's,(CONFIG_RTE_LIBRTE_VHOST=).*,\1y,' config/common_linuxapp
+    sed -ri 's,(CONFIG_RTE_LIBRTE_VHOST_USER=).*,\1n,' config/common_linuxapp
     sed -ri '/CONFIG_RTE_LIBNAME/a CONFIG_RTE_BUILD_FPIC=y' 
config/common_linuxapp
     sed -ri '/EXECENV_CFLAGS  = -pthread -fPIC/{s/$/\nelse ifeq
($(CONFIG_RTE_BUILD_FPIC),y)/;s/$/\nEXECENV_CFLAGS  = -pthread -fPIC/}' mk/exec-
env/linuxapp/rte.vars.mk
     make config CC=gcc T=x86_64-native-linuxapp-gcc
@@ -68,12 +69,14 @@ fi

if [ "$DPDK" ]; then
     if [ -z "$DPDK_VER" ]; then
-        DPDK_VER="1.8.0"
+        DPDK_VER="2.0.0"
     fi
     install_dpdk $DPDK_VER
-    # Disregard bad function casts until DPDK is fixed
-    CFLAGS="$CFLAGS -Wno-error=bad-function-cast -Wno-error=cast-align"
-    EXTRA_OPTS+="--with-dpdk=./dpdk-$DPDK_VER/build"
+    if [ "$CC" = "clang" ]; then
+        # Disregard cast alignment errors until DPDK is fixed
+        EXTRA_OPTS="$EXTRA_OPTS -Wno-cast-align"
+    fi
+    EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=./dpdk-$DPDK_VER/build"
elif [ "$CC" != "clang" ]; then
     # DPDK headers currently trigger sparse errors
     SPARSE_FLAGS="$SPARSE_FLAGS -Wsparse-error"
diff --git a/INSTALL.DPDK.md b/INSTALL.DPDK.md
index aae97a5..899763f 100644
--- a/INSTALL.DPDK.md
+++ b/INSTALL.DPDK.md
@@ -16,13 +16,13 @@ OVS needs a system with 1GB hugepages support.
Building and Installing:
------------------------

-Required DPDK 1.8.0, `fuse`, `fuse-devel` (`libfuse-dev` on Debian/Ubuntu)
+Required DPDK 2.0, `fuse`, `fuse-devel` (`libfuse-dev` on Debian/Ubuntu)

1. Configure build & install DPDK:
   1. Set `$DPDK_DIR`

      ```
-     export DPDK_DIR=/usr/src/dpdk-1.8.0
+     export DPDK_DIR=/usr/src/dpdk-2.0
      cd $DPDK_DIR
      ```

@@ -32,9 +32,12 @@ Required DPDK 1.8.0, `fuse`, `fuse-devel` (`libfuse-dev` on
Debian/Ubuntu)
      `CONFIG_RTE_BUILD_COMBINE_LIBS=y`

      Update `config/common_linuxapp` so that DPDK is built with vhost
-     libraries:
+     libraries; currently, OVS only supports vhost-cuse, so DPDK vhost-user
+     libraries should be explicitly turned off (they are enabled by default
+     in DPDK 2.0).

      `CONFIG_RTE_LIBRTE_VHOST=y`
+     `CONFIG_RTE_LIBRTE_VHOST_USER=n`

      Then run `make install` to build and install the library.
      For default install without IVSHMEM:
@@ -65,10 +68,12 @@ Required DPDK 1.8.0, `fuse`, `fuse-devel` (`libfuse-dev` on
Debian/Ubuntu)
    ```
    cd $(OVS_DIR)/openvswitch
    ./boot.sh
-   ./configure --with-dpdk=$DPDK_BUILD
+   ./configure --with-dpdk=$DPDK_BUILD [CFLAGS="-g -O2 -Wno-cast-align"]
    make
    ```

+   Note: 'clang' users may specify the '-Wno-cast-align' flag to suppress DPDK 
cast-align
warnings.
+
To have better performance one can enable aggressive compiler optimizations and
use the special instructions(popcnt, crc32) that may not be available on all
machines. Instead of typing `make`, type:
diff --git a/acinclude.m4 b/acinclude.m4
index b09f2f2..5988c1f 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -205,7 +205,7 @@ AC_DEFUN([OVS_CHECK_DPDK], [
     CFLAGS="$ovs_save_CFLAGS"
     LDFLAGS="$ovs_save_LDFLAGS"
     OVS_LDFLAGS="$OVS_LDFLAGS -L$DPDK_LIB_DIR"
-    OVS_CFLAGS="$OVS_CFLAGS -I$DPDK_INCLUDE"
+    OVS_CFLAGS="$OVS_CFLAGS -I$DPDK_INCLUDE -mssse3"

     # DPDK pmd drivers are not linked unless --whole-archive is used.
     #
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index f69154b..5ab119a 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -117,8 +117,7 @@ static const struct rte_eth_conf port_conf = {
     .rx_adv_conf = {
         .rss_conf = {
             .rss_key = NULL,
-            .rss_hf = ETH_RSS_IPV4_TCP | ETH_RSS_IPV4 | ETH_RSS_IPV6
-                    | ETH_RSS_IPV4_UDP | ETH_RSS_IPV6_TCP | ETH_RSS_IPV6_UDP,
+            .rss_hf = ETH_RSS_IP | ETH_RSS_UDP | ETH_RSS_TCP,
         },
     },
     .txmode = {
--
1.9.3
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev


--
Thomas F. Herbert

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to