DPDK patches and discussions
 help / color / mirror / Atom feed
From: Dengdui Huang <huangdengdui@huawei.com>
To: <dev@dpdk.org>
Cc: <ferruh.yigit@amd.com>, <stephen@networkplumber.org>,
	<lihuisong@huawei.com>, <fengchengwen@huawei.com>,
	<liuyonglong@huawei.com>
Subject: [PATCH v3 36/42] net/tap: use rte strerror
Date: Tue, 14 Nov 2023 20:35:46 +0800	[thread overview]
Message-ID: <20231114123552.398072-37-huangdengdui@huawei.com> (raw)
In-Reply-To: <20231114123552.398072-1-huangdengdui@huawei.com>

The function strerror() is insecure in a multi-thread environment.
This patch uses rte_strerror() to replace it.

Cc: stable@dpdk.org

Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
 drivers/net/tap/rte_eth_tap.c | 26 +++++++++++++-------------
 drivers/net/tap/tap_flow.c    | 18 +++++++++---------
 drivers/net/tap/tap_netlink.c |  5 +++--
 drivers/net/tap/tap_tcmsgs.c  |  6 ++++--
 4 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index b41fa971cb..ff290ea5bf 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -196,7 +196,7 @@ tun_alloc(struct pmd_internals *pmd, int is_keepalive, int persistent)
 	/* Set the TUN/TAP configuration and set the name if needed */
 	if (ioctl(fd, TUNSETIFF, (void *)&ifr) < 0) {
 		TAP_LOG(WARNING, "Unable to set TUNSETIFF for %s: %s",
-			ifr.ifr_name, strerror(errno));
+			ifr.ifr_name, rte_strerror(errno));
 		goto error;
 	}
 
@@ -204,7 +204,7 @@ tun_alloc(struct pmd_internals *pmd, int is_keepalive, int persistent)
 	if (persistent && ioctl(fd, TUNSETPERSIST, 1) < 0) {
 		TAP_LOG(WARNING,
 			"Unable to set persist %s: %s",
-			ifr.ifr_name, strerror(errno));
+			ifr.ifr_name, rte_strerror(errno));
 		goto error;
 	}
 
@@ -224,7 +224,7 @@ tun_alloc(struct pmd_internals *pmd, int is_keepalive, int persistent)
 		if (ioctl(fd, TUNSETQUEUE, (void *)&ifr) < 0) {
 			TAP_LOG(WARNING,
 				"Unable to detach keep-alive queue for %s: %s",
-				ifr.ifr_name, strerror(errno));
+				ifr.ifr_name, rte_strerror(errno));
 			goto error;
 		}
 	}
@@ -242,7 +242,7 @@ tun_alloc(struct pmd_internals *pmd, int is_keepalive, int persistent)
 	if (fcntl(fd, F_SETFL, flags) < 0) {
 		TAP_LOG(WARNING,
 			"Unable to set %s to nonblocking: %s",
-			ifr.ifr_name, strerror(errno));
+			ifr.ifr_name, rte_strerror(errno));
 		goto error;
 	}
 
@@ -295,18 +295,18 @@ tun_alloc(struct pmd_internals *pmd, int is_keepalive, int persistent)
 		/* Enable signal on file descriptor */
 		if (fcntl(fd, F_SETSIG, signo) < 0) {
 			TAP_LOG(WARNING, "Unable to set signo %d for fd %d: %s",
-				signo, fd, strerror(errno));
+				signo, fd, rte_strerror(errno));
 			goto error;
 		}
 		if (fcntl(fd, F_SETFL, flags | O_ASYNC) < 0) {
 			TAP_LOG(WARNING, "Unable to set fcntl flags: %s",
-				strerror(errno));
+				rte_strerror(errno));
 			goto error;
 		}
 
 		if (fcntl(fd, F_SETOWN, getpid()) < 0) {
 			TAP_LOG(WARNING, "Unable to set fcntl owner: %s",
-				strerror(errno));
+				rte_strerror(errno));
 			goto error;
 		}
 	}
