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

Reply via email to