* [dpdk-dev] [PATCH 2/7] net/mlx5: use direct API to find port by device
2020-06-24 11:33 [dpdk-dev] [PATCH 1/7] common/mlx5: fix code arrangement in tag allocation Michael Baum
@ 2020-06-24 11:33 ` Michael Baum
2020-06-28 13:55 ` Raslan Darawsheh
2020-06-24 11:33 ` [dpdk-dev] [PATCH 3/7] net/mlx5: fix iterator type in Rx queue management Michael Baum
` (4 subsequent siblings)
5 siblings, 1 reply; 9+ messages in thread
From: Michael Baum @ 2020-06-24 11:33 UTC (permalink / raw)
To: dev; +Cc: matan, viacheslavo
Using RTE_ETH_FOREACH_DEV_OF loop is not necessary when the driver wants
to find only the first match.
Use rte_eth_find_next_of to find it.
Signed-off-by: Michael Baum <michaelba@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
drivers/net/mlx5/mlx5_mr.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_mr.c b/drivers/net/mlx5/mlx5_mr.c
index adbe07c..3b781b6 100644
--- a/drivers/net/mlx5/mlx5_mr.c
+++ b/drivers/net/mlx5/mlx5_mr.c
@@ -313,9 +313,10 @@ struct mr_update_mp_data {
{
uint16_t port_id;
- RTE_ETH_FOREACH_DEV_OF(port_id, &pdev->device)
- return &rte_eth_devices[port_id];
- return NULL;
+ port_id = rte_eth_find_next_of(0, &pdev->device);
+ if (port_id == RTE_MAX_ETHPORTS)
+ return NULL;
+ return &rte_eth_devices[port_id];
}
/**
--
1.8.3.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH 2/7] net/mlx5: use direct API to find port by device
2020-06-24 11:33 ` [dpdk-dev] [PATCH 2/7] net/mlx5: use direct API to find port by device Michael Baum
@ 2020-06-28 13:55 ` Raslan Darawsheh
0 siblings, 0 replies; 9+ messages in thread
From: Raslan Darawsheh @ 2020-06-28 13:55 UTC (permalink / raw)
To: Michael Baum, dev; +Cc: Matan Azrad, Slava Ovsiienko
Hi,
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Michael Baum
> Sent: Wednesday, June 24, 2020 2:33 PM
> To: dev@dpdk.org
> Cc: Matan Azrad <matan@mellanox.com>; Slava Ovsiienko
> <viacheslavo@mellanox.com>
> Subject: [dpdk-dev] [PATCH 2/7] net/mlx5: use direct API to find port by
> device
>
> Using RTE_ETH_FOREACH_DEV_OF loop is not necessary when the driver
> wants
> to find only the first match.
>
> Use rte_eth_find_next_of to find it.
>
> Signed-off-by: Michael Baum <michaelba@mellanox.com>
> Acked-by: Matan Azrad <matan@mellanox.com>
> ---
> drivers/net/mlx5/mlx5_mr.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/mlx5/mlx5_mr.c b/drivers/net/mlx5/mlx5_mr.c
> index adbe07c..3b781b6 100644
> --- a/drivers/net/mlx5/mlx5_mr.c
> +++ b/drivers/net/mlx5/mlx5_mr.c
> @@ -313,9 +313,10 @@ struct mr_update_mp_data {
> {
> uint16_t port_id;
>
> - RTE_ETH_FOREACH_DEV_OF(port_id, &pdev->device)
> - return &rte_eth_devices[port_id];
> - return NULL;
> + port_id = rte_eth_find_next_of(0, &pdev->device);
> + if (port_id == RTE_MAX_ETHPORTS)
> + return NULL;
> + return &rte_eth_devices[port_id];
> }
>
> /**
> --
> 1.8.3.1
Patch applied to next-net-mlx,
Kindest regards,
Raslan Darawsheh
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH 3/7] net/mlx5: fix iterator type in Rx queue management
2020-06-24 11:33 [dpdk-dev] [PATCH 1/7] common/mlx5: fix code arrangement in tag allocation Michael Baum
2020-06-24 11:33 ` [dpdk-dev] [PATCH 2/7] net/mlx5: use direct API to find port by device Michael Baum
@ 2020-06-24 11:33 ` Michael Baum
2020-06-24 11:33 ` [dpdk-dev] [PATCH 4/7] net/mlx4: use anonymous DV allocator argument Michael Baum
` (3 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Michael Baum @ 2020-06-24 11:33 UTC (permalink / raw)
To: dev; +Cc: matan, viacheslavo, stable
The mlx5_check_vec_rx_support function in the mlx5_rxtx_vec.c file
passes the RX queues array in the loop. Similarly, the mlx5_mprq_enabled
function in the mlx5_rxq.c file passes the RX queues array in the loop.
In both cases, the iterator of the loop is called i and the variable
representing the array size is called rxqs_n.
The i variable is of UINT16_T type while the rxqs_n variable is of
unsigned int type. The size of the rxqs_n variable is much larger than
the number of iterations allowed by the i type, theoretically there may
be a situation where the value of the rxqs_n will be greater than can be
represented by 16 bits and the loop will never end.
Change the type of i to UINT32_T.
Fixes: 7d6bf6b866b8 ("net/mlx5: add Multi-Packet Rx support")
Fixes: 6cb559d67b83 ("net/mlx5: add vectorized Rx/Tx burst for x86")
Cc: stable@dpdk.org
Signed-off-by: Michael Baum <michaelba@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
drivers/net/mlx5/mlx5_rxq.c | 2 +-
drivers/net/mlx5/mlx5_rxtx_vec.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index bd0037b..b436f06 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -108,7 +108,7 @@
mlx5_mprq_enabled(struct rte_eth_dev *dev)
{
struct mlx5_priv *priv = dev->data->dev_private;
- uint16_t i;
+ uint32_t i;
uint16_t n = 0;
uint16_t n_ibv = 0;
diff --git a/drivers/net/mlx5/mlx5_rxtx_vec.c b/drivers/net/mlx5/mlx5_rxtx_vec.c
index b38bd20..7fae201 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec.c
+++ b/drivers/net/mlx5/mlx5_rxtx_vec.c
@@ -156,7 +156,7 @@
mlx5_check_vec_rx_support(struct rte_eth_dev *dev)
{
struct mlx5_priv *priv = dev->data->dev_private;
- uint16_t i;
+ uint32_t i;
if (!priv->config.rx_vec_en)
return -ENOTSUP;
--
1.8.3.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH 4/7] net/mlx4: use anonymous DV allocator argument
2020-06-24 11:33 [dpdk-dev] [PATCH 1/7] common/mlx5: fix code arrangement in tag allocation Michael Baum
2020-06-24 11:33 ` [dpdk-dev] [PATCH 2/7] net/mlx5: use direct API to find port by device Michael Baum
2020-06-24 11:33 ` [dpdk-dev] [PATCH 3/7] net/mlx5: fix iterator type in Rx queue management Michael Baum
@ 2020-06-24 11:33 ` Michael Baum
2020-06-24 11:33 ` [dpdk-dev] [PATCH 5/7] net/mlx4: remove useless assignment Michael Baum
` (2 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Michael Baum @ 2020-06-24 11:33 UTC (permalink / raw)
To: dev; +Cc: matan, viacheslavo
The mlx4_pci_probe function defines an struct mlx4dv_ctx_allocators type
variable several hundred rows after it starts, with the only use it
being passed as a parameter to the mlx4_glue->dv_set_context_attr
function.
However, according to DPDK Coding Style Guidelines, variables should be
declared at the start of a block of code rather than in the middle.
Therefore, to improve the Coding Style, the variable is passed directly
to the function without declaring it before.
Signed-off-by: Michael Baum <michaelba@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
drivers/net/mlx4/mlx4.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
index 5d72027..ff270b4 100644
--- a/drivers/net/mlx4/mlx4.c
+++ b/drivers/net/mlx4/mlx4.c
@@ -1054,14 +1054,13 @@ struct mlx4_conf {
eth_dev->dev_ops = &mlx4_dev_ops;
#ifdef HAVE_IBV_MLX4_BUF_ALLOCATORS
/* Hint libmlx4 to use PMD allocator for data plane resources */
- struct mlx4dv_ctx_allocators alctr = {
- .alloc = &mlx4_alloc_verbs_buf,
- .free = &mlx4_free_verbs_buf,
- .data = priv,
- };
err = mlx4_glue->dv_set_context_attr
(ctx, MLX4DV_SET_CTX_ATTR_BUF_ALLOCATORS,
- (void *)((uintptr_t)&alctr));
+ (void *)((uintptr_t)&(struct mlx4dv_ctx_allocators){
+ .alloc = &mlx4_alloc_verbs_buf,
+ .free = &mlx4_free_verbs_buf,
+ .data = priv,
+ }));
if (err)
WARN("Verbs external allocator is not supported");
else
--
1.8.3.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH 5/7] net/mlx4: remove useless assignment
2020-06-24 11:33 [dpdk-dev] [PATCH 1/7] common/mlx5: fix code arrangement in tag allocation Michael Baum
` (2 preceding siblings ...)
2020-06-24 11:33 ` [dpdk-dev] [PATCH 4/7] net/mlx4: use anonymous DV allocator argument Michael Baum
@ 2020-06-24 11:33 ` Michael Baum
2020-06-24 11:33 ` [dpdk-dev] [PATCH 6/7] common/mlx5: " Michael Baum
2020-06-24 11:33 ` [dpdk-dev] [PATCH 7/7] net/mlx5: use anonymous DV allocator argument Michael Baum
5 siblings, 0 replies; 9+ messages in thread
From: Michael Baum @ 2020-06-24 11:33 UTC (permalink / raw)
To: dev; +Cc: matan, viacheslavo
The mlx4_ibv_device_to_pci_addr function defines a variable called ret
inside a loop and uses it.
During the loop, the function assigns a value within the variable and
breaks from the loop, so that this assigning has done nothing and is
actually unnecessary.
Remove the unnecessary assigning.
Signed-off-by: Michael Baum <michaelba@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
drivers/net/mlx4/mlx4.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
index ff270b4..1657ea3 100644
--- a/drivers/net/mlx4/mlx4.c
+++ b/drivers/net/mlx4/mlx4.c
@@ -492,7 +492,6 @@ struct mlx4_conf {
&pci_addr->bus,
&pci_addr->devid,
&pci_addr->function) == 4) {
- ret = 0;
break;
}
}
--
1.8.3.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH 6/7] common/mlx5: remove useless assignment
2020-06-24 11:33 [dpdk-dev] [PATCH 1/7] common/mlx5: fix code arrangement in tag allocation Michael Baum
` (3 preceding siblings ...)
2020-06-24 11:33 ` [dpdk-dev] [PATCH 5/7] net/mlx4: remove useless assignment Michael Baum
@ 2020-06-24 11:33 ` Michael Baum
2020-06-29 8:44 ` Raslan Darawsheh
2020-06-24 11:33 ` [dpdk-dev] [PATCH 7/7] net/mlx5: use anonymous DV allocator argument Michael Baum
5 siblings, 1 reply; 9+ messages in thread
From: Michael Baum @ 2020-06-24 11:33 UTC (permalink / raw)
To: dev; +Cc: matan, viacheslavo
The mlx5_dev_to_pci_addr function defines a variable called ret inside a
loop and uses it.
During the loop, the function assigns a value within the variable and
breaks from the loop, so that this assigning has done nothing and is
actually unnecessary.
Remove the unnecessary assigning.
Signed-off-by: Michael Baum <michaelba@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
drivers/common/mlx5/linux/mlx5_common_os.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/common/mlx5/linux/mlx5_common_os.c b/drivers/common/mlx5/linux/mlx5_common_os.c
index e422e95..e74aa89 100644
--- a/drivers/common/mlx5/linux/mlx5_common_os.c
+++ b/drivers/common/mlx5/linux/mlx5_common_os.c
@@ -66,7 +66,6 @@
&pci_addr->bus,
&pci_addr->devid,
&pci_addr->function) == 4) {
- ret = 0;
break;
}
}
--
1.8.3.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [dpdk-dev] [PATCH 6/7] common/mlx5: remove useless assignment
2020-06-24 11:33 ` [dpdk-dev] [PATCH 6/7] common/mlx5: " Michael Baum
@ 2020-06-29 8:44 ` Raslan Darawsheh
0 siblings, 0 replies; 9+ messages in thread
From: Raslan Darawsheh @ 2020-06-29 8:44 UTC (permalink / raw)
To: Michael Baum, dev; +Cc: Matan Azrad, Slava Ovsiienko
Hi
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Michael Baum
> Sent: Wednesday, June 24, 2020 2:33 PM
> To: dev@dpdk.org
> Cc: Matan Azrad <matan@mellanox.com>; Slava Ovsiienko
> <viacheslavo@mellanox.com>
> Subject: [dpdk-dev] [PATCH 6/7] common/mlx5: remove useless assignment
>
> The mlx5_dev_to_pci_addr function defines a variable called ret inside a
> loop and uses it.
>
> During the loop, the function assigns a value within the variable and
> breaks from the loop, so that this assigning has done nothing and is
> actually unnecessary.
>
> Remove the unnecessary assigning.
>
> Signed-off-by: Michael Baum <michaelba@mellanox.com>
> Acked-by: Matan Azrad <matan@mellanox.com>
> ---
> drivers/common/mlx5/linux/mlx5_common_os.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/common/mlx5/linux/mlx5_common_os.c
> b/drivers/common/mlx5/linux/mlx5_common_os.c
> index e422e95..e74aa89 100644
> --- a/drivers/common/mlx5/linux/mlx5_common_os.c
> +++ b/drivers/common/mlx5/linux/mlx5_common_os.c
> @@ -66,7 +66,6 @@
> &pci_addr->bus,
> &pci_addr->devid,
> &pci_addr->function) == 4) {
> - ret = 0;
> break;
> }
> }
> --
> 1.8.3.1
Patch applied to next-net-mlx,
Kindest regards,
Raslan Darawsheh
^ permalink raw reply [flat|nested] 9+ messages in thread
* [dpdk-dev] [PATCH 7/7] net/mlx5: use anonymous DV allocator argument
2020-06-24 11:33 [dpdk-dev] [PATCH 1/7] common/mlx5: fix code arrangement in tag allocation Michael Baum
` (4 preceding siblings ...)
2020-06-24 11:33 ` [dpdk-dev] [PATCH 6/7] common/mlx5: " Michael Baum
@ 2020-06-24 11:33 ` Michael Baum
5 siblings, 0 replies; 9+ messages in thread
From: Michael Baum @ 2020-06-24 11:33 UTC (permalink / raw)
To: dev; +Cc: matan, viacheslavo
The mlx5_dev_spawn function defines an struct mlx5dv_ctx_allocators type
variable several hundred rows after it starts, with the only use it
being passed as a parameter to the mlx5_glue->dv_set_context_attr
function.
However, according to DPDK Coding Style Guidelines, variables should be
declared at the start of a block of code rather than in the middle.
Therefore, to improve the Coding Style, the variable is passed directly
to the function without declaring it before.
Signed-off-by: Michael Baum <michaelba@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
drivers/net/mlx5/linux/mlx5_os.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c
index f0147e6..2dc57b2 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -988,14 +988,13 @@
TAILQ_INIT(&priv->flow_meters);
TAILQ_INIT(&priv->flow_meter_profiles);
/* Hint libmlx5 to use PMD allocator for data plane resources */
- struct mlx5dv_ctx_allocators alctr = {
- .alloc = &mlx5_alloc_verbs_buf,
- .free = &mlx5_free_verbs_buf,
- .data = priv,
- };
mlx5_glue->dv_set_context_attr(sh->ctx,
- MLX5DV_CTX_ATTR_BUF_ALLOCATORS,
- (void *)((uintptr_t)&alctr));
+ MLX5DV_CTX_ATTR_BUF_ALLOCATORS,
+ (void *)((uintptr_t)&(struct mlx5dv_ctx_allocators){
+ .alloc = &mlx5_alloc_verbs_buf,
+ .free = &mlx5_free_verbs_buf,
+ .data = priv,
+ }));
/* Bring Ethernet device up. */
DRV_LOG(DEBUG, "port %u forcing Ethernet interface up",
eth_dev->data->port_id);
--
1.8.3.1
^ permalink raw reply [flat|nested] 9+ messages in thread