get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 67970,
    "url": "https://patches.dpdk.org/api/patches/67970/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20200408082921.31000-5-mk@semihalf.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": "<20200408082921.31000-5-mk@semihalf.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200408082921.31000-5-mk@semihalf.com",
    "date": "2020-04-08T08:28:55",
    "name": "[v3,04/30] net/ena/base: generate default, random RSS hash key",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "3f122b18d638890f6e083d0c661c251f613b9430",
    "submitter": {
        "id": 786,
        "url": "https://patches.dpdk.org/api/people/786/?format=api",
        "name": "Michal Krawczyk",
        "email": "mk@semihalf.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20200408082921.31000-5-mk@semihalf.com/mbox/",
    "series": [
        {
            "id": 9246,
            "url": "https://patches.dpdk.org/api/series/9246/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=9246",
            "date": "2020-04-08T08:28:51",
            "name": "Update ENA driver to v2.1.0",
            "version": 3,
            "mbox": "https://patches.dpdk.org/series/9246/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/67970/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/67970/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 47653A0597;\n\tWed,  8 Apr 2020 10:30:10 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 1D5F81C0BD;\n\tWed,  8 Apr 2020 10:29:34 +0200 (CEST)",
            "from mail-lj1-f170.google.com (mail-lj1-f170.google.com\n [209.85.208.170]) by dpdk.org (Postfix) with ESMTP id 10C0A1C036\n for <dev@dpdk.org>; Wed,  8 Apr 2020 10:29:30 +0200 (CEST)",
            "by mail-lj1-f170.google.com with SMTP id i20so6671140ljn.6\n for <dev@dpdk.org>; Wed, 08 Apr 2020 01:29:30 -0700 (PDT)",
            "from mkPC.semihalf.local (193-106-246-138.noc.fibertech.net.pl.\n [193.106.246.138])\n by smtp.gmail.com with ESMTPSA id e8sm765685lja.3.2020.04.08.01.29.28\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 08 Apr 2020 01:29:28 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=semihalf-com.20150623.gappssmtp.com; s=20150623;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=FhstbftP5iiuTMS+y/5nJUbwYiOGeJe8wEwMlCsKBfw=;\n b=Ngml7nmpx1rSysZIgtLIqlEMsdvA4jAGMTvvRL/F7z50/b4ZDwEF1/Vvmy2S4oMRp8\n c6fL2IqpY0V/45n5tpWKNqmnOt3cDoeBBdsDYTURpkPhiiWfFTJ1T/XG49hBm9jzr51j\n DQvOv2UVPbWYJPIVABy7sSwY5Wf/IFljOW109aw8MmKNWEDhzHcDfDF+qy7LieXO1oDt\n 5aO/gf7I6kbWxXK26nY4dnu7Lx78aLsyYBG6566wV/ZpgMMQ/Lde0YR+JUuQXz43C+lf\n 4iV9nKL+2/cjqxmgo9/Sx1DjDZTxlkGjo2YeiI4j4hMiUB4mjyI62ciTO94GqRckKZVP\n v6ww==",
        "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:cc:subject:date:message-id:in-reply-to\n :references:mime-version:content-transfer-encoding;\n bh=FhstbftP5iiuTMS+y/5nJUbwYiOGeJe8wEwMlCsKBfw=;\n b=lECppHom78v2vgDmRvC21AeCCYqe5OTR9cewDiLAme1IU9PHwu/1508nBc6bvFKf6C\n /O2MZK5Nahu7qRPpxO7CaKd68dbFvGmpRvyDwEa8bGRpTvuV7FcVYKFz0Mqo44WAYE12\n oWIzlCQPjMascTFOLFEwAkUG1/oKebBbTOUfqeOxWwSEMcsQ8T4rJYjUxe7A5RZl/J63\n Pi73YxUEEBnt1xLy/bts+JYXdcuCaBDhtXNaZTWTQotSCQ80jkGvOJHoxu2irqJR5GbB\n UBDcDVXaH8KtK2F9yL4lAMWQRAXhOe7hSaUJ6+TFMk2P1077mb2progmPExtDnseT50u\n JCbA==",
        "X-Gm-Message-State": "AGi0PuZ5YvxuvAROUxIpA9ot4ZWOrFOAGydI4qC2InxLgZA6LRO3nlsF\n nBG7GtiGWGo+GOjevODLXVNu1HUhJKg=",
        "X-Google-Smtp-Source": "\n APiQypKCFGxtvIuQl19Un0qtw5IvKfuu0tytVXDhzmxKcOU+/LnzBAaB6TEF3w3VtrdzMAP4XoAmKg==",
        "X-Received": "by 2002:a2e:3812:: with SMTP id f18mr536511lja.67.1586334569367;\n Wed, 08 Apr 2020 01:29:29 -0700 (PDT)",
        "From": "Michal Krawczyk <mk@semihalf.com>",
        "To": "dev@dpdk.org",
        "Cc": "mw@semihalf.com, mba@semihalf.com, gtzalik@amazon.com, evgenys@amazon.com,\n igorch@amazon.com, ferruh.yigit@intel.com, arybchenko@solarflare.com,\n Michal Krawczyk <mk@semihalf.com>",
        "Date": "Wed,  8 Apr 2020 10:28:55 +0200",
        "Message-Id": "<20200408082921.31000-5-mk@semihalf.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "In-Reply-To": "<20200408082921.31000-1-mk@semihalf.com>",
        "References": "<20200408082921.31000-1-mk@semihalf.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v3 04/30] net/ena/base: generate default,\n\trandom RSS hash key",
        "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 <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": "Although the RSS key still cannot be set, it is now being generated\nevery time the driver is being initialized.\n\nMultiple devices can still have the same key if they're used by the same\ndriver.\n\nSigned-off-by: Michal Krawczyk <mk@semihalf.com>\nReviewed-by: Igor Chauskin <igorch@amazon.com>\nReviewed-by: Guy Tzalik <gtzalik@amazon.com>\n---\nv2:\n  * Remove variable declaration inside the for loop\n  * Remove unlikely in condition check\n\nv3:\n  * Fixed commit logs\n  * Move unrealated changes to the separate patches\n  * Update the copyright date in the modified files\n\n drivers/net/ena/base/ena_com.c       | 34 ++++++++++++++++++++--------\n drivers/net/ena/base/ena_com.h       |  3 ++-\n drivers/net/ena/base/ena_plat_dpdk.h |  4 ++++\n drivers/net/ena/ena_ethdev.c         | 17 ++++++++++++++\n 4 files changed, 48 insertions(+), 10 deletions(-)",
    "diff": "diff --git a/drivers/net/ena/base/ena_com.c b/drivers/net/ena/base/ena_com.c\nindex 17b51b5a11..38a474b1bd 100644\n--- a/drivers/net/ena/base/ena_com.c\n+++ b/drivers/net/ena/base/ena_com.c\n@@ -1,5 +1,5 @@\n /* SPDX-License-Identifier: BSD-3-Clause\n- * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates.\n+ * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates.\n  * All rights reserved.\n  */\n \n@@ -1032,6 +1032,19 @@ static int ena_com_get_feature(struct ena_com_dev *ena_dev,\n \t\t\t\t      feature_ver);\n }\n \n+static void ena_com_hash_key_fill_default_key(struct ena_com_dev *ena_dev)\n+{\n+\tstruct ena_admin_feature_rss_flow_hash_control *hash_key =\n+\t\t(ena_dev->rss).hash_key;\n+\n+\tENA_RSS_FILL_KEY(&hash_key->key, sizeof(hash_key->key));\n+\t/* The key is stored in the device in uint32_t array\n+\t * as well as the API requires the key to be passed in this\n+\t * format. Thus the size of our array should be divided by 4\n+\t */\n+\thash_key->keys_num = sizeof(hash_key->key) / sizeof(uint32_t);\n+}\n+\n static int ena_com_hash_key_allocate(struct ena_com_dev *ena_dev)\n {\n \tstruct ena_rss *rss = &ena_dev->rss;\n@@ -2405,15 +2418,16 @@ int ena_com_fill_hash_function(struct ena_com_dev *ena_dev,\n \n \tswitch (func) {\n \tcase ENA_ADMIN_TOEPLITZ:\n-\t\tif (key_len > sizeof(hash_key->key)) {\n-\t\t\tena_trc_err(\"key len (%hu) is bigger than the max supported (%zu)\\n\",\n-\t\t\t\t    key_len, sizeof(hash_key->key));\n-\t\t\treturn ENA_COM_INVAL;\n+\t\tif (key) {\n+\t\t\tif (key_len != sizeof(hash_key->key)) {\n+\t\t\t\tena_trc_err(\"key len (%hu) doesn't equal the supported size (%zu)\\n\",\n+\t\t\t\t\t     key_len, sizeof(hash_key->key));\n+\t\t\t\treturn ENA_COM_INVAL;\n+\t\t\t}\n+\t\t\tmemcpy(hash_key->key, key, key_len);\n+\t\t\trss->hash_init_val = init_val;\n+\t\t\thash_key->keys_num = key_len / sizeof(u32);\n \t\t}\n-\n-\t\tmemcpy(hash_key->key, key, key_len);\n-\t\trss->hash_init_val = init_val;\n-\t\thash_key->keys_num = key_len >> 2;\n \t\tbreak;\n \tcase ENA_ADMIN_CRC32:\n \t\trss->hash_init_val = init_val;\n@@ -2738,6 +2752,8 @@ int ena_com_rss_init(struct ena_com_dev *ena_dev, u16 indr_tbl_log_size)\n \tif (unlikely(rc))\n \t\tgoto err_hash_key;\n \n+\tena_com_hash_key_fill_default_key(ena_dev);\n+\n \trc = ena_com_hash_ctrl_init(ena_dev);\n \tif (unlikely(rc))\n \t\tgoto err_hash_ctrl;\ndiff --git a/drivers/net/ena/base/ena_com.h b/drivers/net/ena/base/ena_com.h\nindex f2ef26c91b..d58c802edf 100644\n--- a/drivers/net/ena/base/ena_com.h\n+++ b/drivers/net/ena/base/ena_com.h\n@@ -1,5 +1,5 @@\n /* SPDX-License-Identifier: BSD-3-Clause\n- * Copyright (c) 2015-2019 Amazon.com, Inc. or its affiliates.\n+ * Copyright (c) 2015-2020 Amazon.com, Inc. or its affiliates.\n  * All rights reserved.\n  */\n \n@@ -53,6 +53,7 @@\n #define ENA_INTR_DELAY_NEW_VALUE_WEIGHT\t\t\t4\n #define ENA_INTR_MODER_LEVEL_STRIDE\t\t\t1\n #define ENA_INTR_BYTE_COUNT_NOT_SUPPORTED\t\t0xFFFFFF\n+#define ENA_HASH_KEY_SIZE\t\t\t\t40\n \n #define ENA_HW_HINTS_NO_TIMEOUT\t\t\t\t0xFFFF\n \ndiff --git a/drivers/net/ena/base/ena_plat_dpdk.h b/drivers/net/ena/base/ena_plat_dpdk.h\nindex 4b8fe017dd..e9b33bc36c 100644\n--- a/drivers/net/ena/base/ena_plat_dpdk.h\n+++ b/drivers/net/ena/base/ena_plat_dpdk.h\n@@ -301,6 +301,10 @@ extern rte_atomic32_t ena_alloc_cnt;\n \n #define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))\n \n+void ena_rss_key_fill(void *key, size_t size);\n+\n+#define ENA_RSS_FILL_KEY(key, size) ena_rss_key_fill(key, size)\n+\n #include \"ena_includes.h\"\n \n #endif /* DPDK_ENA_COM_ENA_PLAT_DPDK_H_ */\ndiff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c\nindex e0ed28419c..f1202d99f2 100644\n--- a/drivers/net/ena/ena_ethdev.c\n+++ b/drivers/net/ena/ena_ethdev.c\n@@ -256,6 +256,23 @@ static const struct eth_dev_ops ena_dev_ops = {\n \t.reta_query           = ena_rss_reta_query,\n };\n \n+void ena_rss_key_fill(void *key, size_t size)\n+{\n+\tstatic bool key_generated;\n+\tstatic uint8_t default_key[ENA_HASH_KEY_SIZE];\n+\tsize_t i;\n+\n+\tRTE_ASSERT(size <= ENA_HASH_KEY_SIZE);\n+\n+\tif (!key_generated) {\n+\t\tfor (i = 0; i < ENA_HASH_KEY_SIZE; ++i)\n+\t\t\tdefault_key[i] = rte_rand() & 0xff;\n+\t\tkey_generated = true;\n+\t}\n+\n+\trte_memcpy(key, default_key, size);\n+}\n+\n static inline void ena_rx_mbuf_prepare(struct rte_mbuf *mbuf,\n \t\t\t\t       struct ena_com_rx_ctx *ena_rx_ctx)\n {\n",
    "prefixes": [
        "v3",
        "04/30"
    ]
}