On Thu, Dec 19, 2024 at 9:37 PM Kevin Traynor <[email protected]> wrote: > > 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.
We've been successfully using this commit in the openvswitch snapshot in Debian/Ubuntu, thanks! Acked-by: Frode Nordahl <[email protected]> -- Frode Nordahl > 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
