# On most of the systems, default value for max lcores is 128
DPDK_MAX_LCORES ?=
-dpdk_version ?= 24.07
+dpdk_version ?= 24.11.1
dpdk_base_url ?= http://fast.dpdk.org/rel
dpdk_tarball := dpdk-$(dpdk_version).tar.xz
-dpdk_tarball_sha256sum_24.07 := 9944f7e5f268e7ac9b4193e2cd54ef6d98f6e1d7dddc967c77ae4f6616d6fbbd
+
+dpdk_tarball_sha256sum_24.11.1 := bcae7d42c449fc456dfb279feabcbe0599a29bebb2fe2905761e187339d96b8e
dpdk_tarball_sha256sum := $(dpdk_tarball_sha256sum_$(dpdk_version))
dpdk_url := $(dpdk_base_url)/$(dpdk_tarball)
mkdir -p ../dpdk-meson-venv && \
python3 -m venv ../dpdk-meson-venv && \
source ../dpdk-meson-venv/bin/activate && \
- (if ! ls $(PIP_DOWNLOAD_DIR)meson* ; then pip3 download -d $(PIP_DOWNLOAD_DIR) -f $(DL_CACHE_DIR) meson==0.55.3 setuptools wheel pyelftools; fi) && \
- pip3 install --no-index --find-links=$(PIP_DOWNLOAD_DIR) meson==0.55.3 pyelftools && \
+ (if ! ls $(PIP_DOWNLOAD_DIR)meson* ; then pip3 download -d $(PIP_DOWNLOAD_DIR) -f $(DL_CACHE_DIR) meson==0.57.2 setuptools wheel pyelftools; fi) && \
+ pip3 install --no-index --find-links=$(PIP_DOWNLOAD_DIR) meson==0.57.2 pyelftools && \
PKG_CONFIG_PATH=$(dpdk_install_dir)/lib/pkgconfig meson setup $(dpdk_src_dir) \
$(dpdk_build_dir) \
$(DPDK_MESON_ARGS) \
dpdk_device_stop (xd);
}
- rte_eth_dev_info_get (xd->port_id, &dev_info);
+ rv = rte_eth_dev_info_get (xd->port_id, &dev_info);
+ if (rv)
+ dpdk_device_error (xd, "rte_eth_dev_info_get", rv);
dpdk_log_debug ("[%u] configuring device %U", xd->port_id,
format_dpdk_rte_device, dev_info.device);
enum rte_eth_event_type type, void *param)
{
struct rte_eth_link link;
+ CLIB_UNUSED (int rv);
RTE_SET_USED (param);
if (type != RTE_ETH_EVENT_INTR_LSC)
return -1;
}
- rte_eth_link_get_nowait (port_id, &link);
+ rv = rte_eth_link_get_nowait (port_id, &link);
+ ASSERT (rv == 0);
u8 link_up = link.link_status;
if (link_up)
dpdk_log_info ("Port %d Link Up - speed %u Mbps - %s", port_id,
(f->type == VNET_FLOW_TYPE_IP6_IP4_N_TUPLE) || \
(f->type == VNET_FLOW_TYPE_IP6_IP6_N_TUPLE))
+/* get source addr from ipv6 header */
+#if (RTE_VERSION >= RTE_VERSION_NUM(24, 11, 0, 0))
+#define IP6_SRC_ADDR(ip6) ip6.hdr.src_addr.a
+#else
+#define IP6_SRC_ADDR(ip6) ip6.hdr.src_addr
+#endif
+
+/* get destination addr from ipv6 header */
+#if (RTE_VERSION >= RTE_VERSION_NUM(24, 11, 0, 0))
+#define IP6_DST_ADDR(ip6) ip6.hdr.dst_addr.a
+#else
+#define IP6_DST_ADDR(ip6) ip6.hdr.dst_addr
+#endif
+
/* constant structs */
static const struct rte_flow_attr ingress = {.ingress = 1 };
}
else
{
- clib_memcpy (ip6[0].hdr.src_addr, &ip6_ptr->src_addr.addr,
+ clib_memcpy (IP6_SRC_ADDR (ip6[0]), &ip6_ptr->src_addr.addr,
ARRAY_LEN (ip6_ptr->src_addr.addr.as_u8));
- clib_memcpy (ip6[1].hdr.src_addr, &ip6_ptr->src_addr.mask,
+ clib_memcpy (IP6_SRC_ADDR (ip6[1]), &ip6_ptr->src_addr.mask,
ARRAY_LEN (ip6_ptr->src_addr.mask.as_u8));
- clib_memcpy (ip6[0].hdr.dst_addr, &ip6_ptr->dst_addr.addr,
+ clib_memcpy (IP6_DST_ADDR (ip6[0]), &ip6_ptr->dst_addr.addr,
ARRAY_LEN (ip6_ptr->dst_addr.addr.as_u8));
- clib_memcpy (ip6[1].hdr.dst_addr, &ip6_ptr->dst_addr.mask,
+ clib_memcpy (IP6_DST_ADDR (ip6[1]), &ip6_ptr->dst_addr.mask,
ARRAY_LEN (ip6_ptr->dst_addr.mask.as_u8));
ip6[0].hdr.proto = ip6_ptr->protocol.prot;
ip6[1].hdr.proto = ip6_ptr->protocol.mask;
} \
else \
{ \
- clib_memcpy (in_ip6[0].hdr.src_addr, &ptr->in_src_addr.addr, \
+ clib_memcpy (IP6_SRC_ADDR (in_ip6[0]), &ptr->in_src_addr.addr, \
ARRAY_LEN (ptr->in_src_addr.addr.as_u8)); \
- clib_memcpy (in_ip6[1].hdr.src_addr, &ptr->in_src_addr.mask, \
+ clib_memcpy (IP6_SRC_ADDR (in_ip6[1]), &ptr->in_src_addr.mask, \
ARRAY_LEN (ptr->in_src_addr.mask.as_u8)); \
- clib_memcpy (in_ip6[0].hdr.dst_addr, &ptr->in_dst_addr.addr, \
+ clib_memcpy (IP6_DST_ADDR (in_ip6[0]), &ptr->in_dst_addr.addr, \
ARRAY_LEN (ptr->in_dst_addr.addr.as_u8)); \
- clib_memcpy (in_ip6[1].hdr.dst_addr, &ptr->in_dst_addr.mask, \
+ clib_memcpy (IP6_DST_ADDR (in_ip6[1]), &ptr->in_dst_addr.mask, \
ARRAY_LEN (ptr->in_dst_addr.mask.as_u8)); \
item->spec = in_ip6; \
item->mask = in_ip6 + 1; \