Skip to content

Commit

Permalink
dpdk: Update to use v24.11.
Browse files Browse the repository at this point in the history
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]>
  • Loading branch information
david-marchand committed Dec 3, 2024
1 parent 77ac0b2 commit 59e90e0
Show file tree
Hide file tree
Showing 12 changed files with 39 additions and 39 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}
Expand Down
2 changes: 1 addition & 1 deletion Documentation/faq/releases.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down
16 changes: 8 additions & 8 deletions Documentation/intro/install/dpdk.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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`_

Expand All @@ -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:

Expand All @@ -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
Expand Down Expand Up @@ -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
~~~~~~~~~~~
Expand Down Expand Up @@ -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
Expand Down
12 changes: 6 additions & 6 deletions Documentation/topics/dpdk/phy.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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::

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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::

Expand Down
2 changes: 1 addition & 1 deletion Documentation/topics/dpdk/vdev.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion Documentation/topics/dpdk/vhost-user.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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>`__
2 changes: 1 addition & 1 deletion Documentation/topics/testing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion Documentation/topics/userspace-tso.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
~~~~~~~~~~~~
Expand Down
2 changes: 1 addition & 1 deletion NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion debian/control.in
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
30 changes: 15 additions & 15 deletions lib/netdev-offload-dpdk.c
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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, " ");
}
Expand Down Expand Up @@ -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, " ");
}
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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)) {
Expand All @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion rhel/openvswitch-fedora.spec.in
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down

0 comments on commit 59e90e0

Please sign in to comment.