@@ -821,7 +821,7 @@ tap_ioctl(struct pmd_internals *pmd, unsigned long request,
 
 error:
 	TAP_LOG(DEBUG, "%s(%s) failed: %s(%d)", ifr->ifr_name,
-		tap_ioctl_req2str(request), strerror(errno), errno);
+		tap_ioctl_req2str(request), rte_strerror(errno), errno);
 	return -errno;
 }
 
@@ -1966,7 +1966,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, const char *tap_name,
 	if (pmd->ioctl_sock == -1) {
 		TAP_LOG(ERR,
 			"%s Unable to get a socket for management: %s",
-			tuntap_name, strerror(errno));
+			tuntap_name, rte_strerror(errno));
 		goto error_exit;
 	}
 
@@ -2127,7 +2127,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, const char *tap_name,
 
 disable_rte_flow:
 	TAP_LOG(ERR, " Disabling rte flow support: %s(%d)",
-		strerror(errno), errno);
+		rte_strerror(errno), errno);
 	if (strlen(remote_iface)) {
 		TAP_LOG(ERR, "Remote feature requires flow support.");
 		goto error_exit;
@@ -2137,7 +2137,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, const char *tap_name,
 
 error_remote:
 	TAP_LOG(ERR, " Can't set up remote feature: %s(%d)",
-		strerror(errno), errno);
+		rte_strerror(errno), errno);
 	tap_flow_implicit_flush(pmd, NULL);
 
 error_exit:
@@ -2475,7 +2475,7 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev)
 			ret = rte_mp_action_register(TAP_MP_REQ_START_RXTX, tap_mp_req_start_rxtx);
 			if (ret < 0 && rte_errno != ENOTSUP) {
 				TAP_LOG(ERR, "tap: Failed to register IPC callback: %s",
-					strerror(rte_errno));
+					rte_strerror(rte_errno));
 				return -1;
 			}
 		}
@@ -2535,7 +2535,7 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev)
 		ret = rte_mp_action_register(TAP_MP_KEY, tap_mp_sync_queues);
 		if (ret < 0 && rte_errno != ENOTSUP) {
 			TAP_LOG(ERR, "tap: Failed to register IPC callback: %s",
-				strerror(rte_errno));
+				rte_strerror(rte_errno));
 			goto leave;
 		}
 	}
