[1/2] net/ark: remove queue offset based on port id
Checks
Commit Message
Queue index was incorrectly incremented with port, which
caused swizzling of packet placement among queues. This manifested
when the number of configured ports was >1 and < nb_queues.
Fixes: c33d45af3633 ("net/ark: add Tx initial version")
Cc: stable@dpdk.org
Signed-off-by: Ed Czeck <ed.czeck@atomicrules.com>
---
drivers/net/ark/ark_ethdev_rx.c | 4 +---
drivers/net/ark/ark_ethdev_tx.c | 4 +---
2 files changed, 2 insertions(+), 6 deletions(-)
Comments
On 7/19/2019 2:07 PM, Ed Czeck wrote:
> Queue index was incorrectly incremented with port, which
> caused swizzling of packet placement among queues.
What is "swizzling of packet placement"?
'qidx' is used to set 'phys_qid', if what the name suggest is correct it is used
to access the actual physical queues.
How this was working if you are calculating physical queue indexes wrong?
(Of-course except port 0)
Are you actually fixing the multiple port support?
> This manifested
> when the number of configured ports was >1 and < nb_queues.
I can see port number ">1", but is the 'nb_queues' limitation real?
If there are 2 queues per port, and you are configuring 3 ports will the
original calculation be correct?
>
> Fixes: c33d45af3633 ("net/ark: add Tx initial version")
> Cc: stable@dpdk.org
>
> Signed-off-by: Ed Czeck <ed.czeck@atomicrules.com>
> ---
> drivers/net/ark/ark_ethdev_rx.c | 4 +---
> drivers/net/ark/ark_ethdev_tx.c | 4 +---
> 2 files changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/ark/ark_ethdev_rx.c b/drivers/net/ark/ark_ethdev_rx.c
> index 7de1a98..6156730 100644
> --- a/drivers/net/ark/ark_ethdev_rx.c
> +++ b/drivers/net/ark/ark_ethdev_rx.c
> @@ -127,9 +127,7 @@ eth_ark_dev_rx_queue_setup(struct rte_eth_dev *dev,
> uint32_t i;
> int status;
>
> - /* Future works: divide the Q's evenly with multi-ports */
> - int port = dev->data->port_id;
> - int qidx = port + queue_idx;
> + int qidx = queue_idx;
>
> /* We may already be setup, free memory prior to re-allocation */
> if (dev->data->rx_queues[queue_idx] != NULL) {
> diff --git a/drivers/net/ark/ark_ethdev_tx.c b/drivers/net/ark/ark_ethdev_tx.c
> index 1967655..08bcf43 100644
> --- a/drivers/net/ark/ark_ethdev_tx.c
> +++ b/drivers/net/ark/ark_ethdev_tx.c
> @@ -211,9 +211,7 @@ eth_ark_tx_queue_setup(struct rte_eth_dev *dev,
> struct ark_tx_queue *queue;
> int status;
>
> - /* Future: divide the Q's evenly with multi-ports */
> - int port = dev->data->port_id;
> - int qidx = port + queue_idx;
> + int qidx = queue_idx;
>
> if (!rte_is_power_of_2(nb_desc)) {
> PMD_DRV_LOG(ERR,
>
@@ -127,9 +127,7 @@ eth_ark_dev_rx_queue_setup(struct rte_eth_dev *dev,
uint32_t i;
int status;
- /* Future works: divide the Q's evenly with multi-ports */
- int port = dev->data->port_id;
- int qidx = port + queue_idx;
+ int qidx = queue_idx;
/* We may already be setup, free memory prior to re-allocation */
if (dev->data->rx_queues[queue_idx] != NULL) {
@@ -211,9 +211,7 @@ eth_ark_tx_queue_setup(struct rte_eth_dev *dev,
struct ark_tx_queue *queue;
int status;
- /* Future: divide the Q's evenly with multi-ports */
- int port = dev->data->port_id;
- int qidx = port + queue_idx;
+ int qidx = queue_idx;
if (!rte_is_power_of_2(nb_desc)) {
PMD_DRV_LOG(ERR,