net/bnxt: fix Tx queue startup state
Checks
Commit Message
Default queue state of Tx queues on startup is not correct.
Fix this by setting the state when the port is started.
Fixes: 6eb3cc2294fd ("net/bnxt: add initial Tx code")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
---
drivers/net/bnxt/bnxt_ethdev.c | 10 ++++++++++
drivers/net/bnxt/bnxt_txq.c | 5 -----
2 files changed, 10 insertions(+), 5 deletions(-)
Comments
On Fri, Sep 24, 2021 at 5:55 PM Ajit Khaparde
<ajit.khaparde@broadcom.com> wrote:
>
> Default queue state of Tx queues on startup is not correct.
> Fix this by setting the state when the port is started.
>
> Fixes: 6eb3cc2294fd ("net/bnxt: add initial Tx code")
> Cc: stable@dpdk.org
>
> Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
> Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
Patch applied to dpdk-next-net-brcm. Thanks
> ---
> drivers/net/bnxt/bnxt_ethdev.c | 10 ++++++++++
> drivers/net/bnxt/bnxt_txq.c | 5 -----
> 2 files changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
> index 097dd10de9..eb9147927e 100644
> --- a/drivers/net/bnxt/bnxt_ethdev.c
> +++ b/drivers/net/bnxt/bnxt_ethdev.c
> @@ -814,6 +814,16 @@ static int bnxt_start_nic(struct bnxt *bp)
> }
> }
>
> + for (j = 0; j < bp->tx_nr_rings; j++) {
> + struct bnxt_tx_queue *txq = bp->tx_queues[j];
> +
> + if (!txq->tx_deferred_start) {
> + bp->eth_dev->data->tx_queue_state[j] =
> + RTE_ETH_QUEUE_STATE_STARTED;
> + txq->tx_started = true;
> + }
> + }
> +
> rc = bnxt_hwrm_cfa_l2_set_rx_mask(bp, &bp->vnic_info[0], 0, NULL);
> if (rc) {
> PMD_DRV_LOG(ERR,
> diff --git a/drivers/net/bnxt/bnxt_txq.c b/drivers/net/bnxt/bnxt_txq.c
> index 830416af3d..3ffc334cff 100644
> --- a/drivers/net/bnxt/bnxt_txq.c
> +++ b/drivers/net/bnxt/bnxt_txq.c
> @@ -166,11 +166,6 @@ int bnxt_tx_queue_setup_op(struct rte_eth_dev *eth_dev,
>
> eth_dev->data->tx_queues[queue_idx] = txq;
>
> - if (txq->tx_deferred_start)
> - txq->tx_started = false;
> - else
> - txq->tx_started = true;
> -
> return 0;
> err:
> bnxt_tx_queue_release_op(txq);
> --
> 2.30.1 (Apple Git-130)
>
@@ -814,6 +814,16 @@ static int bnxt_start_nic(struct bnxt *bp)
}
}
+ for (j = 0; j < bp->tx_nr_rings; j++) {
+ struct bnxt_tx_queue *txq = bp->tx_queues[j];
+
+ if (!txq->tx_deferred_start) {
+ bp->eth_dev->data->tx_queue_state[j] =
+ RTE_ETH_QUEUE_STATE_STARTED;
+ txq->tx_started = true;
+ }
+ }
+
rc = bnxt_hwrm_cfa_l2_set_rx_mask(bp, &bp->vnic_info[0], 0, NULL);
if (rc) {
PMD_DRV_LOG(ERR,
@@ -166,11 +166,6 @@ int bnxt_tx_queue_setup_op(struct rte_eth_dev *eth_dev,
eth_dev->data->tx_queues[queue_idx] = txq;
- if (txq->tx_deferred_start)
- txq->tx_started = false;
- else
- txq->tx_started = true;
-
return 0;
err:
bnxt_tx_queue_release_op(txq);