get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/94876/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 94876,
    "url": "https://patches.dpdk.org/api/patches/94876/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20210625223401.45505-2-ajit.khaparde@broadcom.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20210625223401.45505-2-ajit.khaparde@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210625223401.45505-2-ajit.khaparde@broadcom.com",
    "date": "2021-06-25T22:34:00",
    "name": "[1/2] net/bnxt: add support for runtime queue setup",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "674f4928cff8027d08926c65b77098da214ce163",
    "submitter": {
        "id": 501,
        "url": "https://patches.dpdk.org/api/people/501/?format=api",
        "name": "Ajit Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "delegate": {
        "id": 1766,
        "url": "https://patches.dpdk.org/api/users/1766/?format=api",
        "username": "ajitkhaparde",
        "first_name": "Ajit",
        "last_name": "Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20210625223401.45505-2-ajit.khaparde@broadcom.com/mbox/",
    "series": [
        {
            "id": 17493,
            "url": "https://patches.dpdk.org/api/series/17493/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=17493",
            "date": "2021-06-25T22:33:59",
            "name": "bet/bnxt: add runtime queue setup support",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/17493/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/94876/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/94876/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 68ACDA034F;\n\tSat, 26 Jun 2021 00:34:22 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 5757E40E6E;\n\tSat, 26 Jun 2021 00:34:17 +0200 (CEST)",
            "from mail-pf1-f172.google.com (mail-pf1-f172.google.com\n [209.85.210.172])\n by mails.dpdk.org (Postfix) with ESMTP id 3949540E25\n for <dev@dpdk.org>; Sat, 26 Jun 2021 00:34:16 +0200 (CEST)",
            "by mail-pf1-f172.google.com with SMTP id 21so8597895pfp.3\n for <dev@dpdk.org>; Fri, 25 Jun 2021 15:34:16 -0700 (PDT)",
            "from localhost.localdomain ([192.19.223.252])\n by smtp.gmail.com with ESMTPSA id u8sm10111943pjg.1.2021.06.25.15.34.12\n for <dev@dpdk.org>\n (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);\n Fri, 25 Jun 2021 15:34:14 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com;\n s=google;\n h=from:to:subject:date:message-id:in-reply-to:references:mime-version;\n bh=++G++r8HCIkGszb4XBxtn3rfpyU5eD9UD1qmqkz7r3k=;\n b=EU+zjWkR6Roub8x9F9IOVnd2EERAM3gRXjoSNrmkVVHCgfDWg1GrepDSt75hTb0h31\n HjG22/Ukg44Rt6oJhzGtACsFKJ9XfEbD2r752yWr4YL5IELMje7ay8uh0jWhoi8+XQWc\n tBn3c6k7TJswxYPDgDg40Z583x52gO6bkm0Cc=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to\n :references:mime-version;\n bh=++G++r8HCIkGszb4XBxtn3rfpyU5eD9UD1qmqkz7r3k=;\n b=J4Utr3hZQlo9/Joom4vEV4NYvHRLeTJO9xVwo7+MLKuoPRx9AZvPMgwPV2eaQ2KNWh\n QNz6sQPUjntEkO2yuIYdRCfcD35MZUv6zHrIC+FJMC6IQYAbEG47ErwJj5GK1IkPwPhP\n j7WFwjfrm+QyW6fw5DRtv7mwrwkOPV1dZGGIZSEXIM/1fF5ddTx8+aBS2kYuXt2MQ7ZZ\n 5cErqgQFhYiahGTPuygi9O0tnej/DeVaum17kcopmz2l1Ra5YnGDgC+2uWJOEQzPpQTK\n oRpr3vVV7YkAlO2hDCHUaZvFrljhdTNmmAsGt0pWd4WUF6QRjykMNuC2thuju90huoFP\n ExHQ==",
        "X-Gm-Message-State": "AOAM530bXXgjW5LMf9LSC8W5VVb4TkOp+OBuGDt1b935MXU4PU/0ywPW\n FZR4lD+TSNI0mPjzfXZL8UrdXRQGmwjk2Gzzhj/6HX89DxTi9vMHO3JNS660L77eskl+5NS1onj\n 3vYw7M7Gq0vjmbP8MMY5dmy3pAnpx2DcGqdDQDb9KAD/CXqbOqZEKGGvSOUjuv2E=",
        "X-Google-Smtp-Source": "\n ABdhPJxpTk/4hUkfjo+PlaNs6btiQKWqG1ZQDS9ChhJFYc7B7yzsuy3Bq+lx5Lwobne8mHnSq7kOmQ==",
        "X-Received": "by 2002:a63:5118:: with SMTP id f24mr11466310pgb.34.1624660454782;\n Fri, 25 Jun 2021 15:34:14 -0700 (PDT)",
        "From": "Ajit Khaparde <ajit.khaparde@broadcom.com>",
        "To": "dev@dpdk.org",
        "Date": "Fri, 25 Jun 2021 15:34:00 -0700",
        "Message-Id": "<20210625223401.45505-2-ajit.khaparde@broadcom.com>",
        "X-Mailer": "git-send-email 2.21.1 (Apple Git-122.3)",
        "In-Reply-To": "<20210625223401.45505-1-ajit.khaparde@broadcom.com>",
        "References": "<20210625223401.45505-1-ajit.khaparde@broadcom.com>",
        "MIME-Version": "1.0",
        "Content-Type": "multipart/signed; protocol=\"application/pkcs7-signature\";\n micalg=sha-256; boundary=\"0000000000005353b405c59ebd8f\"",
        "X-Content-Filtered-By": "Mailman/MimeDel 2.1.29",
        "Subject": "[dpdk-dev] [PATCH 1/2] net/bnxt: add support for runtime queue setup",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Add support for runtime Rx and Tx queue setup. This will allow\nRx/Tx queue setup after the interface is started.\n\nSigned-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\n---\n drivers/net/bnxt/bnxt_ethdev.c |  2 ++\n drivers/net/bnxt/bnxt_hwrm.c   | 46 ++++++++++++++++++++++++------\n drivers/net/bnxt/bnxt_hwrm.h   |  3 ++\n drivers/net/bnxt/bnxt_ring.c   | 51 ++++++++++++++++++++++++++++++++++\n drivers/net/bnxt/bnxt_rxq.c    | 12 ++------\n drivers/net/bnxt/bnxt_txq.c    |  2 ++\n drivers/net/bnxt/bnxt_txr.c    |  6 ++++\n 7 files changed, 105 insertions(+), 17 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex 4d51a209f9..495c6cd21e 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -987,6 +987,8 @@ static int bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,\n \tdev_info->flow_type_rss_offloads = BNXT_ETH_RSS_SUPPORT;\n \n \tdev_info->speed_capa = bnxt_get_speed_capabilities(bp);\n+\tdev_info->dev_capa = RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP |\n+\t\t\t     RTE_ETH_DEV_CAPA_RUNTIME_TX_QUEUE_SETUP;\n \n \tdev_info->default_rxconf = (struct rte_eth_rxconf) {\n \t\t.rx_thresh = {\ndiff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c\nindex 6c4f83ee3b..1a4968abe6 100644\n--- a/drivers/net/bnxt/bnxt_hwrm.c\n+++ b/drivers/net/bnxt/bnxt_hwrm.c\n@@ -1917,7 +1917,7 @@ int bnxt_hwrm_stat_clear(struct bnxt *bp, struct bnxt_cp_ring_info *cpr)\n \treturn rc;\n }\n \n-static int bnxt_hwrm_stat_ctx_alloc(struct bnxt *bp, struct bnxt_cp_ring_info *cpr)\n+int bnxt_hwrm_stat_ctx_alloc(struct bnxt *bp, struct bnxt_cp_ring_info *cpr)\n {\n \tint rc;\n \tstruct hwrm_stat_ctx_alloc_input req = {.req_type = 0 };\n@@ -2637,10 +2637,11 @@ int bnxt_alloc_all_hwrm_stat_ctxs(struct bnxt *bp)\n \t\t\tcpr = rxq->cp_ring;\n \t\t}\n \n-\t\trc = bnxt_hwrm_stat_ctx_alloc(bp, cpr);\n-\n-\t\tif (rc)\n-\t\t\treturn rc;\n+\t\tif (cpr->hw_stats_ctx_id == HWRM_NA_SIGNATURE) {\n+\t\t\trc = bnxt_hwrm_stat_ctx_alloc(bp, cpr);\n+\t\t\tif (rc)\n+\t\t\t\treturn rc;\n+\t\t}\n \t}\n \treturn rc;\n }\n@@ -2720,6 +2721,12 @@ void bnxt_free_hwrm_rx_ring(struct bnxt *bp, int queue_index)\n \t\t\tbp->grp_info[queue_index].ag_fw_ring_id =\n \t\t\t\t\t\t\tINVALID_HW_RING_ID;\n \t}\n+\n+\tif (cpr->hw_stats_ctx_id != HWRM_NA_SIGNATURE) {\n+\t\tbnxt_hwrm_stat_ctx_free(bp, cpr);\n+\t\tcpr->hw_stats_ctx_id = HWRM_NA_SIGNATURE;\n+\t}\n+\n \tif (cpr->cp_ring_struct->fw_ring_id != INVALID_HW_RING_ID)\n \t\tbnxt_free_cp_ring(bp, cpr);\n \n@@ -5093,7 +5100,6 @@ static int\n bnxt_vnic_rss_configure_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic)\n {\n \tstruct hwrm_vnic_rss_cfg_output *resp = bp->hwrm_cmd_resp_addr;\n-\tuint8_t *rx_queue_state = bp->eth_dev->data->rx_queue_state;\n \tstruct hwrm_vnic_rss_cfg_input req = {.req_type = 0 };\n \tstruct bnxt_rx_queue **rxqs = bp->rx_queues;\n \tuint16_t *ring_tbl = vnic->rss_table;\n@@ -5127,8 +5133,7 @@ bnxt_vnic_rss_configure_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic)\n \n \t\t\t/* Find next active ring. */\n \t\t\tfor (cnt = 0; cnt < max_rings; cnt++) {\n-\t\t\t\tif (rx_queue_state[k] !=\n-\t\t\t\t\t\tRTE_ETH_QUEUE_STATE_STOPPED)\n+\t\t\t\tif (rxqs[k]->rx_started)\n \t\t\t\t\tbreak;\n \t\t\t\tif (++k == max_rings)\n \t\t\t\t\tk = 0;\n@@ -6194,3 +6199,28 @@ int bnxt_hwrm_read_sfp_module_eeprom_info(struct bnxt *bp, uint16_t i2c_addr,\n \n \treturn rc;\n }\n+\n+void bnxt_free_hwrm_tx_ring(struct bnxt *bp, int queue_index)\n+{\n+\tstruct bnxt_tx_queue *txq = bp->tx_queues[queue_index];\n+\tstruct bnxt_tx_ring_info *txr = txq->tx_ring;\n+\tstruct bnxt_ring *ring = txr->tx_ring_struct;\n+\tstruct bnxt_cp_ring_info *cpr = txq->cp_ring;\n+\n+\tif (ring->fw_ring_id != INVALID_HW_RING_ID) {\n+\t\tbnxt_hwrm_ring_free(bp, ring,\n+\t\t\t\t    HWRM_RING_FREE_INPUT_RING_TYPE_TX,\n+\t\t\t\t    cpr->cp_ring_struct->fw_ring_id);\n+\t\tring->fw_ring_id = INVALID_HW_RING_ID;\n+\t}\n+\n+\tif (cpr->hw_stats_ctx_id != HWRM_NA_SIGNATURE) {\n+\t\tbnxt_hwrm_stat_ctx_free(bp, cpr);\n+\t\tcpr->hw_stats_ctx_id = HWRM_NA_SIGNATURE;\n+\t}\n+\n+\tif (cpr->cp_ring_struct->fw_ring_id != INVALID_HW_RING_ID) {\n+\t\tbnxt_free_cp_ring(bp, cpr);\n+\t\tcpr->cp_ring_struct->fw_ring_id = INVALID_HW_RING_ID;\n+\t}\n+}\ndiff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h\nindex 057f7f94d0..ec3414f0c6 100644\n--- a/drivers/net/bnxt/bnxt_hwrm.h\n+++ b/drivers/net/bnxt/bnxt_hwrm.h\n@@ -304,4 +304,7 @@ int bnxt_hwrm_ring_stats(struct bnxt *bp, uint32_t cid, int idx,\n int bnxt_hwrm_read_sfp_module_eeprom_info(struct bnxt *bp, uint16_t i2c_addr,\n \t\t\t\t\t  uint16_t page_number, uint16_t start_addr,\n \t\t\t\t\t  uint16_t data_length, uint8_t *buf);\n+int bnxt_hwrm_stat_ctx_alloc(struct bnxt *bp, struct bnxt_cp_ring_info *cpr);\n+void bnxt_free_hwrm_tx_ring(struct bnxt *bp, int queue_index);\n+int bnxt_alloc_hwrm_tx_ring(struct bnxt *bp, int queue_index);\n #endif\ndiff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c\nindex cb18dfba7f..9ec0c10911 100644\n--- a/drivers/net/bnxt/bnxt_ring.c\n+++ b/drivers/net/bnxt/bnxt_ring.c\n@@ -599,6 +599,10 @@ int bnxt_alloc_hwrm_rx_ring(struct bnxt *bp, int queue_index)\n \tif (rc)\n \t\tgoto err_out;\n \n+\trc = bnxt_hwrm_stat_ctx_alloc(bp, cpr);\n+\tif (rc)\n+\t\tgoto err_out;\n+\n \tif (BNXT_HAS_RING_GRPS(bp)) {\n \t\tbp->grp_info[queue_index].fw_stats_ctx = cpr->hw_stats_ctx_id;\n \t\tbp->grp_info[queue_index].cp_fw_ring_id = cp_ring->fw_ring_id;\n@@ -837,3 +841,50 @@ int bnxt_alloc_async_ring_struct(struct bnxt *bp)\n \treturn bnxt_alloc_rings(bp, bp->eth_dev->device->numa_node, 0, NULL,\n \t\t\t\tNULL, bp->async_cp_ring, NULL, \"def_cp\");\n }\n+\n+int bnxt_alloc_hwrm_tx_ring(struct bnxt *bp, int queue_index)\n+{\n+\tstruct bnxt_tx_queue *txq = bp->tx_queues[queue_index];\n+\tstruct bnxt_cp_ring_info *cpr = txq->cp_ring;\n+\tstruct bnxt_ring *cp_ring = cpr->cp_ring_struct;\n+\tstruct bnxt_tx_ring_info *txr = txq->tx_ring;\n+\tstruct bnxt_ring *ring = txr->tx_ring_struct;\n+\tunsigned int idx = queue_index + bp->rx_cp_nr_rings;\n+\tuint16_t tx_cosq_id = 0;\n+\tstruct bnxt_coal coal;\n+\tint rc = 0;\n+\n+\trc = bnxt_alloc_cmpl_ring(bp, idx, cpr);\n+\tif (rc)\n+\t\tgoto err_out;\n+\n+\tbnxt_init_dflt_coal(&coal);\n+\tbnxt_hwrm_set_ring_coal(bp, &coal, cp_ring->fw_ring_id);\n+\n+\trc = bnxt_hwrm_stat_ctx_alloc(bp, cpr);\n+\tif (rc)\n+\t\tgoto err_out;\n+\n+\tif (bp->vnic_cap_flags & BNXT_VNIC_CAP_COS_CLASSIFY)\n+\t\ttx_cosq_id = bp->tx_cosq_id[queue_index < bp->max_lltc ? queue_index : 0];\n+\telse\n+\t\ttx_cosq_id = bp->tx_cosq_id[0];\n+\n+\trc = bnxt_hwrm_ring_alloc(bp, ring,\n+\t\t\t\t  HWRM_RING_ALLOC_INPUT_RING_TYPE_TX,\n+\t\t\t\t  queue_index, cpr->hw_stats_ctx_id,\n+\t\t\t\t  cp_ring->fw_ring_id,\n+\t\t\t\t  tx_cosq_id);\n+\tif (rc)\n+\t\tgoto err_out;\n+\n+\tbnxt_set_db(bp, &txr->tx_db, HWRM_RING_ALLOC_INPUT_RING_TYPE_TX,\n+\t\t    queue_index, ring->fw_ring_id,\n+\t\t    ring->ring_mask);\n+\ttxq->index = idx;\n+\n+\treturn rc;\n+err_out:\n+\tbnxt_free_hwrm_tx_ring(bp, queue_index);\n+\treturn rc;\n+}\ndiff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c\nindex 44b09e9c61..bbcb3b06e7 100644\n--- a/drivers/net/bnxt/bnxt_rxq.c\n+++ b/drivers/net/bnxt/bnxt_rxq.c\n@@ -248,6 +248,7 @@ void bnxt_rx_queue_release_op(void *rx_queue)\n \t\tif (is_bnxt_in_error(rxq->bp))\n \t\t\treturn;\n \n+\t\tbnxt_free_hwrm_rx_ring(rxq->bp, rxq->queue_id);\n \t\tbnxt_rx_queue_release_mbufs(rxq);\n \n \t\t/* Free RX ring hardware descriptors */\n@@ -286,7 +287,6 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev,\n \tuint64_t rx_offloads = eth_dev->data->dev_conf.rxmode.offloads;\n \tstruct bnxt_rx_queue *rxq;\n \tint rc = 0;\n-\tuint8_t queue_state;\n \n \trc = is_bnxt_in_error(bp);\n \tif (rc)\n@@ -360,14 +360,8 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev,\n \telse\n \t\trxq->rx_deferred_start = rx_conf->rx_deferred_start;\n \n-\tif (rxq->rx_deferred_start) {\n-\t\tqueue_state = RTE_ETH_QUEUE_STATE_STOPPED;\n-\t\trxq->rx_started = false;\n-\t} else {\n-\t\tqueue_state = RTE_ETH_QUEUE_STATE_STARTED;\n-\t\trxq->rx_started = true;\n-\t}\n-\teth_dev->data->rx_queue_state[queue_idx] = queue_state;\n+\trxq->rx_started = rxq->rx_deferred_start ? false : true;\n+\trxq->vnic = BNXT_GET_DEFAULT_VNIC(bp);\n \n \t/* Configure mtu if it is different from what was configured before */\n \tif (!queue_idx)\ndiff --git a/drivers/net/bnxt/bnxt_txq.c b/drivers/net/bnxt/bnxt_txq.c\nindex bc789224d2..830416af3d 100644\n--- a/drivers/net/bnxt/bnxt_txq.c\n+++ b/drivers/net/bnxt/bnxt_txq.c\n@@ -8,6 +8,7 @@\n #include <rte_malloc.h>\n \n #include \"bnxt.h\"\n+#include \"bnxt_hwrm.h\"\n #include \"bnxt_ring.h\"\n #include \"bnxt_txq.h\"\n #include \"bnxt_txr.h\"\n@@ -61,6 +62,7 @@ void bnxt_tx_queue_release_op(void *tx_queue)\n \t\t\treturn;\n \n \t\t/* Free TX ring hardware descriptors */\n+\t\tbnxt_free_hwrm_tx_ring(txq->bp, txq->queue_id);\n \t\tbnxt_tx_queue_release_mbufs(txq);\n \t\tif (txq->tx_ring) {\n \t\t\tbnxt_free_ring(txq->tx_ring->tx_ring_struct);\ndiff --git a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c\nindex 8eb9493997..9a6b96e04a 100644\n--- a/drivers/net/bnxt/bnxt_txr.c\n+++ b/drivers/net/bnxt/bnxt_txr.c\n@@ -9,6 +9,7 @@\n #include <rte_malloc.h>\n \n #include \"bnxt.h\"\n+#include \"bnxt_hwrm.h\"\n #include \"bnxt_ring.h\"\n #include \"bnxt_txq.h\"\n #include \"bnxt_txr.h\"\n@@ -547,6 +548,11 @@ int bnxt_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id)\n \tif (rc)\n \t\treturn rc;\n \n+\tbnxt_free_hwrm_tx_ring(bp, tx_queue_id);\n+\trc = bnxt_alloc_hwrm_tx_ring(bp, tx_queue_id);\n+\tif (rc)\n+\t\treturn rc;\n+\n \tdev->data->tx_queue_state[tx_queue_id] = RTE_ETH_QUEUE_STATE_STARTED;\n \ttxq->tx_started = true;\n \tPMD_DRV_LOG(DEBUG, \"Tx queue started\\n\");\n",
    "prefixes": [
        "1/2"
    ]
}