diff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c
index ed4d42f92f..9d6b84f5c7 100644
--- a/drivers/net/tap/tap_flow.c
+++ b/drivers/net/tap/tap_flow.c
@@ -1409,7 +1409,7 @@ tap_flow_create(struct rte_eth_dev *dev,
 	if (err < 0) {
 		TAP_LOG(ERR,
 			"Kernel refused TC filter rule creation (%d): %s",
-			errno, strerror(errno));
+			errno, rte_strerror(errno));
 		rte_flow_error_set(error, EEXIST, RTE_FLOW_ERROR_TYPE_HANDLE,
 				   NULL,
 				   "overlapping rules or Kernel too old for flower support");
@@ -1454,7 +1454,7 @@ tap_flow_create(struct rte_eth_dev *dev,
 		if (err < 0) {
 			TAP_LOG(ERR,
 				"Kernel refused TC filter rule creation (%d): %s",
-				errno, strerror(errno));
+				errno, rte_strerror(errno));
 			rte_flow_error_set(
 				error, ENOMEM, RTE_FLOW_ERROR_TYPE_HANDLE,
 				NULL,
@@ -1508,7 +1508,7 @@ tap_flow_destroy_pmd(struct pmd_internals *pmd,
 	if (ret < 0) {
 		TAP_LOG(ERR,
 			"Kernel refused TC filter rule deletion (%d): %s",
-			errno, strerror(errno));
+			errno, rte_strerror(errno));
 		rte_flow_error_set(
 			error, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
 			"couldn't receive kernel ack to our request");
@@ -1532,7 +1532,7 @@ tap_flow_destroy_pmd(struct pmd_internals *pmd,
 		if (ret < 0) {
 			TAP_LOG(ERR,
 				"Kernel refused TC filter rule deletion (%d): %s",
-				errno, strerror(errno));
+				errno, rte_strerror(errno));
 			rte_flow_error_set(
 				error, ENOMEM, RTE_FLOW_ERROR_TYPE_HANDLE,
 				NULL, "Failure trying to receive nl ack");
@@ -1755,7 +1755,7 @@ int tap_flow_implicit_create(struct pmd_internals *pmd,
 			goto success;
 		TAP_LOG(ERR,
 			"Kernel refused TC filter rule creation (%d): %s",
-			errno, strerror(errno));
+			errno, rte_strerror(errno));
 		goto fail;
 	}
 	LIST_INSERT_HEAD(&pmd->implicit_flows, remote_flow, next);
@@ -1871,7 +1871,7 @@ static int rss_enable(struct pmd_internals *pmd,
 	if (pmd->map_fd < 0) {
 		TAP_LOG(ERR,
 			"Failed to create BPF map (%d): %s",
-				errno, strerror(errno));
+				errno, rte_strerror(errno));
 		rte_flow_error_set(
 			error, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
 			"Kernel too old or not configured "
@@ -1946,7 +1946,7 @@ static int rss_enable(struct pmd_internals *pmd,
 		if (err < 0) {
 			TAP_LOG(ERR,
 				"Kernel refused TC filter rule creation (%d): %s",
-				errno, strerror(errno));
+				errno, rte_strerror(errno));
 			return err;
 		}
 		LIST_INSERT_HEAD(&pmd->rss_flows, rss_flow, next);
@@ -2111,7 +2111,7 @@ static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd,
 	if (err) {
 		TAP_LOG(ERR,
 			"Failed to update BPF map entry #%u (%d): %s",
-			flow->key_idx, errno, strerror(errno));
+			flow->key_idx, errno, rte_strerror(errno));
 		rte_flow_error_set(
 			error, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
 			"Kernel too old or not configured "
@@ -2130,7 +2130,7 @@ static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd,
 	if (flow->bpf_fd[SEC_L3_L4] < 0) {
 		TAP_LOG(ERR,
 			"Failed to load BPF section %s (%d): %s",
-				sec_name[SEC_L3_L4], errno, strerror(errno));
+				sec_name[SEC_L3_L4], errno, rte_strerror(errno));
 		rte_flow_error_set(
 			error, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
 			"Kernel too old or not configured "
diff --git a/drivers/net/tap/tap_netlink.c b/drivers/net/tap/tap_netlink.c
index 75af3404b0..354574ba29 100644
--- a/drivers/net/tap/tap_netlink.c
+++ b/drivers/net/tap/tap_netlink.c
@@ -14,6 +14,7 @@
 #include <rte_malloc.h>
 #include <tap_netlink.h>
 #include <rte_random.h>
+#include <rte_errno.h>
 
 #include "tap_log.h"
 
@@ -97,7 +98,7 @@ tap_nl_final(int nlsk_fd)
 {
 	if (close(nlsk_fd)) {
 		TAP_LOG(ERR, "Failed to close netlink socket: %s (%d)",
-			strerror(errno), errno);
+			rte_strerror(errno), errno);
 		return -1;
 	}
 	return 0;
@@ -129,7 +130,7 @@ tap_nl_send(int nlsk_fd, struct nlmsghdr *nh)
 			goto retry;
 
 		TAP_LOG(ERR, "Failed to send netlink message: %s (%d)",
-			strerror(errno), errno);
+			rte_strerror(errno), errno);
 		return -1;
 	}
 	return send_bytes;
diff --git a/drivers/net/tap/tap_tcmsgs.c b/drivers/net/tap/tap_tcmsgs.c
index a3aae3c814..28d4809360 100644
--- a/drivers/net/tap/tap_tcmsgs.c
+++ b/drivers/net/tap/tap_tcmsgs.c
@@ -8,6 +8,8 @@
 #include <net/if.h>
 #include <string.h>
 
+#include <rte_errno.h>
+
 #include <rte_log.h>
 #include <tap_tcmsgs.h>
 #include "tap_log.h"
@@ -263,7 +265,7 @@ qdisc_create_multiq(int nlsk_fd, unsigned int ifindex)
 	err = qdisc_add_multiq(nlsk_fd, ifindex);
 	if (err < 0 && errno != -EEXIST) {
 		TAP_LOG(ERR, "Could not add multiq qdisc (%d): %s",
-			errno, strerror(errno));
+			errno, rte_strerror(errno));
 		return -1;
 	}
 	return 0;
@@ -289,7 +291,7 @@ qdisc_create_ingress(int nlsk_fd, unsigned int ifindex)
 	err = qdisc_add_ingress(nlsk_fd, ifindex);
 	if (err < 0 && errno != -EEXIST) {
 		TAP_LOG(ERR, "Could not add ingress qdisc (%d): %s",
-			errno, strerror(errno));
+			errno, rte_strerror(errno));
 		return -1;
 	}
 	return 0;
-- 
2.33.0


  parent reply	other threads:[~2023-11-14 12:39 UTC|newest]

Thread overview: 139+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-14  8:24 [PATCH 00/43] replace strerror Dengdui Huang
2023-11-14  8:24 ` [PATCH 01/43] devtools: forbid use of strerror Dengdui Huang
2023-11-14  8:24 ` [PATCH 02/43] eal: use rte strerror Dengdui Huang
2023-11-15  0:18   ` Stephen Hemminger
2023-11-15 11:16     ` Morten Brørup
2024-02-01 21:49       ` Stephen Hemminger
2023-11-15  0:22   ` Stephen Hemminger
2023-11-15 11:23     ` Morten Brørup
2023-11-15 15:06       ` Stephen Hemminger
2023-11-14  8:24 ` [PATCH 03/43] eventdev: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 04/43] latency: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 05/43] node: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 06/43] pdump: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 07/43] power: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 08/43] telemetry: replace strerror Dengdui Huang
2023-11-14  8:25 ` [PATCH 09/43] vhost: use rte strerror Dengdui Huang
2023-11-14  8:25 ` [PATCH 10/43] bpf: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 11/43] bus/cdx: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 12/43] bus/dpaa: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 13/43] bus/fslmc: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 14/43] bus/pci: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 15/43] bus/vdev: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 16/43] bus/vmbus: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 17/43] common/cnxk: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 18/43] common/mlx5: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 19/43] crypto/caam_jr: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 20/43] dma/idxd: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 21/43] net/af_packet: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 22/43] net/bnxt: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 23/43] net/af_xdp: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 24/43] net/bonding: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 25/43] net/dpaa: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 26/43] net/dpaa2: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 27/43] net/enetfec: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 28/43] net/failsafe: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 29/43] net/i40e: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 30/43] net/ice: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 31/43] net/ixgbe: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 32/43] net/memif: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 33/43] net/mlx4: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 34/43] net/mlx5: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 35/43] net/qede: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 36/43] net/sfc: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 37/43] net/tap: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 38/43] net/vhost: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 39/43] net/virtio: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 40/43] raw/ifpga: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 41/43] vdpa/ifc: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 42/43] vdpa/mlx5: " Dengdui Huang
2023-11-14  8:25 ` [PATCH 43/43] vdpa/sfc: " Dengdui Huang
2023-11-14 11:23   ` [PATCH v2 00/43] replace strerror Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 01/43] devtools: forbid use of strerror Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 02/43] eal: use rte strerror Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 03/43] eventdev: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 04/43] latency: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 05/43] node: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 06/43] pdump: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 07/43] power: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 08/43] telemetry: replace strerror Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 09/43] vhost: use rte strerror Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 10/43] bpf: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 11/43] bus/cdx: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 12/43] bus/dpaa: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 13/43] bus/fslmc: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 14/43] bus/pci: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 15/43] bus/vdev: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 16/43] bus/vmbus: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 17/43] common/cnxk: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 18/43] common/mlx5: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 19/43] crypto/caam_jr: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 20/43] dma/idxd: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 21/43] net/af_packet: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 22/43] net/bnxt: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 23/43] net/af_xdp: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 24/43] net/bonding: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 25/43] net/dpaa: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 26/43] net/dpaa2: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 27/43] net/enetfec: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 28/43] net/failsafe: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 29/43] net/i40e: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 30/43] net/ice: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 31/43] net/ixgbe: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 32/43] net/memif: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 33/43] net/mlx4: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 34/43] net/mlx5: " Dengdui Huang
2023-11-14 11:23     ` [PATCH v2 35/43] net/qede: " Dengdui Huang
2023-11-14 11:24     ` [PATCH v2 36/43] net/sfc: " Dengdui Huang
2023-11-14 11:24     ` [PATCH v2 37/43] net/tap: " Dengdui Huang
2023-11-14 11:24     ` [PATCH v2 38/43] net/vhost: " Dengdui Huang
2023-11-14 11:24     ` [PATCH v2 39/43] net/virtio: " Dengdui Huang
2023-11-14 11:24     ` [PATCH v2 40/43] raw/ifpga: " Dengdui Huang
2023-11-14 11:24     ` [PATCH v2 41/43] vdpa/ifc: " Dengdui Huang
2023-11-14 11:24     ` [PATCH v2 42/43] vdpa/mlx5: " Dengdui Huang
2023-11-14 11:24     ` [PATCH v2 43/43] vdpa/sfc: " Dengdui Huang
2023-11-14 12:35   ` [PATCH v3 00/42] replace strerror Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 01/42] devtools: forbid use of strerror Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 02/42] eal: use rte strerror Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 03/42] eventdev: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 04/42] latency: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 05/42] node: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 06/42] pdump: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 07/42] power: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 08/42] vhost: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 09/42] bpf: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 10/42] bus/cdx: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 11/42] bus/dpaa: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 12/42] bus/fslmc: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 13/42] bus/pci: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 14/42] bus/vdev: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 15/42] bus/vmbus: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 16/42] common/cnxk: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 17/42] common/mlx5: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 18/42] crypto/caam_jr: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 19/42] dma/idxd: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 20/42] net/af_packet: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 21/42] net/bnxt: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 22/42] net/af_xdp: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 23/42] net/bonding: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 24/42] net/dpaa: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 25/42] net/dpaa2: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 26/42] net/enetfec: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 27/42] net/failsafe: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 28/42] net/i40e: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 29/42] net/ice: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 30/42] net/ixgbe: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 31/42] net/memif: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 32/42] net/mlx4: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 33/42] net/mlx5: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 34/42] net/qede: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 35/42] net/sfc: " Dengdui Huang
2023-11-14 12:35     ` Dengdui Huang [this message]
2023-11-14 12:35     ` [PATCH v3 37/42] net/vhost: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 38/42] net/virtio: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 39/42] raw/ifpga: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 40/42] vdpa/ifc: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 41/42] vdpa/mlx5: " Dengdui Huang
2023-11-14 12:35     ` [PATCH v3 42/42] vdpa/sfc: " Dengdui Huang
2023-11-15  0:16 ` [PATCH 00/43] replace strerror Stephen Hemminger
2024-02-01 11:03   ` David Marchand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231114123552.398072-37-huangdengdui@huawei.com \
    --to=huangdengdui@huawei.com \
    --cc=dev@dpdk.org \
    --cc=fengchengwen@huawei.com \
    --cc=ferruh.yigit@amd.com \
    --cc=lihuisong@huawei.com \
    --cc=liuyonglong@huawei.com \
    --cc=stephen@networkplumber.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).