get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 136078,
    "url": "http://patchwork.dpdk.org/api/patches/136078/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20240124000426.418527-3-joshwash@google.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": "<20240124000426.418527-3-joshwash@google.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20240124000426.418527-3-joshwash@google.com",
    "date": "2024-01-24T00:04:20",
    "name": "[v3,2/7] net/gve: RSS adminq command changes",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "609ef09600c80f7e72c530906d177f7275a55ebf",
    "submitter": {
        "id": 2921,
        "url": "http://patchwork.dpdk.org/api/people/2921/?format=api",
        "name": "Joshua Washington",
        "email": "joshwash@google.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patchwork.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20240124000426.418527-3-joshwash@google.com/mbox/",
    "series": [
        {
            "id": 30888,
            "url": "http://patchwork.dpdk.org/api/series/30888/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=30888",
            "date": "2024-01-24T00:04:19",
            "name": "[v3,1/7] net/gve: fully expose RSS offload support in dev_info",
            "version": 3,
            "mbox": "http://patchwork.dpdk.org/series/30888/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/136078/comments/",
    "check": "warning",
    "checks": "http://patchwork.dpdk.org/api/patches/136078/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 833BC439AD;\n\tWed, 24 Jan 2024 01:04:53 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 4A6EC40DFB;\n\tWed, 24 Jan 2024 01:04:42 +0100 (CET)",
            "from mail-yb1-f202.google.com (mail-yb1-f202.google.com\n [209.85.219.202])\n by mails.dpdk.org (Postfix) with ESMTP id D888740A71\n for <dev@dpdk.org>; Wed, 24 Jan 2024 01:04:40 +0100 (CET)",
            "by mail-yb1-f202.google.com with SMTP id\n 3f1490d57ef6-dc2284779caso5609828276.0\n for <dev@dpdk.org>; Tue, 23 Jan 2024 16:04:40 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=google.com; s=20230601; t=1706054680; x=1706659480; darn=dpdk.org;\n h=cc:to:from:subject:message-id:references:mime-version:in-reply-to\n :date:from:to:cc:subject:date:message-id:reply-to;\n bh=knbBxSwYRSibgn8t8+PICTr5dzF8jP0hxUy1d91WOQU=;\n b=rGau86Hy+6BFkD3hyMn0AxWfzKqVitYbRT4NyKR9UNgshF0jFcw0SpYwYIRbLHQbK6\n dpiKwdB0ImULCyaaSmkbNTBV0bZl5gGqTMfMjVwqycSY+bd37uV/XEwwB2rLQXfGOA7k\n MJpDFPIJhsbkd15xahkOFffp1iY8MpmZoeLr814ZNU/YStT0ggT8gp+K58J3ZOmjfkL3\n /z0p/TBp7TNLX2BplqZxaQDb5k66SMu4DtOuoah53P6SfBGXUoK2kDk3iohUaoq2rbW3\n MpAMc23hFd1nCWMxqQuzYyREJ6FDM1TIntOwf0NzOvzaVwE+223VfFYIjqKLN/NMMVMz\n s5DA==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1706054680; x=1706659480;\n h=cc:to:from:subject:message-id:references:mime-version:in-reply-to\n :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n bh=knbBxSwYRSibgn8t8+PICTr5dzF8jP0hxUy1d91WOQU=;\n b=NM9dyUY5C/SRyYOIb2sJeXMhG+hSC8kht29Mkdx/T6wcUiIVCwPsUMa7FkCvvEgo6v\n STg+iIbFQzI2vKx9iRBixNBRFd9P4GNSSR8rscRvyYTiZARgjBF3GToW/LGK51eubdUQ\n lgVD9oHhS6sGmS4G10FIAprNaMM2ofBdRxP87FI9pmvDQu0znHkXedw54yG1aINY16nD\n VVtss1whONRIIbuPkVjF75eKppWMWu//+nXsr0DjsWkBWQw/y2WUQPRJyt425PFPR9OZ\n Tmndd+2eiYpvLsDOkKgyM0p29b+snK1ZqVCA2QzUqYCijkEN9PyfrzVqeeO1L5xpQRb2\n klyQ==",
        "X-Gm-Message-State": "AOJu0YwGG8WtlYGTr3EqpDtRBQTRASofT4ttRAuJNiPCM82CmL4JXm54\n iot8L5FcEQURITqIxcsMada2jyXG0AqPV9ze5BOE3G1hGbXXXBghzEsUKFfb8snvQpEfolOnYjm\n ZaHxo7x69Yg==",
        "X-Google-Smtp-Source": "\n AGHT+IGeiqD1yyv+7YdSE4iwzXdERnPxChny2LkZ3/947YZlgTZAIfs5E/VFdic9kddzyBplwVjNGvMUzOV8ig==",
        "X-Received": "from joshwash.sea.corp.google.com\n ([2620:15c:11c:202:b9a2:fa74:abc3:bc47])\n (user=joshwash job=sendgmr) by 2002:a25:aa02:0:b0:dc2:4ead:4395 with SMTP id\n s2-20020a25aa02000000b00dc24ead4395mr301ybi.2.1706054680179; Tue, 23 Jan 2024\n 16:04:40 -0800 (PST)",
        "Date": "Tue, 23 Jan 2024 16:04:20 -0800",
        "In-Reply-To": "<20240124000426.418527-1-joshwash@google.com>",
        "Mime-Version": "1.0",
        "References": "<20240123175831.3219292-1-joshwash@google.com>\n <20240124000426.418527-1-joshwash@google.com>",
        "X-Mailer": "git-send-email 2.43.0.429.g432eaa2c6b-goog",
        "Message-ID": "<20240124000426.418527-3-joshwash@google.com>",
        "Subject": "[PATCH v3 2/7] net/gve: RSS adminq command changes",
        "From": "Joshua Washington <joshwash@google.com>",
        "To": "Junfeng Guo <junfeng.guo@intel.com>,\n Jeroen de Borst <jeroendb@google.com>,\n Rushil Gupta <rushilg@google.com>, Joshua Washington <joshwash@google.com>",
        "Cc": "dev@dpdk.org, Ferruh Yigit <ferruh.yigit@amd.com>",
        "Content-Type": "text/plain; charset=\"UTF-8\"",
        "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": "This change introduces admin queue changes that enable the configuration\nof RSS parameters for the GVE driver.\n\nSigned-off-by: Joshua Washington <joshwash@google.com>\nReviewed-by: Rushil Gupta <rushilg@google.com>\nReviewed-by: Jeroen de Borst <jeroendb@google.com>\n---\n drivers/net/gve/base/gve.h        | 15 ++++++++\n drivers/net/gve/base/gve_adminq.c | 58 +++++++++++++++++++++++++++++++\n drivers/net/gve/base/gve_adminq.h | 29 ++++++++++++++++\n drivers/net/gve/gve_ethdev.h      |  6 +++-\n 4 files changed, 107 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/net/gve/base/gve.h b/drivers/net/gve/base/gve.h\nindex f7b297e759..9c58fc4238 100644\n--- a/drivers/net/gve/base/gve.h\n+++ b/drivers/net/gve/base/gve.h\n@@ -51,4 +51,19 @@ enum gve_state_flags_bit {\n \tGVE_PRIV_FLAGS_NAPI_ENABLED\t\t= 4,\n };\n \n+enum gve_rss_hash_algorithm {\n+\tGVE_RSS_HASH_UNDEFINED = 0,\n+\tGVE_RSS_HASH_TOEPLITZ = 1,\n+};\n+\n+struct gve_rss_config {\n+\tuint16_t hash_types;\n+\tenum gve_rss_hash_algorithm alg;\n+\tuint16_t key_size;\n+\tuint16_t indir_size;\n+\tuint8_t *key;\n+\tuint32_t *indir;\n+};\n+\n+\n #endif /* _GVE_H_ */\ndiff --git a/drivers/net/gve/base/gve_adminq.c b/drivers/net/gve/base/gve_adminq.c\nindex 343bd13d67..fede0a4b82 100644\n--- a/drivers/net/gve/base/gve_adminq.c\n+++ b/drivers/net/gve/base/gve_adminq.c\n@@ -389,6 +389,9 @@ static int gve_adminq_issue_cmd(struct gve_priv *priv,\n \tcase GVE_ADMINQ_DECONFIGURE_DEVICE_RESOURCES:\n \t\tpriv->adminq_dcfg_device_resources_cnt++;\n \t\tbreak;\n+\tcase GVE_ADMINQ_CONFIGURE_RSS:\n+\t\tpriv->adminq_cfg_rss_cnt++;\n+\t\tbreak;\n \tcase GVE_ADMINQ_SET_DRIVER_PARAMETER:\n \t\tpriv->adminq_set_driver_parameter_cnt++;\n \t\tbreak;\n@@ -938,3 +941,58 @@ int gve_adminq_get_ptype_map_dqo(struct gve_priv *priv,\n \tgve_free_dma_mem(&ptype_map_dma_mem);\n \treturn err;\n }\n+\n+int gve_adminq_configure_rss(struct gve_priv *priv,\n+\t\t\t     struct gve_rss_config *rss_config)\n+{\n+\tstruct gve_dma_mem indirection_table_dma_mem;\n+\tstruct gve_dma_mem rss_key_dma_mem;\n+\tunion gve_adminq_command cmd;\n+\t__be32 *indir = NULL;\n+\tu8 *key = NULL;\n+\tint err = 0;\n+\tint i;\n+\n+\tif (!rss_config->indir_size || !rss_config->key_size)\n+\t\treturn -EINVAL;\n+\n+\tindir = gve_alloc_dma_mem(&indirection_table_dma_mem,\n+\t\t\t\t  rss_config->indir_size *\n+\t\t\t\t\tsizeof(*rss_config->indir));\n+\tif (!indir) {\n+\t\terr = -ENOMEM;\n+\t\tgoto out;\n+\t}\n+\tfor (i = 0; i < rss_config->indir_size; i++)\n+\t\t\tindir[i] = cpu_to_be32(rss_config->indir[i]);\n+\n+\tkey = gve_alloc_dma_mem(&rss_key_dma_mem,\n+\t\t\t\trss_config->key_size *\n+\t\t\t\t\tsizeof(*rss_config->key));\n+\tif (!key) {\n+\t\terr = -ENOMEM;\n+\t\tgoto out;\n+\t}\n+\tmemcpy(key, rss_config->key, rss_config->key_size);\n+\n+\tmemset(&cmd, 0, sizeof(cmd));\n+\tcmd.opcode = cpu_to_be32(GVE_ADMINQ_CONFIGURE_RSS);\n+\tcmd.configure_rss = (struct gve_adminq_configure_rss) {\n+\t\t.hash_types = cpu_to_be16(rss_config->hash_types),\n+\t\t.halg = rss_config->alg,\n+\t\t.hkey_len = cpu_to_be16(rss_config->key_size),\n+\t\t.indir_len = cpu_to_be16(rss_config->indir_size),\n+\t\t.hkey_addr = cpu_to_be64(rss_key_dma_mem.pa),\n+\t\t.indir_addr = cpu_to_be64(indirection_table_dma_mem.pa),\n+\t};\n+\n+\terr = gve_adminq_execute_cmd(priv, &cmd);\n+\n+out:\n+\tif (indir)\n+\t\tgve_free_dma_mem(&indirection_table_dma_mem);\n+\tif (key)\n+\t\tgve_free_dma_mem(&rss_key_dma_mem);\n+\treturn err;\n+}\n+\ndiff --git a/drivers/net/gve/base/gve_adminq.h b/drivers/net/gve/base/gve_adminq.h\nindex f05362f85f..95f4960561 100644\n--- a/drivers/net/gve/base/gve_adminq.h\n+++ b/drivers/net/gve/base/gve_adminq.h\n@@ -19,6 +19,7 @@ enum gve_adminq_opcodes {\n \tGVE_ADMINQ_DESTROY_TX_QUEUE\t\t= 0x7,\n \tGVE_ADMINQ_DESTROY_RX_QUEUE\t\t= 0x8,\n \tGVE_ADMINQ_DECONFIGURE_DEVICE_RESOURCES\t= 0x9,\n+\tGVE_ADMINQ_CONFIGURE_RSS\t\t= 0xA,\n \tGVE_ADMINQ_SET_DRIVER_PARAMETER\t\t= 0xB,\n \tGVE_ADMINQ_REPORT_STATS\t\t\t= 0xC,\n \tGVE_ADMINQ_REPORT_LINK_SPEED\t\t= 0xD,\n@@ -377,6 +378,27 @@ struct gve_adminq_get_ptype_map {\n \t__be64 ptype_map_addr;\n };\n \n+#define GVE_RSS_HASH_IPV4\t\tBIT(0)\n+#define GVE_RSS_HASH_TCPV4\t\tBIT(1)\n+#define GVE_RSS_HASH_IPV6\t\tBIT(2)\n+#define GVE_RSS_HASH_IPV6_EX\t\tBIT(3)\n+#define GVE_RSS_HASH_TCPV6\t\tBIT(4)\n+#define GVE_RSS_HASH_TCPV6_EX\t\tBIT(5)\n+#define GVE_RSS_HASH_UDPV4\t\tBIT(6)\n+#define GVE_RSS_HASH_UDPV6\t\tBIT(7)\n+#define GVE_RSS_HASH_UDPV6_EX\t\tBIT(8)\n+\n+/* RSS configuration command */\n+struct gve_adminq_configure_rss {\n+\t__be16 hash_types;\n+\tu8 halg; /* hash algorithm */\n+\tu8 reserved;\n+\t__be16 hkey_len;\n+\t__be16 indir_len;\n+\t__be64 hkey_addr;\n+\t__be64 indir_addr;\n+};\n+\n union gve_adminq_command {\n \tstruct {\n \t\t__be32 opcode;\n@@ -391,6 +413,7 @@ union gve_adminq_command {\n \t\t\tstruct gve_adminq_describe_device describe_device;\n \t\t\tstruct gve_adminq_register_page_list reg_page_list;\n \t\t\tstruct gve_adminq_unregister_page_list unreg_page_list;\n+\t\t\tstruct gve_adminq_configure_rss configure_rss;\n \t\t\tstruct gve_adminq_set_driver_parameter set_driver_param;\n \t\t\tstruct gve_adminq_report_stats report_stats;\n \t\t\tstruct gve_adminq_report_link_speed report_link_speed;\n@@ -404,6 +427,8 @@ union gve_adminq_command {\n \n GVE_CHECK_UNION_LEN(64, gve_adminq_command);\n \n+struct gve_priv;\n+struct gve_queue_page_list;\n int gve_adminq_alloc(struct gve_priv *priv);\n void gve_adminq_free(struct gve_priv *priv);\n void gve_adminq_release(struct gve_priv *priv);\n@@ -433,4 +458,8 @@ int gve_adminq_get_ptype_map_dqo(struct gve_priv *priv,\n int gve_adminq_verify_driver_compatibility(struct gve_priv *priv,\n \t\t\t\t\t   u64 driver_info_len,\n \t\t\t\t\t   dma_addr_t driver_info_addr);\n+\n+int gve_adminq_configure_rss(struct gve_priv *priv,\n+\t\t\t     struct gve_rss_config *rss_config);\n+\n #endif /* _GVE_ADMINQ_H */\ndiff --git a/drivers/net/gve/gve_ethdev.h b/drivers/net/gve/gve_ethdev.h\nindex 14c72ec91a..f7635e829c 100644\n--- a/drivers/net/gve/gve_ethdev.h\n+++ b/drivers/net/gve/gve_ethdev.h\n@@ -39,7 +39,10 @@\n \tRTE_ETH_RSS_IPV6 |\t\t\\\n \tRTE_ETH_RSS_IPV6_EX |\t\t\\\n \tRTE_ETH_RSS_NONFRAG_IPV6_TCP |\t\\\n-\tRTE_ETH_RSS_IPV6_TCP_EX)\n+\tRTE_ETH_RSS_IPV6_TCP_EX |\t\\\n+\tRTE_ETH_RSS_NONFRAG_IPV4_UDP |\t\\\n+\tRTE_ETH_RSS_NONFRAG_IPV6_UDP |\t\\\n+\tRTE_ETH_RSS_IPV6_UDP_EX)\n \n /* A list of pages registered with the device during setup and used by a queue\n  * as buffers\n@@ -264,6 +267,7 @@ struct gve_priv {\n \tuint32_t adminq_destroy_tx_queue_cnt;\n \tuint32_t adminq_destroy_rx_queue_cnt;\n \tuint32_t adminq_dcfg_device_resources_cnt;\n+\tuint32_t adminq_cfg_rss_cnt;\n \tuint32_t adminq_set_driver_parameter_cnt;\n \tuint32_t adminq_report_stats_cnt;\n \tuint32_t adminq_report_link_speed_cnt;\n",
    "prefixes": [
        "v3",
        "2/7"
    ]
}