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 <[email protected]>
>> Signed-off-by: Dumitru Ceara <[email protected]>
>
> 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
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev