Unverified Commit a9f57280 authored by Markus Theil's avatar Markus Theil
Browse files

odp-dpdk: fixes for dpdk 25.03

parent 40a218f9
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
diff --git a/lib/eal/include/rte_bitops.h b/lib/eal/include/rte_bitops.h
index deb1fd43f2..0f63ebe1d5 100644
--- a/lib/eal/include/rte_bitops.h
+++ b/lib/eal/include/rte_bitops.h
@@ -525,10 +525,12 @@ __rte_bit_ ## variant ## flip ## size(qualifier uint ## size ## _t *addr, unsign
 	__RTE_GEN_BIT_OPS(,, size) \
 	__RTE_GEN_BIT_OPS(v_, volatile, size)
 
+#ifndef __cplusplus
 #ifdef ALLOW_EXPERIMENTAL_API
 __RTE_GEN_BIT_OPS_SIZE(32)
 __RTE_GEN_BIT_OPS_SIZE(64)
 #endif
+#endif
 
 #define __RTE_GEN_BIT_ATOMIC_TEST(variant, qualifier, size) \
 __rte_experimental \
@@ -653,10 +655,12 @@ __rte_bit_atomic_ ## variant ## test_and_assign ## size( \
 	__RTE_GEN_BIT_ATOMIC_OPS(,, size) \
 	__RTE_GEN_BIT_ATOMIC_OPS(v_, volatile, size)
 
+#ifndef __cplusplus
 #ifdef ALLOW_EXPERIMENTAL_API
 __RTE_GEN_BIT_ATOMIC_OPS_SIZE(32)
 __RTE_GEN_BIT_ATOMIC_OPS_SIZE(64)
 #endif
+#endif
 
 /*------------------------ 32-bit relaxed operations ------------------------*/
 
@@ -1485,6 +1489,7 @@ rte_bit_ ## family ## fun(qualifier uint ## size ## _t *addr, arg1_type arg1_nam
 	__RTE_BIT_OVERLOAD_SZ_4R(family, fun, qualifier, 64, ret_type, arg1_type, arg1_name, \
 		arg2_type, arg2_name, arg3_type, arg3_name)
 
+#ifndef __cplusplus
 #ifdef ALLOW_EXPERIMENTAL_API
 __RTE_BIT_OVERLOAD_2R(, test, const, bool, unsigned int, nr)
 __RTE_BIT_OVERLOAD_2(, set,, unsigned int, nr)
@@ -1502,6 +1507,7 @@ __RTE_BIT_OVERLOAD_3R(atomic_, test_and_clear,, bool, unsigned int, nr, int, mem
 __RTE_BIT_OVERLOAD_4R(atomic_, test_and_assign,, bool, unsigned int, nr, bool, value,
 	int, memory_order)
 #endif
+#endif
 
 #endif
 
+50 −0
Original line number Diff line number Diff line
diff --git a/platform/linux-dpdk/odp_packet_dpdk.c b/platform/linux-dpdk/odp_packet_dpdk.c
index cd95ba0f9..7e8b7e3f1 100644
--- a/platform/linux-dpdk/odp_packet_dpdk.c
+++ b/platform/linux-dpdk/odp_packet_dpdk.c
@@ -372,13 +372,18 @@ static void prepare_rss_conf(pktio_entry_t *pktio_entry,
 	uint64_t rss_hf_capa;
 	pkt_dpdk_t *pkt_dpdk = pkt_priv(pktio_entry);
 	uint16_t port_id = pkt_dpdk->port_id;
+	int ret;
 
 	memset(&pkt_dpdk->rss_conf, 0, sizeof(struct rte_eth_rss_conf));
 
 	if (!p->hash_enable)
 		return;
 
-	rte_eth_dev_info_get(port_id, &dev_info);
+	ret = rte_eth_dev_info_get(port_id, &dev_info);
+	if (ret) {
+		_ODP_ERR("Failed to read device info: %d\n", ret);
+		return;
+	}
 	rss_hf_capa = dev_info.flow_type_rss_offloads;
 
 	/* Print debug info about unsupported hash protocols */
@@ -842,7 +847,11 @@ static int dpdk_start(pktio_entry_t *pktio_entry)
 	    pktio_entry->state == PKTIO_STATE_STOP_PENDING)
 		rte_eth_dev_stop(pkt_dpdk->port_id);
 
-	rte_eth_dev_info_get(port_id, &dev_info);
+	ret = rte_eth_dev_info_get(port_id, &dev_info);
+	if (ret) {
+		_ODP_ERR("Failed to read device info: %d\n", ret);
+		return -1;
+	}
 
 	/* Pcap driver reconfiguration may fail if number of rx/tx queues is set to zero */
 	if (!strncmp(dev_info.driver_name, PCAP_DRV_NAME, strlen(PCAP_DRV_NAME))) {
@@ -1258,7 +1267,11 @@ static uint32_t _dpdk_vdev_mtu(uint16_t port_id)
 	int ret;
 	int sockfd;
 
-	rte_eth_dev_info_get(port_id, &dev_info);
+	ret = rte_eth_dev_info_get(port_id, &dev_info);
+	if (ret) {
+		_ODP_ERR("Failed to read device info: %d\n", ret);
+		return 0;
+	}
 	if_indextoname(dev_info.if_index, ifr.ifr_name);
 	sockfd = socket(AF_INET, SOCK_DGRAM, 0);
 	ret = ioctl(sockfd, SIOCGIFMTU, &ifr);
+9 −1
Original line number Diff line number Diff line
@@ -29,13 +29,21 @@ stdenv.mkDerivation rec {
    hash = "sha256-9stWGupRSQwUXOdPEQ9Rhkim22p5BBA5Z+2JCYS7Za0=";
  };

  patches = [
    ./odp-dpdk_25.03.patch
  ];

  nativeBuildInputs = [
    autoreconfHook
    pkg-config
  ];

  buildInputs = [
    dpdk
    (dpdk.overrideAttrs {
      patches = [
        ./dpdk_25.03.patch
      ];
    })
    libconfig
    libpcap
    numactl