This commit adds support for DPDK v24.11.
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=*

Signed-off-by: David Marchand <[email protected]>
---
 .github/workflows/build-and-test.yml     |  4 ++--
 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, 39 insertions(+), 39 deletions(-)

diff --git a/.github/workflows/build-and-test.yml 
b/.github/workflows/build-and-test.yml
index 95dea3ee7d..794b9a5c5a 100644
--- a/.github/workflows/build-and-test.yml
+++ b/.github/workflows/build-and-test.yml
@@ -13,8 +13,8 @@ jobs:
     env:
       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_GIT: https://dpdk.org/git/dpdk
+      DPDK_VER: 24.11
     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 d345b63d5b..3dcbb850b4 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..4a0de02c7c 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
 
 - 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.tar.xz
+       $ tar xf dpdk-24.11.tar.xz
+       $ export DPDK_DIR=/usr/src/dpdk-24.11
        $ 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 6e3f56d731..7127249f2d 100644
--- a/NEWS
+++ b/NEWS
@@ -24,7 +24,7 @@ Post-v3.4.0
        and datapath flow dumps and displaying them in several different
        formats.
    - DPDK:
-     * OVS validated with DPDK 23.11.2.
+     * Add support for DPDK 24.11.
 
 
 v3.4.0 - 15 Aug 2024
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 1a6e100ffb..b820aa60e3 100644
--- a/lib/netdev-offload-dpdk.c
+++ b/lib/netdev-offload-dpdk.c
@@ -530,15 +530,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",
@@ -695,10 +695,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, " ");
     }
@@ -834,7 +834,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, " ");
         }
@@ -1210,18 +1210,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;
@@ -1532,9 +1532,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)) {
@@ -1545,9 +1545,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}
-- 
2.47.0

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

Reply via email to