get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 53817,
    "url": "http://patches.dpdk.org/api/patches/53817/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20190529150234.15166-6-lance.richardson@broadcom.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20190529150234.15166-6-lance.richardson@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190529150234.15166-6-lance.richardson@broadcom.com",
    "date": "2019-05-29T15:02:31",
    "name": "[v4,5/8] net/bnxt: fix RSS RETA indirection table ops",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "3ba867259980743b7e5f38d73e1bb80aaa898da4",
    "submitter": {
        "id": 1323,
        "url": "http://patches.dpdk.org/api/people/1323/?format=api",
        "name": "Lance Richardson",
        "email": "lance.richardson@broadcom.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20190529150234.15166-6-lance.richardson@broadcom.com/mbox/",
    "series": [
        {
            "id": 4810,
            "url": "http://patches.dpdk.org/api/series/4810/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=4810",
            "date": "2019-05-29T15:02:26",
            "name": "bnxt patchset",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/4810/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/53817/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/53817/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 2AFE71B99F;\n\tWed, 29 May 2019 17:03:17 +0200 (CEST)",
            "from mail-pf1-f196.google.com (mail-pf1-f196.google.com\n\t[209.85.210.196]) by dpdk.org (Postfix) with ESMTP id 3B2971B994\n\tfor <dev@dpdk.org>; Wed, 29 May 2019 17:03:15 +0200 (CEST)",
            "by mail-pf1-f196.google.com with SMTP id s11so1798097pfm.12\n\tfor <dev@dpdk.org>; Wed, 29 May 2019 08:03:15 -0700 (PDT)",
            "from localhost.localdomain ([192.19.231.250])\n\tby smtp.gmail.com with ESMTPSA id\n\tq193sm21579361pfc.52.2019.05.29.08.03.11\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tWed, 29 May 2019 08:03:12 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com;\n\ts=google; \n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=rQHmhWGcAv1vrSqcwhy6YDjbI4Pu57VIKc5Al5dhQTI=;\n\tb=MAPBCNdKSSJHi7ex6O+sZ3O+anleUsPlBYsn2gX+OKpSZw0rYhPBiWS5GoEJ5ejh1L\n\tpWQIGLmIKc7Tu3mppD6jXTFeczmJJlyn4Gz24tDdaRaSsVmHrb94Oolt2ddZeW3Hhmf2\n\t30gokltY+r6DoORJfAf3t3gGz4mju3YnlDenM=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=rQHmhWGcAv1vrSqcwhy6YDjbI4Pu57VIKc5Al5dhQTI=;\n\tb=OonBwGNRqIQKt/x7BPT7xFN2y4JNAyODfHikrcEHGTf4v6wXD0ZD2kma+kTtpppBSU\n\tFyicIitmU2M8n8/2t6c36y+p+26+H9Z0ocIIFZ+cJevoRCnJ/3y7cM8KQcrGAajbgFSL\n\tuYCrdf4croGjFnEEqYF6s37wxqKBqs99skvbsIPbXVS4GuCNyyLv16jPtRhu9BpUpFZn\n\tQo95nQ+9AX0DDQ7IOyap9O3h5i55ml1T4uRDCuuIcXhlWtnOZg0w7aAu9MrlYmmtWSNH\n\tzgtv+VfVJY73ogXBOPwRNXIv4jZN7g0KcIsiX9sMxpWscYnlYmZvMg/48loW8gDcNR8m\n\t1MsQ==",
        "X-Gm-Message-State": "APjAAAV0VLFWCrfkcXuWMswnqL7PtWTW7dFilKqR4yVnER3yV+Hrfjz7\n\tTV5yUsO//5rukJjcAqdc5XYVEJvOrnJX3WLzTwshrkHbJot12VtumWbgi4KGafuRTug/AXp51Vq\n\t8i9stlxvt9tmhxVAD19Ia2Pt885bGORvnl6YGQjfM4TD7x/H4a5dKA+xm1raDEPn5",
        "X-Google-Smtp-Source": "APXvYqxMtFrQlEN0w+lsb0mUFIXbT+b+U7ZzsDGIxJszWakHykvo3YnMT2ScUOgksFc94DxfsVNdug==",
        "X-Received": "by 2002:a63:e80e:: with SMTP id\n\ts14mr31110350pgh.364.1559142193133; \n\tWed, 29 May 2019 08:03:13 -0700 (PDT)",
        "From": "Lance Richardson <lance.richardson@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "ajit.khaparde@broadcom.com, ferruh.yigit@intel.com,\n\tmaxime.coquelin@redhat.com,\n\tLance Richardson <lance.richardson@broadcom.com>, stable@dpdk.org",
        "Date": "Wed, 29 May 2019 11:02:31 -0400",
        "Message-Id": "<20190529150234.15166-6-lance.richardson@broadcom.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20190529150234.15166-1-lance.richardson@broadcom.com>",
        "References": "<20190521213953.25425-1-ajit.khaparde@broadcom.com>\n\t<20190529150234.15166-1-lance.richardson@broadcom.com>",
        "Subject": "[dpdk-dev] [PATCH v4 5/8] net/bnxt: fix RSS RETA indirection table\n\tops",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Ajit Khaparde <ajit.khaparde@broadcom.com>\n\nWe are trying to update the indirection table for all the VNICs.\nWe should update the table only for the default vnic0.\n\nFix the reta update function to only update table entries that are\nselected by the update mask. Translate queue number to firmware\ngroup ID when updating an entry.\n\nFix reta query op to only return table entries as identfied by the\nprovided mask. Translate firmware group IDs to queue numbers.\n\nRemoved extraneous code from bnxt_reta_query_op().\n\nFixes: d819382543f3 (\"net/bnxt: add RSS redirection table operations\")\nSigned-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\nSigned-off-by: Lance Richardson <lance.richardson@broadcom.com>\nReviewed-by: Rahul Gupta <rahul.gupta@broadcom.com>\nReviewed-by: Lance Richardson <lance.richardson@broadcom.com>\nReviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\nCc: stable@dpdk.org\n---\nv3:\n* Squashed three RSS RETA fix commits into one.\n\n drivers/net/bnxt/bnxt_ethdev.c | 92 +++++++++++++++++++++++++---------\n drivers/net/bnxt/bnxt_hwrm.c   |  1 +\n 2 files changed, 70 insertions(+), 23 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex bccba445a..30dff72a6 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -618,12 +618,6 @@ static void bnxt_print_link_info(struct rte_eth_dev *eth_dev)\n \t\t\teth_dev->data->port_id);\n }\n \n-static int bnxt_dev_lsc_intr_setup(struct rte_eth_dev *eth_dev)\n-{\n-\tbnxt_print_link_info(eth_dev);\n-\treturn 0;\n-}\n-\n /*\n  * Determine whether the current configuration requires support for scattered\n  * receive; return 1 if scattered receive is required and 0 if not.\n@@ -977,30 +971,72 @@ static void bnxt_allmulticast_disable_op(struct rte_eth_dev *eth_dev)\n \tbnxt_hwrm_cfa_l2_set_rx_mask(bp, vnic, 0, NULL);\n }\n \n+/* Return bnxt_rx_queue pointer corresponding to a given rxq. */\n+static struct bnxt_rx_queue *bnxt_qid_to_rxq(struct bnxt *bp, uint16_t qid)\n+{\n+\tif (qid >= bp->rx_nr_rings)\n+\t\treturn NULL;\n+\n+\treturn bp->eth_dev->data->rx_queues[qid];\n+}\n+\n+/* Return rxq corresponding to a given rss table ring/group ID. */\n+static uint16_t bnxt_rss_to_qid(struct bnxt *bp, uint16_t fwr)\n+{\n+\tunsigned int i;\n+\n+\tfor (i = 0; i < bp->rx_nr_rings; i++) {\n+\t\tif (bp->grp_info[i].fw_grp_id == fwr)\n+\t\t\treturn i;\n+\t}\n+\n+\treturn INVALID_HW_RING_ID;\n+}\n+\n static int bnxt_reta_update_op(struct rte_eth_dev *eth_dev,\n \t\t\t    struct rte_eth_rss_reta_entry64 *reta_conf,\n \t\t\t    uint16_t reta_size)\n {\n \tstruct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;\n \tstruct rte_eth_conf *dev_conf = &bp->eth_dev->data->dev_conf;\n-\tstruct bnxt_vnic_info *vnic;\n+\tstruct bnxt_vnic_info *vnic = &bp->vnic_info[0];\n+\tuint16_t tbl_size = HW_HASH_INDEX_SIZE;\n+\tuint16_t idx, sft;\n \tint i;\n \n+\tif (!vnic->rss_table)\n+\t\treturn -EINVAL;\n+\n \tif (!(dev_conf->rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG))\n \t\treturn -EINVAL;\n \n-\tif (reta_size != HW_HASH_INDEX_SIZE) {\n+\tif (reta_size != tbl_size) {\n \t\tPMD_DRV_LOG(ERR, \"The configured hash table lookup size \"\n \t\t\t\"(%d) must equal the size supported by the hardware \"\n-\t\t\t\"(%d)\\n\", reta_size, HW_HASH_INDEX_SIZE);\n+\t\t\t\"(%d)\\n\", reta_size, tbl_size);\n \t\treturn -EINVAL;\n \t}\n-\t/* Update the RSS VNIC(s) */\n-\tfor (i = 0; i < bp->max_vnics; i++) {\n-\t\tvnic = &bp->vnic_info[i];\n-\t\tmemcpy(vnic->rss_table, reta_conf, reta_size);\n-\t\tbnxt_hwrm_vnic_rss_cfg(bp, vnic);\n+\n+\tfor (i = 0; i < reta_size; i++) {\n+\t\tstruct bnxt_rx_queue *rxq;\n+\n+\t\tidx = i / RTE_RETA_GROUP_SIZE;\n+\t\tsft = i % RTE_RETA_GROUP_SIZE;\n+\n+\t\tif (!(reta_conf[idx].mask & (1ULL << sft)))\n+\t\t\tcontinue;\n+\n+\t\trxq = bnxt_qid_to_rxq(bp, reta_conf[idx].reta[sft]);\n+\t\tif (!rxq) {\n+\t\t\tPMD_DRV_LOG(ERR, \"Invalid ring in reta_conf.\\n\");\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\n+\t\tvnic->rss_table[i] =\n+\t\t    vnic->fw_grp_ids[reta_conf[idx].reta[sft]];\n \t}\n+\n+\tbnxt_hwrm_vnic_rss_cfg(bp, vnic);\n \treturn 0;\n }\n \n@@ -1010,8 +1046,8 @@ static int bnxt_reta_query_op(struct rte_eth_dev *eth_dev,\n {\n \tstruct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;\n \tstruct bnxt_vnic_info *vnic = &bp->vnic_info[0];\n-\tstruct rte_intr_handle *intr_handle\n-\t\t= &bp->pdev->intr_handle;\n+\tuint16_t tbl_size = HW_HASH_INDEX_SIZE;\n+\tuint16_t idx, sft, i;\n \n \t/* Retrieve from the default VNIC */\n \tif (!vnic)\n@@ -1019,18 +1055,28 @@ static int bnxt_reta_query_op(struct rte_eth_dev *eth_dev,\n \tif (!vnic->rss_table)\n \t\treturn -EINVAL;\n \n-\tif (reta_size != HW_HASH_INDEX_SIZE) {\n+\tif (reta_size != tbl_size) {\n \t\tPMD_DRV_LOG(ERR, \"The configured hash table lookup size \"\n \t\t\t\"(%d) must equal the size supported by the hardware \"\n-\t\t\t\"(%d)\\n\", reta_size, HW_HASH_INDEX_SIZE);\n+\t\t\t\"(%d)\\n\", reta_size, tbl_size);\n \t\treturn -EINVAL;\n \t}\n-\t/* EW - need to revisit here copying from uint64_t to uint16_t */\n-\tmemcpy(reta_conf, vnic->rss_table, reta_size);\n \n-\tif (rte_intr_allow_others(intr_handle)) {\n-\t\tif (eth_dev->data->dev_conf.intr_conf.lsc != 0)\n-\t\t\tbnxt_dev_lsc_intr_setup(eth_dev);\n+\tfor (idx = 0, i = 0; i < reta_size; i++) {\n+\t\tidx = i / RTE_RETA_GROUP_SIZE;\n+\t\tsft = i % RTE_RETA_GROUP_SIZE;\n+\n+\t\tif (reta_conf[idx].mask & (1ULL << sft)) {\n+\t\t\tuint16_t qid;\n+\n+\t\t\tqid = bnxt_rss_to_qid(bp, vnic->rss_table[i]);\n+\n+\t\t\tif (qid == INVALID_HW_RING_ID) {\n+\t\t\t\tPMD_DRV_LOG(ERR, \"Inv. entry in rss table.\\n\");\n+\t\t\t\treturn -EINVAL;\n+\t\t\t}\n+\t\t\treta_conf[idx].reta[sft] = qid;\n+\t\t}\n \t}\n \n \treturn 0;\ndiff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c\nindex 4f0142cdb..20b45c23a 100644\n--- a/drivers/net/bnxt/bnxt_hwrm.c\n+++ b/drivers/net/bnxt/bnxt_hwrm.c\n@@ -1607,6 +1607,7 @@ int bnxt_hwrm_vnic_rss_cfg(struct bnxt *bp,\n \treq.hash_key_tbl_addr =\n \t    rte_cpu_to_le_64(vnic->rss_hash_key_dma_addr);\n \treq.rss_ctx_idx = rte_cpu_to_le_16(vnic->rss_rule);\n+\treq.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);\n \n \trc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB);\n \n",
    "prefixes": [
        "v4",
        "5/8"
    ]
}