Message ID | 20240129233652.123111-1-dceara@redhat.com |
---|---|
State | Accepted |
Headers | show |
Series | [ovs-dev] ovs: Bump submodule to latest OVS branch-3.3. | expand |
Context | Check | Description |
---|---|---|
ovsrobot/apply-robot | success | apply and check: success |
ovsrobot/github-robot-_Build_and_Test | success | github build: passed |
ovsrobot/github-robot-_ovn-kubernetes | success | github build: passed |
On 1/30/24 00:36, Dumitru Ceara wrote: > 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 <i.maximets@ovn.org> > Signed-off-by: Dumitru Ceara <dceara@redhat.com> > --- CC: Eelco, Mohammad, Numan. > .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
On Mon, Jan 29, 2024 at 6:43 PM Dumitru Ceara <dceara@redhat.com> wrote: > > On 1/30/24 00:36, Dumitru Ceara wrote: > > 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 <i.maximets@ovn.org> > > Signed-off-by: Dumitru Ceara <dceara@redhat.com> > > --- > > CC: Eelco, Mohammad, Numan. Acked-by: Numan Siddique<numans@ovn.org> Numan > > > .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 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev >
On 30 Jan 2024, at 0:36, Dumitru Ceara wrote: > 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 <i.maximets@ovn.org> > Signed-off-by: Dumitru Ceara <dceara@redhat.com> There is also a change in controller/pinctrl.c, any reason why this is part of this patch? Cheers, Eelco > --- > .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
On 1/30/24 09:04, Eelco Chaudron wrote: > > > On 30 Jan 2024, at 0:36, Dumitru Ceara wrote: > >> 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 <i.maximets@ovn.org> >> Signed-off-by: Dumitru Ceara <dceara@redhat.com> > > There is also a change in controller/pinctrl.c, any reason why this is part of this patch? > Yes, b222593bc6 ("mcast-snooping: Add group protocol to mdb/show output") changed the OVS mcast library API. That's used by OVN. We need that pinctrl.c change otherwise compilation fails. Regards, Dumitru > Cheers, > > Eelco > >> --- >> .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 >
On 30 Jan 2024, at 9:57, Dumitru Ceara wrote: > On 1/30/24 09:04, Eelco Chaudron wrote: >> >> >> On 30 Jan 2024, at 0:36, Dumitru Ceara wrote: >> >>> 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 <i.maximets@ovn.org> >>> Signed-off-by: Dumitru Ceara <dceara@redhat.com> >> >> There is also a change in controller/pinctrl.c, any reason why this is part of this patch? >> > > Yes, b222593bc6 ("mcast-snooping: Add group protocol to mdb/show > output") changed the OVS mcast library API. That's used by OVN. We > need that pinctrl.c change otherwise compilation fails. Thanks Dumitru for the clarification, maybe you can add this to the commit message when you apply? The rest looks good, and as the tests passed; Acked-by: Eelco Chaudron <echaudro@redhat.com>
Hi, Thank you Dumitru. Acked-by: Mohammad Heib <mheib@redhat.com> On Tue, Jan 30, 2024 at 11:16 AM Eelco Chaudron <echaudro@redhat.com> wrote: > > > On 30 Jan 2024, at 9:57, Dumitru Ceara wrote: > > > On 1/30/24 09:04, Eelco Chaudron wrote: > >> > >> > >> On 30 Jan 2024, at 0:36, Dumitru Ceara wrote: > >> > >>> 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 <i.maximets@ovn.org> > >>> Signed-off-by: Dumitru Ceara <dceara@redhat.com> > >> > >> There is also a change in controller/pinctrl.c, any reason why this is > part of this patch? > >> > > > > Yes, b222593bc6 ("mcast-snooping: Add group protocol to mdb/show > > output") changed the OVS mcast library API. That's used by OVN. We > > need that pinctrl.c change otherwise compilation fails. > > Thanks Dumitru for the clarification, maybe you can add this to the commit > message when you apply? The rest looks good, and as the tests passed; > > Acked-by: Eelco Chaudron <echaudro@redhat.com> > > >
On 1/30/24 10:48, Mohammad Heib wrote: > Hi, > Thank you Dumitru. > > Acked-by: Mohammad Heib <mheib@redhat.com> > > On Tue, Jan 30, 2024 at 11:16 AM Eelco Chaudron <echaudro@redhat.com> wrote: > >> >> >> On 30 Jan 2024, at 9:57, Dumitru Ceara wrote: >> >>> On 1/30/24 09:04, Eelco Chaudron wrote: >>>> >>>> >>>> On 30 Jan 2024, at 0:36, Dumitru Ceara wrote: >>>> >>>>> 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 <i.maximets@ovn.org> >>>>> Signed-off-by: Dumitru Ceara <dceara@redhat.com> >>>> >>>> There is also a change in controller/pinctrl.c, any reason why this is >> part of this patch? >>>> >>> >>> Yes, b222593bc6 ("mcast-snooping: Add group protocol to mdb/show >>> output") changed the OVS mcast library API. That's used by OVN. We >>> need that pinctrl.c change otherwise compilation fails. >> >> Thanks Dumitru for the clarification, maybe you can add this to the commit >> message when you apply? The rest looks good, and as the tests passed; >> >> Acked-by: Eelco Chaudron <echaudro@redhat.com> >> Thanks, Numan, Eelco and Mohammad for the reviews! I updated the commit log to reflect the pinctrl.c change too and pushed this to the main branch. Regards, Dumitru
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
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 <i.maximets@ovn.org> Signed-off-by: Dumitru Ceara <dceara@redhat.com> --- .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(-)