get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 105603,
    "url": "http://patchwork.dpdk.org/api/patches/105603/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20220104083824.23001-5-kalesh-anakkur.purayil@broadcom.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20220104083824.23001-5-kalesh-anakkur.purayil@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220104083824.23001-5-kalesh-anakkur.purayil@broadcom.com",
    "date": "2022-01-04T08:38:10",
    "name": "[04/18] net/bnxt: restore RSS configuration after reset recovery",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "1c9f2278ee0f802daa99861192c6cca5ed12bea0",
    "submitter": {
        "id": 1479,
        "url": "http://patchwork.dpdk.org/api/people/1479/?format=api",
        "name": "Kalesh A P",
        "email": "kalesh-anakkur.purayil@broadcom.com"
    },
    "delegate": {
        "id": 1766,
        "url": "http://patchwork.dpdk.org/api/users/1766/?format=api",
        "username": "ajitkhaparde",
        "first_name": "Ajit",
        "last_name": "Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20220104083824.23001-5-kalesh-anakkur.purayil@broadcom.com/mbox/",
    "series": [
        {
            "id": 21060,
            "url": "http://patchwork.dpdk.org/api/series/21060/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=21060",
            "date": "2022-01-04T08:38:06",
            "name": "bnxt PMD fixes",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/21060/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/105603/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/105603/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 DEB46A00C5;\n\tTue,  4 Jan 2022 09:19:35 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 0BFC941156;\n\tTue,  4 Jan 2022 09:19:18 +0100 (CET)",
            "from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com\n [192.19.166.231])\n by mails.dpdk.org (Postfix) with ESMTP id C6A5341156\n for <dev@dpdk.org>; Tue,  4 Jan 2022 09:19:16 +0100 (CET)",
            "from dhcp-10-123-153-22.dhcp.broadcom.net\n (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22])\n by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 255D4C0000F1;\n Tue,  4 Jan 2022 00:19:14 -0800 (PST)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 255D4C0000F1",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n s=dkimrelay; t=1641284356;\n bh=Lc8i/u7wj8KIuE9bjEMu38Tt9/FVygmPy5BR/q2RlhU=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=rEHGo1AYsgcCGvUKlCLCYe7zjgFZWTmOgrDFaJbvwfzoMrqeVOBmhI32niA7h+HRV\n QUj2NZw1YSSHalrwdc0cUjsOioNzq6eyeSgp23QFmbNp4Ipb45e1NHUemzeAE0XoAz\n OGlRferHwxq+SX1Z8iIIRr+KR5couB2YgFPZntcM=",
        "From": "Kalesh A P <kalesh-anakkur.purayil@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "ferruh.yigit@intel.com,\n\tajit.khaparde@broadcom.com",
        "Subject": "[dpdk-dev] [PATCH 04/18] net/bnxt: restore RSS configuration after\n reset recovery",
        "Date": "Tue,  4 Jan 2022 14:08:10 +0530",
        "Message-Id": "<20220104083824.23001-5-kalesh-anakkur.purayil@broadcom.com>",
        "X-Mailer": "git-send-email 2.10.1",
        "In-Reply-To": "<20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com>",
        "References": "<20220104083824.23001-1-kalesh-anakkur.purayil@broadcom.com>",
        "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"
    },
    "content": "From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>\n\nDuring reset recovery, driver is not restoring the VNIC rss hash key.\nIt's generating a new random hash key which results in unexpected\nRSS behavior after recovery. Fixed this by storing the VNIC rss\nconfiguration to a local struct and then applying the cached value\nduring the recovery.\n\nFixes: df6cd7c1f73a (\"net/bnxt: handle reset notify async event from FW\")\nCc: stable@dpdk.org\n\nSigned-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>\nReviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\nReviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>\n---\n drivers/net/bnxt/bnxt.h        |  2 ++\n drivers/net/bnxt/bnxt_ethdev.c | 35 +++++++++++++++++++++++++++++++----\n drivers/net/bnxt/bnxt_rxq.c    |  2 +-\n drivers/net/bnxt/bnxt_vnic.c   |  9 +++++++--\n drivers/net/bnxt/bnxt_vnic.h   |  2 +-\n 5 files changed, 42 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h\nindex 521fcb7..614ea57 100644\n--- a/drivers/net/bnxt/bnxt.h\n+++ b/drivers/net/bnxt/bnxt.h\n@@ -896,6 +896,8 @@ struct bnxt {\n \tstruct rte_ether_addr\t*mcast_addr_list;\n \trte_iova_t\t\tmc_list_dma_addr;\n \tuint32_t\t\tnb_mc_addr;\n+\n+\tstruct rte_eth_rss_conf\trss_conf; /* RSS configuration. */\n };\n \n static\ndiff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex bac9600..dcf2839 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -368,7 +368,7 @@ static int bnxt_alloc_mem(struct bnxt *bp, bool reconfig)\n \tif (rc)\n \t\tgoto alloc_mem_err;\n \n-\trc = bnxt_alloc_vnic_attributes(bp);\n+\trc = bnxt_alloc_vnic_attributes(bp, reconfig);\n \tif (rc)\n \t\tgoto alloc_mem_err;\n \n@@ -1067,6 +1067,7 @@ static int bnxt_dev_configure_op(struct rte_eth_dev *eth_dev)\n {\n \tstruct bnxt *bp = eth_dev->data->dev_private;\n \tuint64_t rx_offloads = eth_dev->data->dev_conf.rxmode.offloads;\n+\tstruct rte_eth_rss_conf *rss_conf = &eth_dev->data->dev_conf.rx_adv_conf.rss_conf;\n \tint rc;\n \n \tbp->rx_queues = (void *)eth_dev->data->rx_queues;\n@@ -1141,6 +1142,17 @@ static int bnxt_dev_configure_op(struct rte_eth_dev *eth_dev)\n \t\trx_offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH;\n \teth_dev->data->dev_conf.rxmode.offloads = rx_offloads;\n \n+\t/* application provides the hash key to program */\n+\tif (rss_conf->rss_key != NULL) {\n+\t\tif (rss_conf->rss_key_len != HW_HASH_KEY_SIZE)\n+\t\t\tPMD_DRV_LOG(WARNING, \"port %u RSS key len must be %d bytes long\",\n+\t\t\t\t    eth_dev->data->port_id, HW_HASH_KEY_SIZE);\n+\t\telse\n+\t\t\tmemcpy(bp->rss_conf.rss_key, rss_conf->rss_key, HW_HASH_KEY_SIZE);\n+\t}\n+\tbp->rss_conf.rss_key_len = HW_HASH_KEY_SIZE;\n+\tbp->rss_conf.rss_hf = rss_conf->rss_hf;\n+\n \tbnxt_mtu_set_op(eth_dev, eth_dev->data->mtu);\n \n \treturn 0;\n@@ -2126,9 +2138,6 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev,\n \t}\n \n \tbp->flags |= BNXT_FLAG_UPDATE_HASH;\n-\tmemcpy(&eth_dev->data->dev_conf.rx_adv_conf.rss_conf,\n-\t       rss_conf,\n-\t       sizeof(*rss_conf));\n \n \t/* Update the default RSS VNIC(s) */\n \tvnic = BNXT_GET_DEFAULT_VNIC(bp);\n@@ -2137,6 +2146,9 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev,\n \t\tbnxt_rte_to_hwrm_hash_level(bp, rss_conf->rss_hf,\n \t\t\t\t\t    RTE_ETH_RSS_LEVEL(rss_conf->rss_hf));\n \n+\t/* Cache the hash function */\n+\tbp->rss_conf.rss_hf = rss_conf->rss_hf;\n+\n \t/*\n \t * If hashkey is not specified, use the previously configured\n \t * hashkey\n@@ -2152,6 +2164,9 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev,\n \t}\n \tmemcpy(vnic->rss_hash_key, rss_conf->rss_key, rss_conf->rss_key_len);\n \n+\t/* Cache the hash key */\n+\tmemcpy(bp->rss_conf.rss_key, rss_conf->rss_key, HW_HASH_KEY_SIZE);\n+\n rss_config:\n \trc = bnxt_hwrm_vnic_rss_cfg(bp, vnic);\n \treturn rc;\n@@ -5304,6 +5319,16 @@ static int bnxt_init_resources(struct bnxt *bp, bool reconfig_dev)\n \t\t}\n \t}\n \n+\tif (!reconfig_dev) {\n+\t\tbp->rss_conf.rss_key = rte_zmalloc(\"bnxt_rss_key\",\n+\t\t\t\t\t\t   HW_HASH_KEY_SIZE, 0);\n+\t\tif (bp->rss_conf.rss_key == NULL) {\n+\t\t\tPMD_DRV_LOG(ERR, \"port %u cannot allocate RSS hash key memory\",\n+\t\t\t\t    bp->eth_dev->data->port_id);\n+\t\t\treturn -ENOMEM;\n+\t\t}\n+\t}\n+\n \trc = bnxt_alloc_mem(bp, reconfig_dev);\n \tif (rc)\n \t\treturn rc;\n@@ -5950,6 +5975,8 @@ bnxt_uninit_resources(struct bnxt *bp, bool reconfig_dev)\n \t\tbnxt_free_error_recovery_info(bp);\n \t\trte_free(bp->mcast_addr_list);\n \t\tbp->mcast_addr_list = NULL;\n+\t\trte_free(bp->rss_conf.rss_key);\n+\t\tbp->rss_conf.rss_key = NULL;\n \t}\n \n \tbnxt_uninit_ctx_mem(bp);\ndiff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c\nindex c9d9903..9f1d1d4 100644\n--- a/drivers/net/bnxt/bnxt_rxq.c\n+++ b/drivers/net/bnxt/bnxt_rxq.c\n@@ -148,7 +148,7 @@ int bnxt_mq_rx_configure(struct bnxt *bp)\n \tbp->rx_num_qs_per_vnic = nb_q_per_grp;\n \n \tif (dev_conf->rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) {\n-\t\tstruct rte_eth_rss_conf *rss = &dev_conf->rx_adv_conf.rss_conf;\n+\t\tstruct rte_eth_rss_conf *rss = &bp->rss_conf;\n \n \t\tif (bp->flags & BNXT_FLAG_UPDATE_HASH)\n \t\t\tbp->flags &= ~BNXT_FLAG_UPDATE_HASH;\ndiff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c\nindex e05dc24..09d67ef 100644\n--- a/drivers/net/bnxt/bnxt_vnic.c\n+++ b/drivers/net/bnxt/bnxt_vnic.c\n@@ -114,7 +114,7 @@ void bnxt_free_vnic_attributes(struct bnxt *bp)\n \t}\n }\n \n-int bnxt_alloc_vnic_attributes(struct bnxt *bp)\n+int bnxt_alloc_vnic_attributes(struct bnxt *bp, bool reconfig)\n {\n \tstruct bnxt_vnic_info *vnic;\n \tstruct rte_pci_device *pdev = bp->pdev;\n@@ -168,7 +168,12 @@ int bnxt_alloc_vnic_attributes(struct bnxt *bp)\n \n \t\tvnic->rss_hash_key_dma_addr = vnic->rss_table_dma_addr +\n \t\t\t\t\t      rss_table_size;\n-\t\tbnxt_prandom_bytes(vnic->rss_hash_key, HW_HASH_KEY_SIZE);\n+\t\tif (!reconfig) {\n+\t\t\tbnxt_prandom_bytes(vnic->rss_hash_key, HW_HASH_KEY_SIZE);\n+\t\t\tmemcpy(bp->rss_conf.rss_key, vnic->rss_hash_key, HW_HASH_KEY_SIZE);\n+\t\t} else {\n+\t\t\tmemcpy(vnic->rss_hash_key, bp->rss_conf.rss_key, HW_HASH_KEY_SIZE);\n+\t\t}\n \t}\n \n \treturn 0;\ndiff --git a/drivers/net/bnxt/bnxt_vnic.h b/drivers/net/bnxt/bnxt_vnic.h\nindex af3a2dd..25481fc 100644\n--- a/drivers/net/bnxt/bnxt_vnic.h\n+++ b/drivers/net/bnxt/bnxt_vnic.h\n@@ -60,7 +60,7 @@ int bnxt_free_vnic(struct bnxt *bp, struct bnxt_vnic_info *vnic,\n struct bnxt_vnic_info *bnxt_alloc_vnic(struct bnxt *bp);\n void bnxt_free_all_vnics(struct bnxt *bp);\n void bnxt_free_vnic_attributes(struct bnxt *bp);\n-int bnxt_alloc_vnic_attributes(struct bnxt *bp);\n+int bnxt_alloc_vnic_attributes(struct bnxt *bp, bool reconfig);\n void bnxt_free_vnic_mem(struct bnxt *bp);\n int bnxt_alloc_vnic_mem(struct bnxt *bp);\n int bnxt_vnic_grp_alloc(struct bnxt *bp, struct bnxt_vnic_info *vnic);\n",
    "prefixes": [
        "04/18"
    ]
}