git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
net/i40e: extended list of operations for DDP processing
[dpdk.git]
/
drivers
/
net
/
ring
/
rte_eth_ring.c
diff --git
a/drivers/net/ring/rte_eth_ring.c
b/drivers/net/ring/rte_eth_ring.c
index
73ec2e4
..
820a411
100644
(file)
--- a/
drivers/net/ring/rte_eth_ring.c
+++ b/
drivers/net/ring/rte_eth_ring.c
@@
-280,6
+280,8
@@
do_eth_dev_ring_create(const char *name,
struct rte_eth_dev_data *data = NULL;
struct pmd_internals *internals = NULL;
struct rte_eth_dev *eth_dev = NULL;
struct rte_eth_dev_data *data = NULL;
struct pmd_internals *internals = NULL;
struct rte_eth_dev *eth_dev = NULL;
+ void **rx_queues_local = NULL;
+ void **tx_queues_local = NULL;
unsigned i;
RTE_LOG(INFO, PMD, "Creating rings-backed ethdev on numa socket %u\n",
unsigned i;
RTE_LOG(INFO, PMD, "Creating rings-backed ethdev on numa socket %u\n",
@@
-294,16
+296,16
@@
do_eth_dev_ring_create(const char *name,
goto error;
}
goto error;
}
-
data->rx_queues
= rte_zmalloc_socket(name,
+
rx_queues_local
= rte_zmalloc_socket(name,
sizeof(void *) * nb_rx_queues, 0, numa_node);
sizeof(void *) * nb_rx_queues, 0, numa_node);
- if (
data->rx_queues
== NULL) {
+ if (
rx_queues_local
== NULL) {
rte_errno = ENOMEM;
goto error;
}
rte_errno = ENOMEM;
goto error;
}
-
data->tx_queues
= rte_zmalloc_socket(name,
+
tx_queues_local
= rte_zmalloc_socket(name,
sizeof(void *) * nb_tx_queues, 0, numa_node);
sizeof(void *) * nb_tx_queues, 0, numa_node);
- if (
data->tx_queues
== NULL) {
+ if (
tx_queues_local
== NULL) {
rte_errno = ENOMEM;
goto error;
}
rte_errno = ENOMEM;
goto error;
}
@@
-330,6
+332,10
@@
do_eth_dev_ring_create(const char *name,
/* NOTE: we'll replace the data element, of originally allocated eth_dev
* so the rings are local per-process */
/* NOTE: we'll replace the data element, of originally allocated eth_dev
* so the rings are local per-process */
+ rte_memcpy(data, eth_dev->data, sizeof(*data));
+ data->rx_queues = rx_queues_local;
+ data->tx_queues = tx_queues_local;
+
internals->action = action;
internals->max_rx_queues = nb_rx_queues;
internals->max_tx_queues = nb_tx_queues;
internals->action = action;
internals->max_rx_queues = nb_rx_queues;
internals->max_tx_queues = nb_tx_queues;
@@
-343,8
+349,6
@@
do_eth_dev_ring_create(const char *name,
}
data->dev_private = internals;
}
data->dev_private = internals;
- data->port_id = eth_dev->data->port_id;
- memmove(data->name, eth_dev->data->name, sizeof(data->name));
data->nb_rx_queues = (uint16_t)nb_rx_queues;
data->nb_tx_queues = (uint16_t)nb_tx_queues;
data->dev_link = pmd_link;
data->nb_rx_queues = (uint16_t)nb_rx_queues;
data->nb_tx_queues = (uint16_t)nb_tx_queues;
data->dev_link = pmd_link;
@@
-354,7
+358,6
@@
do_eth_dev_ring_create(const char *name,
eth_dev->dev_ops = &ops;
data->dev_flags = RTE_ETH_DEV_DETACHABLE;
data->kdrv = RTE_KDRV_NONE;
eth_dev->dev_ops = &ops;
data->dev_flags = RTE_ETH_DEV_DETACHABLE;
data->kdrv = RTE_KDRV_NONE;
- data->drv_name = pmd_ring_drv.driver.name;
data->numa_node = numa_node;
/* finally assign rx and tx ops */
data->numa_node = numa_node;
/* finally assign rx and tx ops */
@@
-366,10
+369,8
@@
do_eth_dev_ring_create(const char *name,
return data->port_id;
error:
return data->port_id;
error:
- if (data) {
- rte_free(data->rx_queues);
- rte_free(data->tx_queues);
- }
+ rte_free(rx_queues_local);
+ rte_free(tx_queues_local);
rte_free(data);
rte_free(internals);
rte_free(data);
rte_free(internals);
@@
-487,7
+488,7
@@
static int parse_kvlist (const char *key __rte_unused, const char *value, void *
ret = -EINVAL;
if (!name) {
ret = -EINVAL;
if (!name) {
- RTE_LOG(WARNING, PMD, "command line paramter is empty for ring pmd!\n");
+ RTE_LOG(WARNING, PMD, "command line param
e
ter is empty for ring pmd!\n");
goto out;
}
goto out;
}