On 18/12/2024 16:24, David Marchand wrote:
> This commit adds support for DPDK v24.11.1.
> It updates the CI script and documentation and includes the following
> changes coming from the dpdk-latest branch:
> 
> - netdev-offload-dpdk: Fix build with v24.11-rc1.
>   https://patchwork.ozlabs.org/project/openvswitch/list/?series=428784&state=*
> 
> Acked-by: Kevin Traynor <[email protected]>
> Acked-by: Eelco Chaudron <[email protected]>
> Signed-off-by: David Marchand <[email protected]>

Thanks David. LGTM. I will apply tomorrow AM unless there is some more
comments.

thanks,
Kevin.

> ---
> Changes since v1:
> - bump to v24.11.1 (CVE fix),
> 
> ---
>  .github/workflows/build-and-test.yml     |  2 +-
>  Documentation/faq/releases.rst           |  2 +-
>  Documentation/intro/install/dpdk.rst     | 16 ++++++-------
>  Documentation/topics/dpdk/phy.rst        | 12 +++++-----
>  Documentation/topics/dpdk/vdev.rst       |  2 +-
>  Documentation/topics/dpdk/vhost-user.rst |  2 +-
>  Documentation/topics/testing.rst         |  2 +-
>  Documentation/topics/userspace-tso.rst   |  2 +-
>  NEWS                                     |  2 +-
>  debian/control.in                        |  2 +-
>  lib/netdev-offload-dpdk.c                | 30 ++++++++++++------------
>  rhel/openvswitch-fedora.spec.in          |  2 +-
>  12 files changed, 38 insertions(+), 38 deletions(-)
> 
> diff --git a/.github/workflows/build-and-test.yml 
> b/.github/workflows/build-and-test.yml
> index 95dea3ee7d..724e3e2f0f 100644
> --- a/.github/workflows/build-and-test.yml
> +++ b/.github/workflows/build-and-test.yml
> @@ -14,7 +14,7 @@ jobs:
>        dependencies: gcc libnuma-dev libxdp-dev ninja-build pkgconf
>        CC: gcc
>        DPDK_GIT: https://dpdk.org/git/dpdk-stable
> -      DPDK_VER: 23.11.2
> +      DPDK_VER: 24.11.1
>      name: dpdk gcc
>      outputs:
>        dpdk_key: ${{ steps.gen_dpdk_key.outputs.key }}
> diff --git a/Documentation/faq/releases.rst b/Documentation/faq/releases.rst
> index d7d4008f47..c9acc1e80e 100644
> --- a/Documentation/faq/releases.rst
> +++ b/Documentation/faq/releases.rst
> @@ -238,7 +238,7 @@ Q: Are all the DPDK releases that OVS versions work with 
> maintained?
>      The latest information about DPDK stable and LTS releases can be found
>      at `DPDK stable`_.
>  
> -.. _DPDK stable: http://doc.dpdk.org/guides-23.11/contributing/stable.html
> +.. _DPDK stable: http://doc.dpdk.org/guides-24.11/contributing/stable.html
>  
>  Q: I get an error like this when I configure Open vSwitch:
>  
> diff --git a/Documentation/intro/install/dpdk.rst 
> b/Documentation/intro/install/dpdk.rst
> index ebd29a45a9..091c552be5 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 23.11.2
> +- DPDK 24.11.1
>  
>  - A `DPDK supported NIC`_
>  
> @@ -59,8 +59,8 @@ vSwitch with DPDK will require the following:
>  
>  Detailed system requirements can be found at `DPDK requirements`_.
>  
> -.. _DPDK supported NIC: https://doc.dpdk.org/guides-23.11/nics/index.html
> -.. _DPDK requirements: 
> https://doc.dpdk.org/guides-23.11/linux_gsg/sys_reqs.html
> +.. _DPDK supported NIC: https://doc.dpdk.org/guides-24.11/nics/index.html
> +.. _DPDK requirements: 
> https://doc.dpdk.org/guides-24.11/linux_gsg/sys_reqs.html
>  
>  .. _dpdk-install:
>  
> @@ -73,9 +73,9 @@ Install DPDK
>  #. Download the `DPDK sources`_, extract the file and set ``DPDK_DIR``::
>  
>         $ cd /usr/src/
> -       $ wget https://fast.dpdk.org/rel/dpdk-23.11.2.tar.xz
> -       $ tar xf dpdk-23.11.2.tar.xz
> -       $ export DPDK_DIR=/usr/src/dpdk-stable-23.11.2
> +       $ wget https://fast.dpdk.org/rel/dpdk-24.11.1.tar.xz
> +       $ tar xf dpdk-24.11.1.tar.xz
> +       $ export DPDK_DIR=/usr/src/dpdk-stable-24.11.1
>         $ cd $DPDK_DIR
>  
>  #. Configure and install DPDK using Meson
> @@ -121,7 +121,7 @@ Install DPDK
>  
>  .. _DPDK sources: http://dpdk.org/rel
>  .. _DPDK documentation:
> -   https://doc.dpdk.org/guides-23.11/linux_gsg/build_dpdk.html
> +   https://doc.dpdk.org/guides-24.11/linux_gsg/build_dpdk.html
>  
>  Install OVS
>  ~~~~~~~~~~~
> @@ -722,7 +722,7 @@ Limitations
>    release notes`_.
>  
>  .. _DPDK release notes:
> -   https://doc.dpdk.org/guides-23.11/rel_notes/release_23_11.html
> +   https://doc.dpdk.org/guides-24.11/rel_notes/release_24_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
> diff --git a/Documentation/topics/dpdk/phy.rst 
> b/Documentation/topics/dpdk/phy.rst
> index eefc25613d..4704ab21c8 100644
> --- a/Documentation/topics/dpdk/phy.rst
> +++ b/Documentation/topics/dpdk/phy.rst
> @@ -117,7 +117,7 @@ tool::
>  
>  For more information, refer to the `DPDK drivers documentation`_.
>  
> -.. _DPDK drivers documentation: 
> https://doc.dpdk.org/guides-23.11/linux_gsg/linux_drivers.html
> +.. _DPDK drivers documentation: 
> https://doc.dpdk.org/guides-24.11/linux_gsg/linux_drivers.html
>  
>  .. _dpdk-phy-multiqueue:
>  
> @@ -148,14 +148,14 @@ situation.
>  Some physical NICs can be programmed to put these protocols in a dedicated
>  hardware Rx queue using the rte_flow__ API.
>  
> -__ https://doc.dpdk.org/guides-23.11/prog_guide/rte_flow.html
> +__ https://doc.dpdk.org/guides-24.11/prog_guide/rte_flow.html
>  
>  .. warning::
>  
>     This feature is not compatible with all NICs. Refer to the DPDK
>     `compatibility matrix`__ and vendor documentation for more details.
>  
> -   __ https://doc.dpdk.org/guides-23.11/nics/overview.html
> +   __ https://doc.dpdk.org/guides-24.11/nics/overview.html
>  
>  Rx steering must be enabled for specific protocols per port. The
>  ``rx-steering`` option takes one of the following values:
> @@ -322,7 +322,7 @@ To hotplug a port with igb_uio in this case, DPDK must be 
> configured to use
>  physical addressing for IOVA mode. For more information regarding IOVA modes
>  in DPDK please refer to the `DPDK IOVA Mode Detection`__.
>  
> -__ 
> https://doc.dpdk.org/guides-23.11/prog_guide/env_abstraction_layer.html#iova-mode-detection
> +__ 
> https://doc.dpdk.org/guides-24.11/prog_guide/env_abstraction_layer.html#iova-mode-detection
>  
>  To configure OVS DPDK to use physical addressing for IOVA::
>  
> @@ -354,7 +354,7 @@ Representors are multi devices created on top of one PF.
>  
>  For more information, refer to the `DPDK documentation`__.
>  
> -__ 
> https://doc.dpdk.org/guides-23.11/prog_guide/switch_representation.html#port-representors
> +__ 
> https://doc.dpdk.org/guides-24.11/prog_guide/switch_representation.html#port-representors
>  
>  Prior to port representors there was a one-to-one relationship between the PF
>  and the eth device. With port representors the relationship becomes one PF to
> @@ -488,7 +488,7 @@ in the ``options`` column of the ``Interface`` table.
>     kernel netdevice, and be inherited from it when Open vSwitch is restarted,
>     even if the options described in this section are unset from Open vSwitch.
>  
> -.. _bifurcated drivers: 
> https://doc.dpdk.org/guides-23.11/linux_gsg/linux_drivers.html#bifurcated-driver
> +.. _bifurcated drivers: 
> https://doc.dpdk.org/guides-24.11/linux_gsg/linux_drivers.html#bifurcated-driver
>  
>  - Configure the VF MAC address::
>  
> diff --git a/Documentation/topics/dpdk/vdev.rst 
> b/Documentation/topics/dpdk/vdev.rst
> index f1f59af5d9..9effe6bd07 100644
> --- a/Documentation/topics/dpdk/vdev.rst
> +++ b/Documentation/topics/dpdk/vdev.rst
> @@ -63,4 +63,4 @@ run::
>  More information on the different types of virtual DPDK PMDs can be found in
>  the `DPDK documentation`__.
>  
> -__ https://doc.dpdk.org/guides-23.11/nics/overview.html
> +__ https://doc.dpdk.org/guides-24.11/nics/overview.html
> diff --git a/Documentation/topics/dpdk/vhost-user.rst 
> b/Documentation/topics/dpdk/vhost-user.rst
> index 7bba08ac21..3c02738cfc 100644
> --- a/Documentation/topics/dpdk/vhost-user.rst
> +++ b/Documentation/topics/dpdk/vhost-user.rst
> @@ -541,4 +541,4 @@ shown with::
>  
>  Further information can be found in the
>  `DPDK documentation
> -<https://doc.dpdk.org/guides-23.11/prog_guide/vhost_lib.html>`__
> +<https://doc.dpdk.org/guides-24.11/prog_guide/vhost_lib.html>`__
> diff --git a/Documentation/topics/testing.rst 
> b/Documentation/topics/testing.rst
> index dcf10a4db2..b97bf32a9a 100644
> --- a/Documentation/topics/testing.rst
> +++ b/Documentation/topics/testing.rst
> @@ -358,7 +358,7 @@ with a mlx5 device::
>  All tests are skipped if no hugepages are configured. User must look into 
> the DPDK
>  manual to figure out how to `Configure hugepages`_.
>  
> -.. _Configure hugepages: 
> https://doc.dpdk.org/guides-23.11/linux_gsg/sys_reqs.html
> +.. _Configure hugepages: 
> https://doc.dpdk.org/guides-24.11/linux_gsg/sys_reqs.html
>  
>  All the features documented under `Unit Tests`_ are available for the DPDK
>  testsuite.
> diff --git a/Documentation/topics/userspace-tso.rst 
> b/Documentation/topics/userspace-tso.rst
> index a21bb2b5de..ae08496bdd 100644
> --- a/Documentation/topics/userspace-tso.rst
> +++ b/Documentation/topics/userspace-tso.rst
> @@ -46,7 +46,7 @@ datasheet for compatibility. Secondly, the NIC must have an 
> associated DPDK
>  Poll Mode Driver (PMD) which supports `TSO`. For a list of features per PMD,
>  refer to the `DPDK documentation`__.
>  
> -__ https://doc.dpdk.org/guides-23.11/nics/overview.html
> +__ https://doc.dpdk.org/guides-24.11/nics/overview.html
>  
>  Enabling TSO
>  ~~~~~~~~~~~~
> diff --git a/NEWS b/NEWS
> index 28ccb18479..83f0513797 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -41,7 +41,7 @@ Post-v3.4.0
>         formats.
>       * Dropped support for Python < 3.7.
>     - DPDK:
> -     * OVS validated with DPDK 23.11.2.
> +     * Add support for DPDK 24.11.1.
>       * Add hardware offload support for matching ICMPv6 protocol
>         (experimental).
>     - Tunnels:
> diff --git a/debian/control.in b/debian/control.in
> index 6737672d1a..47b1f8cdd6 100644
> --- a/debian/control.in
> +++ b/debian/control.in
> @@ -21,7 +21,7 @@ Build-Depends:
>   iproute2,
>   libcap-ng-dev,
>   libdbus-1-dev [amd64 i386 ppc64el arm64],
> -# DPDK_NETDEV  libdpdk-dev (>= 23.11) [amd64 i386 ppc64el arm64],
> +# DPDK_NETDEV  libdpdk-dev (>= 24.11) [amd64 i386 ppc64el arm64],
>   libnuma-dev [amd64 i386 ppc64el arm64],
>   libpcap-dev [amd64 i386 ppc64el arm64],
>   libssl-dev,
> diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c
> index a86d7bd192..cda0e8d13f 100644
> --- a/lib/netdev-offload-dpdk.c
> +++ b/lib/netdev-offload-dpdk.c
> @@ -547,15 +547,15 @@ dump_flow_pattern(struct ds *s,
>              if (!ipv6_mask) {
>                  ipv6_mask = &rte_flow_item_ipv6_mask;
>              }
> -            memcpy(&addr, ipv6_spec->hdr.src_addr, sizeof addr);
> -            memcpy(&mask, ipv6_mask->hdr.src_addr, sizeof mask);
> +            memcpy(&addr, &ipv6_spec->hdr.src_addr, sizeof addr);
> +            memcpy(&mask, &ipv6_mask->hdr.src_addr, sizeof mask);
>              ipv6_string_mapped(addr_str, &addr);
>              ipv6_string_mapped(mask_str, &mask);
>              DUMP_PATTERN_ITEM(mask, false, "src", "%s",
>                                addr_str, mask_str, "");
>  
> -            memcpy(&addr, ipv6_spec->hdr.dst_addr, sizeof addr);
> -            memcpy(&mask, ipv6_mask->hdr.dst_addr, sizeof mask);
> +            memcpy(&addr, &ipv6_spec->hdr.dst_addr, sizeof addr);
> +            memcpy(&mask, &ipv6_mask->hdr.dst_addr, sizeof mask);
>              ipv6_string_mapped(addr_str, &addr);
>              ipv6_string_mapped(mask_str, &mask);
>              DUMP_PATTERN_ITEM(mask, false, "dst", "%s",
> @@ -712,10 +712,10 @@ dump_vxlan_encap(struct ds *s, const struct 
> rte_flow_item *items)
>          struct in6_addr addr;
>  
>          ds_put_cstr(s, "ip-src ");
> -        memcpy(&addr, ipv6->hdr.src_addr, sizeof addr);
> +        memcpy(&addr, &ipv6->hdr.src_addr, sizeof addr);
>          ipv6_format_mapped(&addr, s);
>          ds_put_cstr(s, " ip-dst ");
> -        memcpy(&addr, ipv6->hdr.dst_addr, sizeof addr);
> +        memcpy(&addr, &ipv6->hdr.dst_addr, sizeof addr);
>          ipv6_format_mapped(&addr, s);
>          ds_put_cstr(s, " ");
>      }
> @@ -851,7 +851,7 @@ dump_flow_action(struct ds *s, struct ds *s_extra,
>              struct in6_addr addr;
>  
>              ds_put_cstr(s, "ipv6_addr ");
> -            memcpy(&addr, set_ipv6->ipv6_addr, sizeof addr);
> +            memcpy(&addr, &set_ipv6->ipv6_addr, sizeof addr);
>              ipv6_format_addr(&addr, s);
>              ds_put_cstr(s, " ");
>          }
> @@ -1227,18 +1227,18 @@ parse_tnl_ip_match(struct flow_patterns *patterns,
>          spec->hdr.hop_limits = match->flow.tunnel.ip_ttl;
>          spec->hdr.vtc_flow = htonl((uint32_t) match->flow.tunnel.ip_tos <<
>                                     RTE_IPV6_HDR_TC_SHIFT);
> -        memcpy(spec->hdr.src_addr, &match->flow.tunnel.ipv6_src,
> +        memcpy(&spec->hdr.src_addr, &match->flow.tunnel.ipv6_src,
>                 sizeof spec->hdr.src_addr);
> -        memcpy(spec->hdr.dst_addr, &match->flow.tunnel.ipv6_dst,
> +        memcpy(&spec->hdr.dst_addr, &match->flow.tunnel.ipv6_dst,
>                 sizeof spec->hdr.dst_addr);
>  
>          mask->hdr.proto = UINT8_MAX;
>          mask->hdr.hop_limits = match->wc.masks.tunnel.ip_ttl;
>          mask->hdr.vtc_flow = htonl((uint32_t) match->wc.masks.tunnel.ip_tos 
> <<
>                                     RTE_IPV6_HDR_TC_SHIFT);
> -        memcpy(mask->hdr.src_addr, &match->wc.masks.tunnel.ipv6_src,
> +        memcpy(&mask->hdr.src_addr, &match->wc.masks.tunnel.ipv6_src,
>                 sizeof mask->hdr.src_addr);
> -        memcpy(mask->hdr.dst_addr, &match->wc.masks.tunnel.ipv6_dst,
> +        memcpy(&mask->hdr.dst_addr, &match->wc.masks.tunnel.ipv6_dst,
>                 sizeof mask->hdr.dst_addr);
>  
>          consumed_masks->tunnel.ip_tos = 0;
> @@ -1549,9 +1549,9 @@ parse_flow_match(struct netdev *netdev,
>          spec->hdr.hop_limits = match->flow.nw_ttl;
>          spec->hdr.vtc_flow =
>              htonl((uint32_t) match->flow.nw_tos << RTE_IPV6_HDR_TC_SHIFT);
> -        memcpy(spec->hdr.src_addr, &match->flow.ipv6_src,
> +        memcpy(&spec->hdr.src_addr, &match->flow.ipv6_src,
>                 sizeof spec->hdr.src_addr);
> -        memcpy(spec->hdr.dst_addr, &match->flow.ipv6_dst,
> +        memcpy(&spec->hdr.dst_addr, &match->flow.ipv6_dst,
>                 sizeof spec->hdr.dst_addr);
>          if ((match->wc.masks.nw_frag & FLOW_NW_FRAG_ANY)
>              && (match->flow.nw_frag & FLOW_NW_FRAG_ANY)) {
> @@ -1562,9 +1562,9 @@ parse_flow_match(struct netdev *netdev,
>          mask->hdr.hop_limits = match->wc.masks.nw_ttl;
>          mask->hdr.vtc_flow =
>              htonl((uint32_t) match->wc.masks.nw_tos << 
> RTE_IPV6_HDR_TC_SHIFT);
> -        memcpy(mask->hdr.src_addr, &match->wc.masks.ipv6_src,
> +        memcpy(&mask->hdr.src_addr, &match->wc.masks.ipv6_src,
>                 sizeof mask->hdr.src_addr);
> -        memcpy(mask->hdr.dst_addr, &match->wc.masks.ipv6_dst,
> +        memcpy(&mask->hdr.dst_addr, &match->wc.masks.ipv6_dst,
>                 sizeof mask->hdr.dst_addr);
>  
>          consumed_masks->nw_ttl = 0;
> diff --git a/rhel/openvswitch-fedora.spec.in b/rhel/openvswitch-fedora.spec.in
> index 2ee5d3e72f..715cbf7aa7 100644
> --- a/rhel/openvswitch-fedora.spec.in
> +++ b/rhel/openvswitch-fedora.spec.in
> @@ -73,7 +73,7 @@ BuildRequires: libcap-ng libcap-ng-devel
>  %endif
>  %if %{with dpdk}
>  BuildRequires: libpcap-devel numactl-devel
> -BuildRequires: dpdk-devel >= 23.11
> +BuildRequires: dpdk-devel >= 24.11
>  Provides: %{name}-dpdk = %{version}-%{release}
>  %endif
>  %if %{with afxdp}

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

Reply via email to