This picks up the following relevant OVS commits:
  8893e24d9d dpdk: Update to use v23.11.
  ed738eca39 util: Annotate function that will never return NULL.
  77d0bad04 mcast-snooping: Store IGMP/MLD protocol version.
  b222593bc6 mcast-snooping: Add group protocol to mdb/show output.
  a940a691e7 ovs-atomic: Fix inclusion of Clang header by GCC 14.
  b0cf73112d dp-packet: Reset offload/offsets when clearing a packet.

This commit also ports the CI DPDK related changes from OVS commit
8893e24d9d09 ("dpdk: Update to use v23.11.") which are required as 23.11
is the supported DPDK branch on OVS 3.3.  There's also a small change
that had to be made when mangling the prefix path of the installed
DPDK version in the container.

As a side effect this will also address OVN Fedora 40 (rawhide) build
failures on aarch64 and s390x.  They are fixed by a940a691e7d9
("ovs-atomic: Fix inclusion of Clang header by GCC 14.").

Suggested-by: Ilya Maximets <[email protected]>
Signed-off-by: Dumitru Ceara <[email protected]>
---
 .ci/dpdk-build.sh          | 28 ++++++++++++++++++----------
 .ci/linux-build.sh         | 11 ++++++-----
 .github/workflows/test.yml |  4 ++--
 controller/pinctrl.c       |  6 +++++-
 ovs                        |  2 +-
 5 files changed, 32 insertions(+), 19 deletions(-)

diff --git a/.ci/dpdk-build.sh b/.ci/dpdk-build.sh
index f44ac15b07..0c13c98c98 100755
--- a/.ci/dpdk-build.sh
+++ b/.ci/dpdk-build.sh
@@ -5,25 +5,27 @@ set -x
 
 function build_dpdk()
 {
-    local VERSION_FILE="dpdk-dir/cached-version"
     local DPDK_VER=$1
     local DPDK_OPTS=""
+    local DPDK_INSTALL_DIR="$(pwd)/dpdk-dir"
+    local VERSION_FILE="$DPDK_INSTALL_DIR/cached-version"
 
-    rm -rf dpdk-dir
+    rm -rf dpdk-src
+    rm -rf $DPDK_INSTALL_DIR
 
     if [ "${DPDK_VER##refs/*/}" != "${DPDK_VER}" ]; then
-        git clone --single-branch $DPDK_GIT dpdk-dir -b "${DPDK_VER##refs/*/}"
-        pushd dpdk-dir
+        git clone --single-branch $DPDK_GIT dpdk-src -b "${DPDK_VER##refs/*/}"
+        pushd dpdk-src
         git log -1 --oneline
     else
         wget https://fast.dpdk.org/rel/dpdk-$1.tar.xz
         tar xvf dpdk-$1.tar.xz > /dev/null
         DIR_NAME=$(tar -tf dpdk-$1.tar.xz | head -1 | cut -f1 -d"/")
-        mv ${DIR_NAME} dpdk-dir
-        pushd dpdk-dir
+        mv ${DIR_NAME} dpdk-src
+        pushd dpdk-src
     fi
 
-    # Switching to 'default' machine to make dpdk-dir cache usable on
+    # Switching to 'default' machine to make the dpdk cache usable on
     # different CPUs. We can't be sure that all CI machines are exactly same.
     DPDK_OPTS="$DPDK_OPTS -Dmachine=default"
 
@@ -38,16 +40,22 @@ function build_dpdk()
     # only depend on virtio/tap drivers.
     # We can disable all remaining drivers to save compilation time.
     DPDK_OPTS="$DPDK_OPTS -Denable_drivers=net/null,net/tap,net/virtio"
+    # OVS depends on the vhost library (and its dependencies).
+    # net/tap depends on the gso library.
+    DPDK_OPTS="$DPDK_OPTS -Denable_libs=cryptodev,dmadev,gso,vhost"
 
     # Install DPDK using prefix.
-    DPDK_OPTS="$DPDK_OPTS --prefix=$(pwd)/build"
+    DPDK_OPTS="$DPDK_OPTS --prefix=$DPDK_INSTALL_DIR"
 
     meson $DPDK_OPTS build
     ninja -C build
     ninja -C build install
-
-    echo "Installed DPDK in $(pwd)"
     popd
+
+    # Remove examples sources.
+    rm -rf $DPDK_INSTALL_DIR/share/dpdk/examples
+
+    echo "Installed DPDK in $DPDK_INSTALL_DIR"
     echo "${DPDK_VER}" > ${VERSION_FILE}
 }
 
diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index b0c3c9252e..78f17f8bdb 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -13,24 +13,25 @@ RECHECK=${RECHECK:-"no"}
 
 function install_dpdk()
 {
-    local VERSION_FILE="dpdk-dir/cached-version"
-    local DPDK_LIB=$(pwd)/dpdk-dir/build/lib/x86_64-linux-gnu
+    local DPDK_INSTALL_DIR="$(pwd)/dpdk-dir"
+    local VERSION_FILE="${DPDK_INSTALL_DIR}/cached-version"
+    local DPDK_LIB=${DPDK_INSTALL_DIR}/lib/x86_64-linux-gnu
 
     # Export the following path for pkg-config to find the .pc file.
     export PKG_CONFIG_PATH=$DPDK_LIB/pkgconfig/:$PKG_CONFIG_PATH
 
     if [ ! -f "${VERSION_FILE}" ]; then
-        echo "Could not find DPDK in $(pwd)/dpdk-dir"
+        echo "Could not find DPDK in $DPDK_INSTALL_DIR"
         return 1
     fi
 
     # As we build inside a container we need to update the prefix.
-    sed -i -E "s|^prefix=.*|prefix=$(pwd)/dpdk-dir/build|" \
+    sed -i -E "s|^prefix=.*|prefix=${DPDK_INSTALL_DIR}|" \
         "$DPDK_LIB/pkgconfig/libdpdk-libs.pc"
 
     # Update the library paths.
     sudo ldconfig
-    echo "Found cached DPDK $(cat ${VERSION_FILE}) build in $(pwd)/dpdk-dir"
+    echo "Found cached DPDK $(cat ${VERSION_FILE}) build in $DPDK_INSTALL_DIR"
 }
 
 function configure_ovs()
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 02865b32f2..2503d87d0f 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -16,8 +16,8 @@ jobs:
     env:
       dependencies: gcc libnuma-dev ninja-build
       CC: gcc
-      DPDK_GIT: https://dpdk.org/git/dpdk-stable
-      DPDK_VER: 22.11.1
+      DPDK_GIT: https://dpdk.org/git/dpdk
+      DPDK_VER: 23.11
     name: dpdk gcc
     outputs:
       dpdk_key: ${{ steps.gen_dpdk_key.outputs.key }}
diff --git a/controller/pinctrl.c b/controller/pinctrl.c
index 4992eab089..0d747dbf56 100644
--- a/controller/pinctrl.c
+++ b/controller/pinctrl.c
@@ -5473,10 +5473,14 @@ pinctrl_ip_mcast_handle_igmp(struct rconn *swconn,
     ovs_rwlock_wrlock(&ip_ms->ms->rwlock);
     switch (ntohs(ip_flow->tp_src)) {
     case IGMP_HOST_MEMBERSHIP_REPORT:
+        group_change =
+            mcast_snooping_add_group4(ip_ms->ms, ip4, IP_MCAST_VLAN,
+                                      port_key_data, MCAST_GROUP_IGMPV1);
+        break;
     case IGMPV2_HOST_MEMBERSHIP_REPORT:
         group_change =
             mcast_snooping_add_group4(ip_ms->ms, ip4, IP_MCAST_VLAN,
-                                      port_key_data);
+                                      port_key_data, MCAST_GROUP_IGMPV2);
         break;
     case IGMP_HOST_LEAVE_MESSAGE:
         group_change =
diff --git a/ovs b/ovs
index 4102674b3e..fe55ce37a7 160000
--- a/ovs
+++ b/ovs
@@ -1 +1 @@
-Subproject commit 4102674b3ecadb0e20e512cc661cddbbc4b3d1f6
+Subproject commit fe55ce37a7b090d09dee5c01ae0797320ad678f6
-- 
2.39.3

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to