* [dpdk-dev] [PATCH 0/4] net/ring: driver fixes
@ 2019-04-23 16:48 Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
` (5 more replies)
0 siblings, 6 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:48 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Minor fixes for the net/ring driver.
Stephen Hemminger (4):
net/ring: fix coding style
net/ring: use sizeof() with snprintf
net/ring: use rte_calloc_socket
net/ring: check length of ring name
drivers/net/ring/rte_eth_ring.c | 90 ++++++++++++++++++++-------------
1 file changed, 55 insertions(+), 35 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH 0/4] net/ring: driver fixes
2019-04-23 16:48 [dpdk-dev] [PATCH 0/4] net/ring: driver fixes Stephen Hemminger
@ 2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` [dpdk-dev] [PATCH 1/4] net/ring: fix coding style Stephen Hemminger
` (4 subsequent siblings)
5 siblings, 0 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:48 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Minor fixes for the net/ring driver.
Stephen Hemminger (4):
net/ring: fix coding style
net/ring: use sizeof() with snprintf
net/ring: use rte_calloc_socket
net/ring: check length of ring name
drivers/net/ring/rte_eth_ring.c | 90 ++++++++++++++++++++-------------
1 file changed, 55 insertions(+), 35 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH 1/4] net/ring: fix coding style
2019-04-23 16:48 [dpdk-dev] [PATCH 0/4] net/ring: driver fixes Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
@ 2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` [dpdk-dev] [PATCH 2/4] net/ring: use sizeof() with snprintf Stephen Hemminger
` (3 subsequent siblings)
5 siblings, 1 reply; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:48 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger, Stephen Hemminger
Whitespace fixes to bring inline with current DPDK style.
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
---
drivers/net/ring/rte_eth_ring.c | 58 ++++++++++++++++++---------------
1 file changed, 32 insertions(+), 26 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 115a882b507c..91e5f5f8f262 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -45,8 +45,8 @@ struct ring_queue {
};
struct pmd_internals {
- unsigned max_rx_queues;
- unsigned max_tx_queues;
+ unsigned int max_rx_queues;
+ unsigned int max_tx_queues;
struct ring_queue rx_ring_queues[RTE_PMD_RING_MAX_RX_RINGS];
struct ring_queue tx_ring_queues[RTE_PMD_RING_MAX_TX_RINGS];
@@ -55,12 +55,11 @@ struct pmd_internals {
enum dev_action action;
};
-
static struct rte_eth_link pmd_link = {
- .link_speed = ETH_SPEED_NUM_10G,
- .link_duplex = ETH_LINK_FULL_DUPLEX,
- .link_status = ETH_LINK_DOWN,
- .link_autoneg = ETH_LINK_FIXED,
+ .link_speed = ETH_SPEED_NUM_10G,
+ .link_duplex = ETH_LINK_FULL_DUPLEX,
+ .link_status = ETH_LINK_DOWN,
+ .link_autoneg = ETH_LINK_FIXED,
};
static int eth_ring_logtype;
@@ -138,6 +137,7 @@ eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id,
struct rte_mempool *mb_pool __rte_unused)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev->data->rx_queues[rx_queue_id] = &internals->rx_ring_queues[rx_queue_id];
return 0;
}
@@ -149,6 +149,7 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
const struct rte_eth_txconf *tx_conf __rte_unused)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev->data->tx_queues[tx_queue_id] = &internals->tx_ring_queues[tx_queue_id];
return 0;
}
@@ -156,9 +157,10 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
static void
eth_dev_info(struct rte_eth_dev *dev,
- struct rte_eth_dev_info *dev_info)
+ struct rte_eth_dev_info *dev_info)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev_info->max_mac_addrs = 1;
dev_info->max_rx_pktlen = (uint32_t)-1;
dev_info->max_rx_queues = (uint16_t)internals->max_rx_queues;
@@ -169,7 +171,7 @@ eth_dev_info(struct rte_eth_dev *dev,
static int
eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
{
- unsigned i;
+ unsigned int i;
unsigned long rx_total = 0, tx_total = 0, tx_err_total = 0;
const struct pmd_internals *internal = dev->data->dev_private;
@@ -197,8 +199,9 @@ eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
static void
eth_stats_reset(struct rte_eth_dev *dev)
{
- unsigned i;
+ unsigned int i;
struct pmd_internals *internal = dev->data->dev_private;
+
for (i = 0; i < dev->data->nb_rx_queues; i++)
internal->rx_ring_queues[i].rx_pkts.cnt = 0;
for (i = 0; i < dev->data->nb_tx_queues; i++) {
@@ -250,8 +253,10 @@ static struct rte_vdev_driver pmd_ring_drv;
static int
do_eth_dev_ring_create(const char *name,
- struct rte_ring * const rx_queues[], const unsigned nb_rx_queues,
- struct rte_ring *const tx_queues[], const unsigned nb_tx_queues,
+ struct rte_ring * const rx_queues[],
+ const unsigned int nb_rx_queues,
+ struct rte_ring *const tx_queues[],
+ const unsigned int nb_tx_queues,
const unsigned int numa_node, enum dev_action action,
struct rte_eth_dev **eth_dev_p)
{
@@ -260,7 +265,7 @@ do_eth_dev_ring_create(const char *name,
struct rte_eth_dev *eth_dev = NULL;
void **rx_queues_local = NULL;
void **tx_queues_local = NULL;
- unsigned i;
+ unsigned int i;
PMD_LOG(INFO, "Creating rings-backed ethdev on numa socket %u",
numa_node);
@@ -344,10 +349,10 @@ do_eth_dev_ring_create(const char *name,
int
rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
- const unsigned nb_rx_queues,
+ const unsigned int nb_rx_queues,
struct rte_ring *const tx_queues[],
- const unsigned nb_tx_queues,
- const unsigned numa_node)
+ const unsigned int nb_tx_queues,
+ const unsigned int numa_node)
{
struct ring_internal_args args = {
.rx_queues = rx_queues,
@@ -398,16 +403,16 @@ rte_eth_from_ring(struct rte_ring *r)
}
static int
-eth_dev_ring_create(const char *name, const unsigned numa_node,
+eth_dev_ring_create(const char *name, const unsigned int numa_node,
enum dev_action action, struct rte_eth_dev **eth_dev)
{
/* rx and tx are so-called from point of view of first port.
* They are inverted from the point of view of second port
*/
struct rte_ring *rxtx[RTE_PMD_RING_MAX_RX_RINGS];
- unsigned i;
+ unsigned int i;
char rng_name[RTE_RING_NAMESIZE];
- unsigned num_rings = RTE_MIN(RTE_PMD_RING_MAX_RX_RINGS,
+ unsigned int num_rings = RTE_MIN(RTE_PMD_RING_MAX_RX_RINGS,
RTE_PMD_RING_MAX_TX_RINGS);
for (i = 0; i < num_rings; i++) {
@@ -429,17 +434,18 @@ eth_dev_ring_create(const char *name, const unsigned numa_node,
struct node_action_pair {
char name[PATH_MAX];
- unsigned node;
+ unsigned int node;
enum dev_action action;
};
struct node_action_list {
- unsigned total;
- unsigned count;
+ unsigned int total;
+ unsigned int count;
struct node_action_pair *list;
};
-static int parse_kvlist (const char *key __rte_unused, const char *value, void *data)
+static int parse_kvlist(const char *key __rte_unused,
+ const char *value, void *data)
{
struct node_action_list *info = data;
int ret;
@@ -553,8 +559,8 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev)
kvlist = rte_kvargs_parse(params, valid_arguments);
if (!kvlist) {
- PMD_LOG(INFO, "Ignoring unsupported parameters when creating"
- " rings-backed ethernet device");
+ PMD_LOG(INFO,
+ "Ignoring unsupported parameters when creatingrings-backed ethernet device");
ret = eth_dev_ring_create(name, rte_socket_id(),
DEV_CREATE, ð_dev);
if (ret == -1) {
@@ -598,7 +604,7 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev)
goto out_free;
info->total = ret;
- info->list = (struct node_action_pair*)(info + 1);
+ info->list = (struct node_action_pair *)(info + 1);
ret = rte_kvargs_process(kvlist, ETH_RING_NUMA_NODE_ACTION_ARG,
parse_kvlist, info);
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH 1/4] net/ring: fix coding style
2019-04-23 16:48 ` [dpdk-dev] [PATCH 1/4] net/ring: fix coding style Stephen Hemminger
@ 2019-04-23 16:48 ` Stephen Hemminger
0 siblings, 0 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:48 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger, Stephen Hemminger
Whitespace fixes to bring inline with current DPDK style.
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
---
drivers/net/ring/rte_eth_ring.c | 58 ++++++++++++++++++---------------
1 file changed, 32 insertions(+), 26 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 115a882b507c..91e5f5f8f262 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -45,8 +45,8 @@ struct ring_queue {
};
struct pmd_internals {
- unsigned max_rx_queues;
- unsigned max_tx_queues;
+ unsigned int max_rx_queues;
+ unsigned int max_tx_queues;
struct ring_queue rx_ring_queues[RTE_PMD_RING_MAX_RX_RINGS];
struct ring_queue tx_ring_queues[RTE_PMD_RING_MAX_TX_RINGS];
@@ -55,12 +55,11 @@ struct pmd_internals {
enum dev_action action;
};
-
static struct rte_eth_link pmd_link = {
- .link_speed = ETH_SPEED_NUM_10G,
- .link_duplex = ETH_LINK_FULL_DUPLEX,
- .link_status = ETH_LINK_DOWN,
- .link_autoneg = ETH_LINK_FIXED,
+ .link_speed = ETH_SPEED_NUM_10G,
+ .link_duplex = ETH_LINK_FULL_DUPLEX,
+ .link_status = ETH_LINK_DOWN,
+ .link_autoneg = ETH_LINK_FIXED,
};
static int eth_ring_logtype;
@@ -138,6 +137,7 @@ eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id,
struct rte_mempool *mb_pool __rte_unused)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev->data->rx_queues[rx_queue_id] = &internals->rx_ring_queues[rx_queue_id];
return 0;
}
@@ -149,6 +149,7 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
const struct rte_eth_txconf *tx_conf __rte_unused)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev->data->tx_queues[tx_queue_id] = &internals->tx_ring_queues[tx_queue_id];
return 0;
}
@@ -156,9 +157,10 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
static void
eth_dev_info(struct rte_eth_dev *dev,
- struct rte_eth_dev_info *dev_info)
+ struct rte_eth_dev_info *dev_info)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev_info->max_mac_addrs = 1;
dev_info->max_rx_pktlen = (uint32_t)-1;
dev_info->max_rx_queues = (uint16_t)internals->max_rx_queues;
@@ -169,7 +171,7 @@ eth_dev_info(struct rte_eth_dev *dev,
static int
eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
{
- unsigned i;
+ unsigned int i;
unsigned long rx_total = 0, tx_total = 0, tx_err_total = 0;
const struct pmd_internals *internal = dev->data->dev_private;
@@ -197,8 +199,9 @@ eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
static void
eth_stats_reset(struct rte_eth_dev *dev)
{
- unsigned i;
+ unsigned int i;
struct pmd_internals *internal = dev->data->dev_private;
+
for (i = 0; i < dev->data->nb_rx_queues; i++)
internal->rx_ring_queues[i].rx_pkts.cnt = 0;
for (i = 0; i < dev->data->nb_tx_queues; i++) {
@@ -250,8 +253,10 @@ static struct rte_vdev_driver pmd_ring_drv;
static int
do_eth_dev_ring_create(const char *name,
- struct rte_ring * const rx_queues[], const unsigned nb_rx_queues,
- struct rte_ring *const tx_queues[], const unsigned nb_tx_queues,
+ struct rte_ring * const rx_queues[],
+ const unsigned int nb_rx_queues,
+ struct rte_ring *const tx_queues[],
+ const unsigned int nb_tx_queues,
const unsigned int numa_node, enum dev_action action,
struct rte_eth_dev **eth_dev_p)
{
@@ -260,7 +265,7 @@ do_eth_dev_ring_create(const char *name,
struct rte_eth_dev *eth_dev = NULL;
void **rx_queues_local = NULL;
void **tx_queues_local = NULL;
- unsigned i;
+ unsigned int i;
PMD_LOG(INFO, "Creating rings-backed ethdev on numa socket %u",
numa_node);
@@ -344,10 +349,10 @@ do_eth_dev_ring_create(const char *name,
int
rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
- const unsigned nb_rx_queues,
+ const unsigned int nb_rx_queues,
struct rte_ring *const tx_queues[],
- const unsigned nb_tx_queues,
- const unsigned numa_node)
+ const unsigned int nb_tx_queues,
+ const unsigned int numa_node)
{
struct ring_internal_args args = {
.rx_queues = rx_queues,
@@ -398,16 +403,16 @@ rte_eth_from_ring(struct rte_ring *r)
}
static int
-eth_dev_ring_create(const char *name, const unsigned numa_node,
+eth_dev_ring_create(const char *name, const unsigned int numa_node,
enum dev_action action, struct rte_eth_dev **eth_dev)
{
/* rx and tx are so-called from point of view of first port.
* They are inverted from the point of view of second port
*/
struct rte_ring *rxtx[RTE_PMD_RING_MAX_RX_RINGS];
- unsigned i;
+ unsigned int i;
char rng_name[RTE_RING_NAMESIZE];
- unsigned num_rings = RTE_MIN(RTE_PMD_RING_MAX_RX_RINGS,
+ unsigned int num_rings = RTE_MIN(RTE_PMD_RING_MAX_RX_RINGS,
RTE_PMD_RING_MAX_TX_RINGS);
for (i = 0; i < num_rings; i++) {
@@ -429,17 +434,18 @@ eth_dev_ring_create(const char *name, const unsigned numa_node,
struct node_action_pair {
char name[PATH_MAX];
- unsigned node;
+ unsigned int node;
enum dev_action action;
};
struct node_action_list {
- unsigned total;
- unsigned count;
+ unsigned int total;
+ unsigned int count;
struct node_action_pair *list;
};
-static int parse_kvlist (const char *key __rte_unused, const char *value, void *data)
+static int parse_kvlist(const char *key __rte_unused,
+ const char *value, void *data)
{
struct node_action_list *info = data;
int ret;
@@ -553,8 +559,8 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev)
kvlist = rte_kvargs_parse(params, valid_arguments);
if (!kvlist) {
- PMD_LOG(INFO, "Ignoring unsupported parameters when creating"
- " rings-backed ethernet device");
+ PMD_LOG(INFO,
+ "Ignoring unsupported parameters when creatingrings-backed ethernet device");
ret = eth_dev_ring_create(name, rte_socket_id(),
DEV_CREATE, ð_dev);
if (ret == -1) {
@@ -598,7 +604,7 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev)
goto out_free;
info->total = ret;
- info->list = (struct node_action_pair*)(info + 1);
+ info->list = (struct node_action_pair *)(info + 1);
ret = rte_kvargs_process(kvlist, ETH_RING_NUMA_NODE_ACTION_ARG,
parse_kvlist, info);
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH 2/4] net/ring: use sizeof() with snprintf
2019-04-23 16:48 [dpdk-dev] [PATCH 0/4] net/ring: driver fixes Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` [dpdk-dev] [PATCH 1/4] net/ring: fix coding style Stephen Hemminger
@ 2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` [dpdk-dev] [PATCH 3/4] net/ring: use rte_calloc_socket Stephen Hemminger
` (2 subsequent siblings)
5 siblings, 1 reply; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:48 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Don't hard code string length in two place; use sizeof() instead.
Ring name shoudl use RTE_RING_NAMESIZE.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/ring/rte_eth_ring.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 91e5f5f8f262..2e4ca3b16a1c 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -362,8 +362,8 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
.numa_node = numa_node,
.addr = &args,
};
- char args_str[32] = { 0 };
- char ring_name[32] = { 0 };
+ char args_str[32];
+ char ring_name[RTE_RING_NAMESIZE];
uint16_t port_id = RTE_MAX_ETHPORTS;
int ret;
@@ -381,8 +381,9 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
return -1;
}
- snprintf(args_str, 32, "%s=%p", ETH_RING_INTERNAL_ARG, &args);
- snprintf(ring_name, 32, "net_ring_%s", name);
+ snprintf(args_str, sizeof(args_str), "%s=%p",
+ ETH_RING_INTERNAL_ARG, &args);
+ snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
ret = rte_vdev_init(ring_name, args_str);
if (ret) {
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH 2/4] net/ring: use sizeof() with snprintf
2019-04-23 16:48 ` [dpdk-dev] [PATCH 2/4] net/ring: use sizeof() with snprintf Stephen Hemminger
@ 2019-04-23 16:48 ` Stephen Hemminger
0 siblings, 0 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:48 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Don't hard code string length in two place; use sizeof() instead.
Ring name shoudl use RTE_RING_NAMESIZE.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/ring/rte_eth_ring.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 91e5f5f8f262..2e4ca3b16a1c 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -362,8 +362,8 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
.numa_node = numa_node,
.addr = &args,
};
- char args_str[32] = { 0 };
- char ring_name[32] = { 0 };
+ char args_str[32];
+ char ring_name[RTE_RING_NAMESIZE];
uint16_t port_id = RTE_MAX_ETHPORTS;
int ret;
@@ -381,8 +381,9 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
return -1;
}
- snprintf(args_str, 32, "%s=%p", ETH_RING_INTERNAL_ARG, &args);
- snprintf(ring_name, 32, "net_ring_%s", name);
+ snprintf(args_str, sizeof(args_str), "%s=%p",
+ ETH_RING_INTERNAL_ARG, &args);
+ snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
ret = rte_vdev_init(ring_name, args_str);
if (ret) {
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH 3/4] net/ring: use rte_calloc_socket
2019-04-23 16:48 [dpdk-dev] [PATCH 0/4] net/ring: driver fixes Stephen Hemminger
` (2 preceding siblings ...)
2019-04-23 16:48 ` [dpdk-dev] [PATCH 2/4] net/ring: use sizeof() with snprintf Stephen Hemminger
@ 2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` [dpdk-dev] [PATCH 4/4] net/ring: check length of ring name Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Stephen Hemminger
5 siblings, 1 reply; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:48 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Use rte_calloc_socket instead of computing size.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/ring/rte_eth_ring.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 2e4ca3b16a1c..0355f2b7c4d8 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -270,15 +270,15 @@ do_eth_dev_ring_create(const char *name,
PMD_LOG(INFO, "Creating rings-backed ethdev on numa socket %u",
numa_node);
- rx_queues_local = rte_zmalloc_socket(name,
- sizeof(void *) * nb_rx_queues, 0, numa_node);
+ rx_queues_local = rte_calloc_socket(name, nb_rx_queues,
+ sizeof(void *), 0, numa_node);
if (rx_queues_local == NULL) {
rte_errno = ENOMEM;
goto error;
}
- tx_queues_local = rte_zmalloc_socket(name,
- sizeof(void *) * nb_tx_queues, 0, numa_node);
+ tx_queues_local = rte_calloc_socket(name, nb_tx_queues,
+ sizeof(void *), 0, numa_node);
if (tx_queues_local == NULL) {
rte_errno = ENOMEM;
goto error;
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH 3/4] net/ring: use rte_calloc_socket
2019-04-23 16:48 ` [dpdk-dev] [PATCH 3/4] net/ring: use rte_calloc_socket Stephen Hemminger
@ 2019-04-23 16:48 ` Stephen Hemminger
0 siblings, 0 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:48 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Use rte_calloc_socket instead of computing size.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/ring/rte_eth_ring.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 2e4ca3b16a1c..0355f2b7c4d8 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -270,15 +270,15 @@ do_eth_dev_ring_create(const char *name,
PMD_LOG(INFO, "Creating rings-backed ethdev on numa socket %u",
numa_node);
- rx_queues_local = rte_zmalloc_socket(name,
- sizeof(void *) * nb_rx_queues, 0, numa_node);
+ rx_queues_local = rte_calloc_socket(name, nb_rx_queues,
+ sizeof(void *), 0, numa_node);
if (rx_queues_local == NULL) {
rte_errno = ENOMEM;
goto error;
}
- tx_queues_local = rte_zmalloc_socket(name,
- sizeof(void *) * nb_tx_queues, 0, numa_node);
+ tx_queues_local = rte_calloc_socket(name, nb_tx_queues,
+ sizeof(void *), 0, numa_node);
if (tx_queues_local == NULL) {
rte_errno = ENOMEM;
goto error;
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH 4/4] net/ring: check length of ring name
2019-04-23 16:48 [dpdk-dev] [PATCH 0/4] net/ring: driver fixes Stephen Hemminger
` (3 preceding siblings ...)
2019-04-23 16:48 ` [dpdk-dev] [PATCH 3/4] net/ring: use rte_calloc_socket Stephen Hemminger
@ 2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Stephen Hemminger
5 siblings, 1 reply; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:48 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
The ring name is passed in as part of this drivers API, but it
doesn't check that the name is not truncated.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/ring/rte_eth_ring.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 0355f2b7c4d8..9125692f2c9b 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -383,7 +383,12 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
snprintf(args_str, sizeof(args_str), "%s=%p",
ETH_RING_INTERNAL_ARG, &args);
- snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
+
+ ret = snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
+ if (ret >= (int)sizeof(ring_name)) {
+ rte_errno = ENAMETOOLONG;
+ return -1;
+ }
ret = rte_vdev_init(ring_name, args_str);
if (ret) {
@@ -417,7 +422,15 @@ eth_dev_ring_create(const char *name, const unsigned int numa_node,
RTE_PMD_RING_MAX_TX_RINGS);
for (i = 0; i < num_rings; i++) {
- snprintf(rng_name, sizeof(rng_name), "ETH_RXTX%u_%s", i, name);
+ int cc;
+
+ cc = snprintf(rng_name, sizeof(rng_name),
+ "ETH_RXTX%u_%s", i, name);
+ if (cc >= (int)sizeof(rng_name)) {
+ rte_errno = ENAMETOOLONG;
+ return -1;
+ }
+
rxtx[i] = (action == DEV_CREATE) ?
rte_ring_create(rng_name, 1024, numa_node,
RING_F_SP_ENQ|RING_F_SC_DEQ) :
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH 4/4] net/ring: check length of ring name
2019-04-23 16:48 ` [dpdk-dev] [PATCH 4/4] net/ring: check length of ring name Stephen Hemminger
@ 2019-04-23 16:48 ` Stephen Hemminger
0 siblings, 0 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:48 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
The ring name is passed in as part of this drivers API, but it
doesn't check that the name is not truncated.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/ring/rte_eth_ring.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 0355f2b7c4d8..9125692f2c9b 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -383,7 +383,12 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
snprintf(args_str, sizeof(args_str), "%s=%p",
ETH_RING_INTERNAL_ARG, &args);
- snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
+
+ ret = snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
+ if (ret >= (int)sizeof(ring_name)) {
+ rte_errno = ENAMETOOLONG;
+ return -1;
+ }
ret = rte_vdev_init(ring_name, args_str);
if (ret) {
@@ -417,7 +422,15 @@ eth_dev_ring_create(const char *name, const unsigned int numa_node,
RTE_PMD_RING_MAX_TX_RINGS);
for (i = 0; i < num_rings; i++) {
- snprintf(rng_name, sizeof(rng_name), "ETH_RXTX%u_%s", i, name);
+ int cc;
+
+ cc = snprintf(rng_name, sizeof(rng_name),
+ "ETH_RXTX%u_%s", i, name);
+ if (cc >= (int)sizeof(rng_name)) {
+ rte_errno = ENAMETOOLONG;
+ return -1;
+ }
+
rxtx[i] = (action == DEV_CREATE) ?
rte_ring_create(rng_name, 1024, numa_node,
RING_F_SP_ENQ|RING_F_SC_DEQ) :
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes
2019-04-23 16:48 [dpdk-dev] [PATCH 0/4] net/ring: driver fixes Stephen Hemminger
` (4 preceding siblings ...)
2019-04-23 16:48 ` [dpdk-dev] [PATCH 4/4] net/ring: check length of ring name Stephen Hemminger
@ 2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
` (5 more replies)
5 siblings, 6 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:53 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Minor fixes and cleanups for the net/ring driver.
Stephen Hemminger (4):
net/ring: fix coding style
net/ring: use sizeof() with snprintf
net/ring: use rte_calloc_socket
net/ring: check length of ring name
drivers/net/ring/rte_eth_ring.c | 90 ++++++++++++++++++++-------------
1 file changed, 55 insertions(+), 35 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Stephen Hemminger
@ 2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 1/4] net/ring: fix coding style Stephen Hemminger
` (4 subsequent siblings)
5 siblings, 0 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:53 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Minor fixes and cleanups for the net/ring driver.
Stephen Hemminger (4):
net/ring: fix coding style
net/ring: use sizeof() with snprintf
net/ring: use rte_calloc_socket
net/ring: check length of ring name
drivers/net/ring/rte_eth_ring.c | 90 ++++++++++++++++++++-------------
1 file changed, 55 insertions(+), 35 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v2 1/4] net/ring: fix coding style
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
@ 2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 2/4] net/ring: use sizeof() with snprintf Stephen Hemminger
` (3 subsequent siblings)
5 siblings, 1 reply; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:53 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Whitespace fixes to bring inline with current DPDK style.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
v2 - fix signoff line
drivers/net/ring/rte_eth_ring.c | 58 ++++++++++++++++++---------------
1 file changed, 32 insertions(+), 26 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 115a882b507c..91e5f5f8f262 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -45,8 +45,8 @@ struct ring_queue {
};
struct pmd_internals {
- unsigned max_rx_queues;
- unsigned max_tx_queues;
+ unsigned int max_rx_queues;
+ unsigned int max_tx_queues;
struct ring_queue rx_ring_queues[RTE_PMD_RING_MAX_RX_RINGS];
struct ring_queue tx_ring_queues[RTE_PMD_RING_MAX_TX_RINGS];
@@ -55,12 +55,11 @@ struct pmd_internals {
enum dev_action action;
};
-
static struct rte_eth_link pmd_link = {
- .link_speed = ETH_SPEED_NUM_10G,
- .link_duplex = ETH_LINK_FULL_DUPLEX,
- .link_status = ETH_LINK_DOWN,
- .link_autoneg = ETH_LINK_FIXED,
+ .link_speed = ETH_SPEED_NUM_10G,
+ .link_duplex = ETH_LINK_FULL_DUPLEX,
+ .link_status = ETH_LINK_DOWN,
+ .link_autoneg = ETH_LINK_FIXED,
};
static int eth_ring_logtype;
@@ -138,6 +137,7 @@ eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id,
struct rte_mempool *mb_pool __rte_unused)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev->data->rx_queues[rx_queue_id] = &internals->rx_ring_queues[rx_queue_id];
return 0;
}
@@ -149,6 +149,7 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
const struct rte_eth_txconf *tx_conf __rte_unused)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev->data->tx_queues[tx_queue_id] = &internals->tx_ring_queues[tx_queue_id];
return 0;
}
@@ -156,9 +157,10 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
static void
eth_dev_info(struct rte_eth_dev *dev,
- struct rte_eth_dev_info *dev_info)
+ struct rte_eth_dev_info *dev_info)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev_info->max_mac_addrs = 1;
dev_info->max_rx_pktlen = (uint32_t)-1;
dev_info->max_rx_queues = (uint16_t)internals->max_rx_queues;
@@ -169,7 +171,7 @@ eth_dev_info(struct rte_eth_dev *dev,
static int
eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
{
- unsigned i;
+ unsigned int i;
unsigned long rx_total = 0, tx_total = 0, tx_err_total = 0;
const struct pmd_internals *internal = dev->data->dev_private;
@@ -197,8 +199,9 @@ eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
static void
eth_stats_reset(struct rte_eth_dev *dev)
{
- unsigned i;
+ unsigned int i;
struct pmd_internals *internal = dev->data->dev_private;
+
for (i = 0; i < dev->data->nb_rx_queues; i++)
internal->rx_ring_queues[i].rx_pkts.cnt = 0;
for (i = 0; i < dev->data->nb_tx_queues; i++) {
@@ -250,8 +253,10 @@ static struct rte_vdev_driver pmd_ring_drv;
static int
do_eth_dev_ring_create(const char *name,
- struct rte_ring * const rx_queues[], const unsigned nb_rx_queues,
- struct rte_ring *const tx_queues[], const unsigned nb_tx_queues,
+ struct rte_ring * const rx_queues[],
+ const unsigned int nb_rx_queues,
+ struct rte_ring *const tx_queues[],
+ const unsigned int nb_tx_queues,
const unsigned int numa_node, enum dev_action action,
struct rte_eth_dev **eth_dev_p)
{
@@ -260,7 +265,7 @@ do_eth_dev_ring_create(const char *name,
struct rte_eth_dev *eth_dev = NULL;
void **rx_queues_local = NULL;
void **tx_queues_local = NULL;
- unsigned i;
+ unsigned int i;
PMD_LOG(INFO, "Creating rings-backed ethdev on numa socket %u",
numa_node);
@@ -344,10 +349,10 @@ do_eth_dev_ring_create(const char *name,
int
rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
- const unsigned nb_rx_queues,
+ const unsigned int nb_rx_queues,
struct rte_ring *const tx_queues[],
- const unsigned nb_tx_queues,
- const unsigned numa_node)
+ const unsigned int nb_tx_queues,
+ const unsigned int numa_node)
{
struct ring_internal_args args = {
.rx_queues = rx_queues,
@@ -398,16 +403,16 @@ rte_eth_from_ring(struct rte_ring *r)
}
static int
-eth_dev_ring_create(const char *name, const unsigned numa_node,
+eth_dev_ring_create(const char *name, const unsigned int numa_node,
enum dev_action action, struct rte_eth_dev **eth_dev)
{
/* rx and tx are so-called from point of view of first port.
* They are inverted from the point of view of second port
*/
struct rte_ring *rxtx[RTE_PMD_RING_MAX_RX_RINGS];
- unsigned i;
+ unsigned int i;
char rng_name[RTE_RING_NAMESIZE];
- unsigned num_rings = RTE_MIN(RTE_PMD_RING_MAX_RX_RINGS,
+ unsigned int num_rings = RTE_MIN(RTE_PMD_RING_MAX_RX_RINGS,
RTE_PMD_RING_MAX_TX_RINGS);
for (i = 0; i < num_rings; i++) {
@@ -429,17 +434,18 @@ eth_dev_ring_create(const char *name, const unsigned numa_node,
struct node_action_pair {
char name[PATH_MAX];
- unsigned node;
+ unsigned int node;
enum dev_action action;
};
struct node_action_list {
- unsigned total;
- unsigned count;
+ unsigned int total;
+ unsigned int count;
struct node_action_pair *list;
};
-static int parse_kvlist (const char *key __rte_unused, const char *value, void *data)
+static int parse_kvlist(const char *key __rte_unused,
+ const char *value, void *data)
{
struct node_action_list *info = data;
int ret;
@@ -553,8 +559,8 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev)
kvlist = rte_kvargs_parse(params, valid_arguments);
if (!kvlist) {
- PMD_LOG(INFO, "Ignoring unsupported parameters when creating"
- " rings-backed ethernet device");
+ PMD_LOG(INFO,
+ "Ignoring unsupported parameters when creatingrings-backed ethernet device");
ret = eth_dev_ring_create(name, rte_socket_id(),
DEV_CREATE, ð_dev);
if (ret == -1) {
@@ -598,7 +604,7 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev)
goto out_free;
info->total = ret;
- info->list = (struct node_action_pair*)(info + 1);
+ info->list = (struct node_action_pair *)(info + 1);
ret = rte_kvargs_process(kvlist, ETH_RING_NUMA_NODE_ACTION_ARG,
parse_kvlist, info);
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v2 1/4] net/ring: fix coding style
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 1/4] net/ring: fix coding style Stephen Hemminger
@ 2019-04-23 16:53 ` Stephen Hemminger
0 siblings, 0 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:53 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Whitespace fixes to bring inline with current DPDK style.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
v2 - fix signoff line
drivers/net/ring/rte_eth_ring.c | 58 ++++++++++++++++++---------------
1 file changed, 32 insertions(+), 26 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 115a882b507c..91e5f5f8f262 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -45,8 +45,8 @@ struct ring_queue {
};
struct pmd_internals {
- unsigned max_rx_queues;
- unsigned max_tx_queues;
+ unsigned int max_rx_queues;
+ unsigned int max_tx_queues;
struct ring_queue rx_ring_queues[RTE_PMD_RING_MAX_RX_RINGS];
struct ring_queue tx_ring_queues[RTE_PMD_RING_MAX_TX_RINGS];
@@ -55,12 +55,11 @@ struct pmd_internals {
enum dev_action action;
};
-
static struct rte_eth_link pmd_link = {
- .link_speed = ETH_SPEED_NUM_10G,
- .link_duplex = ETH_LINK_FULL_DUPLEX,
- .link_status = ETH_LINK_DOWN,
- .link_autoneg = ETH_LINK_FIXED,
+ .link_speed = ETH_SPEED_NUM_10G,
+ .link_duplex = ETH_LINK_FULL_DUPLEX,
+ .link_status = ETH_LINK_DOWN,
+ .link_autoneg = ETH_LINK_FIXED,
};
static int eth_ring_logtype;
@@ -138,6 +137,7 @@ eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id,
struct rte_mempool *mb_pool __rte_unused)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev->data->rx_queues[rx_queue_id] = &internals->rx_ring_queues[rx_queue_id];
return 0;
}
@@ -149,6 +149,7 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
const struct rte_eth_txconf *tx_conf __rte_unused)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev->data->tx_queues[tx_queue_id] = &internals->tx_ring_queues[tx_queue_id];
return 0;
}
@@ -156,9 +157,10 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
static void
eth_dev_info(struct rte_eth_dev *dev,
- struct rte_eth_dev_info *dev_info)
+ struct rte_eth_dev_info *dev_info)
{
struct pmd_internals *internals = dev->data->dev_private;
+
dev_info->max_mac_addrs = 1;
dev_info->max_rx_pktlen = (uint32_t)-1;
dev_info->max_rx_queues = (uint16_t)internals->max_rx_queues;
@@ -169,7 +171,7 @@ eth_dev_info(struct rte_eth_dev *dev,
static int
eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
{
- unsigned i;
+ unsigned int i;
unsigned long rx_total = 0, tx_total = 0, tx_err_total = 0;
const struct pmd_internals *internal = dev->data->dev_private;
@@ -197,8 +199,9 @@ eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
static void
eth_stats_reset(struct rte_eth_dev *dev)
{
- unsigned i;
+ unsigned int i;
struct pmd_internals *internal = dev->data->dev_private;
+
for (i = 0; i < dev->data->nb_rx_queues; i++)
internal->rx_ring_queues[i].rx_pkts.cnt = 0;
for (i = 0; i < dev->data->nb_tx_queues; i++) {
@@ -250,8 +253,10 @@ static struct rte_vdev_driver pmd_ring_drv;
static int
do_eth_dev_ring_create(const char *name,
- struct rte_ring * const rx_queues[], const unsigned nb_rx_queues,
- struct rte_ring *const tx_queues[], const unsigned nb_tx_queues,
+ struct rte_ring * const rx_queues[],
+ const unsigned int nb_rx_queues,
+ struct rte_ring *const tx_queues[],
+ const unsigned int nb_tx_queues,
const unsigned int numa_node, enum dev_action action,
struct rte_eth_dev **eth_dev_p)
{
@@ -260,7 +265,7 @@ do_eth_dev_ring_create(const char *name,
struct rte_eth_dev *eth_dev = NULL;
void **rx_queues_local = NULL;
void **tx_queues_local = NULL;
- unsigned i;
+ unsigned int i;
PMD_LOG(INFO, "Creating rings-backed ethdev on numa socket %u",
numa_node);
@@ -344,10 +349,10 @@ do_eth_dev_ring_create(const char *name,
int
rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
- const unsigned nb_rx_queues,
+ const unsigned int nb_rx_queues,
struct rte_ring *const tx_queues[],
- const unsigned nb_tx_queues,
- const unsigned numa_node)
+ const unsigned int nb_tx_queues,
+ const unsigned int numa_node)
{
struct ring_internal_args args = {
.rx_queues = rx_queues,
@@ -398,16 +403,16 @@ rte_eth_from_ring(struct rte_ring *r)
}
static int
-eth_dev_ring_create(const char *name, const unsigned numa_node,
+eth_dev_ring_create(const char *name, const unsigned int numa_node,
enum dev_action action, struct rte_eth_dev **eth_dev)
{
/* rx and tx are so-called from point of view of first port.
* They are inverted from the point of view of second port
*/
struct rte_ring *rxtx[RTE_PMD_RING_MAX_RX_RINGS];
- unsigned i;
+ unsigned int i;
char rng_name[RTE_RING_NAMESIZE];
- unsigned num_rings = RTE_MIN(RTE_PMD_RING_MAX_RX_RINGS,
+ unsigned int num_rings = RTE_MIN(RTE_PMD_RING_MAX_RX_RINGS,
RTE_PMD_RING_MAX_TX_RINGS);
for (i = 0; i < num_rings; i++) {
@@ -429,17 +434,18 @@ eth_dev_ring_create(const char *name, const unsigned numa_node,
struct node_action_pair {
char name[PATH_MAX];
- unsigned node;
+ unsigned int node;
enum dev_action action;
};
struct node_action_list {
- unsigned total;
- unsigned count;
+ unsigned int total;
+ unsigned int count;
struct node_action_pair *list;
};
-static int parse_kvlist (const char *key __rte_unused, const char *value, void *data)
+static int parse_kvlist(const char *key __rte_unused,
+ const char *value, void *data)
{
struct node_action_list *info = data;
int ret;
@@ -553,8 +559,8 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev)
kvlist = rte_kvargs_parse(params, valid_arguments);
if (!kvlist) {
- PMD_LOG(INFO, "Ignoring unsupported parameters when creating"
- " rings-backed ethernet device");
+ PMD_LOG(INFO,
+ "Ignoring unsupported parameters when creatingrings-backed ethernet device");
ret = eth_dev_ring_create(name, rte_socket_id(),
DEV_CREATE, ð_dev);
if (ret == -1) {
@@ -598,7 +604,7 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev)
goto out_free;
info->total = ret;
- info->list = (struct node_action_pair*)(info + 1);
+ info->list = (struct node_action_pair *)(info + 1);
ret = rte_kvargs_process(kvlist, ETH_RING_NUMA_NODE_ACTION_ARG,
parse_kvlist, info);
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v2 2/4] net/ring: use sizeof() with snprintf
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 1/4] net/ring: fix coding style Stephen Hemminger
@ 2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 3/4] net/ring: use rte_calloc_socket Stephen Hemminger
` (2 subsequent siblings)
5 siblings, 1 reply; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:53 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Don't hard code string length in two place; use sizeof() instead.
Ring name shoudl use RTE_RING_NAMESIZE.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/ring/rte_eth_ring.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 91e5f5f8f262..2e4ca3b16a1c 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -362,8 +362,8 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
.numa_node = numa_node,
.addr = &args,
};
- char args_str[32] = { 0 };
- char ring_name[32] = { 0 };
+ char args_str[32];
+ char ring_name[RTE_RING_NAMESIZE];
uint16_t port_id = RTE_MAX_ETHPORTS;
int ret;
@@ -381,8 +381,9 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
return -1;
}
- snprintf(args_str, 32, "%s=%p", ETH_RING_INTERNAL_ARG, &args);
- snprintf(ring_name, 32, "net_ring_%s", name);
+ snprintf(args_str, sizeof(args_str), "%s=%p",
+ ETH_RING_INTERNAL_ARG, &args);
+ snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
ret = rte_vdev_init(ring_name, args_str);
if (ret) {
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v2 2/4] net/ring: use sizeof() with snprintf
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 2/4] net/ring: use sizeof() with snprintf Stephen Hemminger
@ 2019-04-23 16:53 ` Stephen Hemminger
0 siblings, 0 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:53 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Don't hard code string length in two place; use sizeof() instead.
Ring name shoudl use RTE_RING_NAMESIZE.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/ring/rte_eth_ring.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 91e5f5f8f262..2e4ca3b16a1c 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -362,8 +362,8 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
.numa_node = numa_node,
.addr = &args,
};
- char args_str[32] = { 0 };
- char ring_name[32] = { 0 };
+ char args_str[32];
+ char ring_name[RTE_RING_NAMESIZE];
uint16_t port_id = RTE_MAX_ETHPORTS;
int ret;
@@ -381,8 +381,9 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
return -1;
}
- snprintf(args_str, 32, "%s=%p", ETH_RING_INTERNAL_ARG, &args);
- snprintf(ring_name, 32, "net_ring_%s", name);
+ snprintf(args_str, sizeof(args_str), "%s=%p",
+ ETH_RING_INTERNAL_ARG, &args);
+ snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
ret = rte_vdev_init(ring_name, args_str);
if (ret) {
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v2 3/4] net/ring: use rte_calloc_socket
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Stephen Hemminger
` (2 preceding siblings ...)
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 2/4] net/ring: use sizeof() with snprintf Stephen Hemminger
@ 2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 4/4] net/ring: check length of ring name Stephen Hemminger
2019-04-24 16:47 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Ferruh Yigit
5 siblings, 1 reply; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:53 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Use rte_calloc_socket instead of computing size.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/ring/rte_eth_ring.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 2e4ca3b16a1c..0355f2b7c4d8 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -270,15 +270,15 @@ do_eth_dev_ring_create(const char *name,
PMD_LOG(INFO, "Creating rings-backed ethdev on numa socket %u",
numa_node);
- rx_queues_local = rte_zmalloc_socket(name,
- sizeof(void *) * nb_rx_queues, 0, numa_node);
+ rx_queues_local = rte_calloc_socket(name, nb_rx_queues,
+ sizeof(void *), 0, numa_node);
if (rx_queues_local == NULL) {
rte_errno = ENOMEM;
goto error;
}
- tx_queues_local = rte_zmalloc_socket(name,
- sizeof(void *) * nb_tx_queues, 0, numa_node);
+ tx_queues_local = rte_calloc_socket(name, nb_tx_queues,
+ sizeof(void *), 0, numa_node);
if (tx_queues_local == NULL) {
rte_errno = ENOMEM;
goto error;
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v2 3/4] net/ring: use rte_calloc_socket
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 3/4] net/ring: use rte_calloc_socket Stephen Hemminger
@ 2019-04-23 16:53 ` Stephen Hemminger
0 siblings, 0 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:53 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
Use rte_calloc_socket instead of computing size.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/ring/rte_eth_ring.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 2e4ca3b16a1c..0355f2b7c4d8 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -270,15 +270,15 @@ do_eth_dev_ring_create(const char *name,
PMD_LOG(INFO, "Creating rings-backed ethdev on numa socket %u",
numa_node);
- rx_queues_local = rte_zmalloc_socket(name,
- sizeof(void *) * nb_rx_queues, 0, numa_node);
+ rx_queues_local = rte_calloc_socket(name, nb_rx_queues,
+ sizeof(void *), 0, numa_node);
if (rx_queues_local == NULL) {
rte_errno = ENOMEM;
goto error;
}
- tx_queues_local = rte_zmalloc_socket(name,
- sizeof(void *) * nb_tx_queues, 0, numa_node);
+ tx_queues_local = rte_calloc_socket(name, nb_tx_queues,
+ sizeof(void *), 0, numa_node);
if (tx_queues_local == NULL) {
rte_errno = ENOMEM;
goto error;
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v2 4/4] net/ring: check length of ring name
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Stephen Hemminger
` (3 preceding siblings ...)
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 3/4] net/ring: use rte_calloc_socket Stephen Hemminger
@ 2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
2019-04-24 16:47 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Ferruh Yigit
5 siblings, 1 reply; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:53 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
The ring name is passed in as part of this drivers API, but it
doesn't check that the name is not truncated.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
v2 - fix whitespace creep
drivers/net/ring/rte_eth_ring.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 0355f2b7c4d8..979993fd3e11 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -383,7 +383,12 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
snprintf(args_str, sizeof(args_str), "%s=%p",
ETH_RING_INTERNAL_ARG, &args);
- snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
+
+ ret = snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
+ if (ret >= (int)sizeof(ring_name)) {
+ rte_errno = ENAMETOOLONG;
+ return -1;
+ }
ret = rte_vdev_init(ring_name, args_str);
if (ret) {
@@ -417,7 +422,15 @@ eth_dev_ring_create(const char *name, const unsigned int numa_node,
RTE_PMD_RING_MAX_TX_RINGS);
for (i = 0; i < num_rings; i++) {
- snprintf(rng_name, sizeof(rng_name), "ETH_RXTX%u_%s", i, name);
+ int cc;
+
+ cc = snprintf(rng_name, sizeof(rng_name),
+ "ETH_RXTX%u_%s", i, name);
+ if (cc >= (int)sizeof(rng_name)) {
+ rte_errno = ENAMETOOLONG;
+ return -1;
+ }
+
rxtx[i] = (action == DEV_CREATE) ?
rte_ring_create(rng_name, 1024, numa_node,
RING_F_SP_ENQ|RING_F_SC_DEQ) :
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [dpdk-dev] [PATCH v2 4/4] net/ring: check length of ring name
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 4/4] net/ring: check length of ring name Stephen Hemminger
@ 2019-04-23 16:53 ` Stephen Hemminger
0 siblings, 0 replies; 22+ messages in thread
From: Stephen Hemminger @ 2019-04-23 16:53 UTC (permalink / raw)
To: bruce.richardson; +Cc: dev, Stephen Hemminger
The ring name is passed in as part of this drivers API, but it
doesn't check that the name is not truncated.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
v2 - fix whitespace creep
drivers/net/ring/rte_eth_ring.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 0355f2b7c4d8..979993fd3e11 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -383,7 +383,12 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
snprintf(args_str, sizeof(args_str), "%s=%p",
ETH_RING_INTERNAL_ARG, &args);
- snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
+
+ ret = snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name);
+ if (ret >= (int)sizeof(ring_name)) {
+ rte_errno = ENAMETOOLONG;
+ return -1;
+ }
ret = rte_vdev_init(ring_name, args_str);
if (ret) {
@@ -417,7 +422,15 @@ eth_dev_ring_create(const char *name, const unsigned int numa_node,
RTE_PMD_RING_MAX_TX_RINGS);
for (i = 0; i < num_rings; i++) {
- snprintf(rng_name, sizeof(rng_name), "ETH_RXTX%u_%s", i, name);
+ int cc;
+
+ cc = snprintf(rng_name, sizeof(rng_name),
+ "ETH_RXTX%u_%s", i, name);
+ if (cc >= (int)sizeof(rng_name)) {
+ rte_errno = ENAMETOOLONG;
+ return -1;
+ }
+
rxtx[i] = (action == DEV_CREATE) ?
rte_ring_create(rng_name, 1024, numa_node,
RING_F_SP_ENQ|RING_F_SC_DEQ) :
--
2.20.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Stephen Hemminger
` (4 preceding siblings ...)
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 4/4] net/ring: check length of ring name Stephen Hemminger
@ 2019-04-24 16:47 ` Ferruh Yigit
2019-04-24 16:47 ` Ferruh Yigit
5 siblings, 1 reply; 22+ messages in thread
From: Ferruh Yigit @ 2019-04-24 16:47 UTC (permalink / raw)
To: Stephen Hemminger, bruce.richardson; +Cc: dev
On 4/23/2019 5:53 PM, Stephen Hemminger wrote:
> Minor fixes and cleanups for the net/ring driver.
>
> Stephen Hemminger (4):
> net/ring: fix coding style
> net/ring: use sizeof() with snprintf
> net/ring: use rte_calloc_socket
> net/ring: check length of ring name
For series,
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Series applied to dpdk-next-net/master, thanks.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes
2019-04-24 16:47 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Ferruh Yigit
@ 2019-04-24 16:47 ` Ferruh Yigit
0 siblings, 0 replies; 22+ messages in thread
From: Ferruh Yigit @ 2019-04-24 16:47 UTC (permalink / raw)
To: Stephen Hemminger, bruce.richardson; +Cc: dev
On 4/23/2019 5:53 PM, Stephen Hemminger wrote:
> Minor fixes and cleanups for the net/ring driver.
>
> Stephen Hemminger (4):
> net/ring: fix coding style
> net/ring: use sizeof() with snprintf
> net/ring: use rte_calloc_socket
> net/ring: check length of ring name
For series,
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Series applied to dpdk-next-net/master, thanks.
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2019-04-24 16:47 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-23 16:48 [dpdk-dev] [PATCH 0/4] net/ring: driver fixes Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` [dpdk-dev] [PATCH 1/4] net/ring: fix coding style Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` [dpdk-dev] [PATCH 2/4] net/ring: use sizeof() with snprintf Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` [dpdk-dev] [PATCH 3/4] net/ring: use rte_calloc_socket Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:48 ` [dpdk-dev] [PATCH 4/4] net/ring: check length of ring name Stephen Hemminger
2019-04-23 16:48 ` Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 1/4] net/ring: fix coding style Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 2/4] net/ring: use sizeof() with snprintf Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 3/4] net/ring: use rte_calloc_socket Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
2019-04-23 16:53 ` [dpdk-dev] [PATCH v2 4/4] net/ring: check length of ring name Stephen Hemminger
2019-04-23 16:53 ` Stephen Hemminger
2019-04-24 16:47 ` [dpdk-dev] [PATCH v2 0/4] net/ring: driver fixes Ferruh Yigit
2019-04-24 16:47 ` Ferruh Yigit
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).