* [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).