[PATCH 4/4] net/tap: do not use rte_malloc for process private data
Stephen Hemminger
stephen at networkplumber.org
Mon Oct 28 17:32:12 CET 2024
The process private data is local to the process and does not
have to come from global shared memory. Using malloc() gets more
coverage with tools and has better caching.
Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
---
drivers/net/tap/rte_eth_tap.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
index da45610665..650ddbd706 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -1109,7 +1109,8 @@ tap_dev_close(struct rte_eth_dev *dev)
struct pmd_process_private *process_private = dev->process_private;
if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
- rte_free(dev->process_private);
+ free(dev->process_private);
+ dev->process_private = NULL;
if (tap_devices_count == 1)
rte_mp_action_unregister(TAP_MP_REQ_START_RXTX);
tap_devices_count--;
@@ -1170,7 +1171,9 @@ tap_dev_close(struct rte_eth_dev *dev)
close(internals->ioctl_sock);
internals->ioctl_sock = -1;
}
- rte_free(dev->process_private);
+ free(dev->process_private);
+ dev->process_private = NULL;
+
if (tap_devices_count == 1)
rte_mp_action_unregister(TAP_MP_KEY);
tap_devices_count--;
@@ -1923,14 +1926,13 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, const char *tap_name,
goto error_exit_nodev;
}
- process_private = (struct pmd_process_private *)
- rte_zmalloc_socket(tap_name, sizeof(struct pmd_process_private),
- RTE_CACHE_LINE_SIZE, dev->device->numa_node);
-
+ process_private = malloc(sizeof(struct pmd_process_private));
if (process_private == NULL) {
TAP_LOG(ERR, "Failed to alloc memory for process private");
return -1;
}
+ memset(process_private, 0, sizeof(struct pmd_process_private));
+
pmd = dev->data->dev_private;
dev->process_private = process_private;
pmd->dev = dev;
@@ -2435,16 +2437,13 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev)
TAP_LOG(ERR, "Primary process is missing");
return -1;
}
- eth_dev->process_private = (struct pmd_process_private *)
- rte_zmalloc_socket(name,
- sizeof(struct pmd_process_private),
- RTE_CACHE_LINE_SIZE,
- eth_dev->device->numa_node);
+ eth_dev->process_private = malloc(sizeof(struct pmd_process_private));
if (eth_dev->process_private == NULL) {
TAP_LOG(ERR,
"Failed to alloc memory for process private");
return -1;
}
+ memset(eth_dev->process_private, 0, sizeof(struct pmd_process_private));
ret = tap_mp_attach_queues(name, eth_dev);
if (ret != 0)
--
2.45.2
More information about the dev
mailing list