get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 111856,
    "url": "https://patches.dpdk.org/api/patches/111856/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20220525173736.3394787-1-ferruh.yigit@xilinx.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": "<20220525173736.3394787-1-ferruh.yigit@xilinx.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220525173736.3394787-1-ferruh.yigit@xilinx.com",
    "date": "2022-05-25T17:37:34",
    "name": "[1/3] app/testpmd: fix displaying RSS info",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "bd64ebd62366c46d1937dceab2a813c1870803d7",
    "submitter": {
        "id": 2640,
        "url": "https://patches.dpdk.org/api/people/2640/?format=api",
        "name": "Ferruh Yigit",
        "email": "ferruh.yigit@xilinx.com"
    },
    "delegate": {
        "id": 3961,
        "url": "https://patches.dpdk.org/api/users/3961/?format=api",
        "username": "arybchenko",
        "first_name": "Andrew",
        "last_name": "Rybchenko",
        "email": "andrew.rybchenko@oktetlabs.ru"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20220525173736.3394787-1-ferruh.yigit@xilinx.com/mbox/",
    "series": [
        {
            "id": 23163,
            "url": "https://patches.dpdk.org/api/series/23163/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=23163",
            "date": "2022-05-25T17:37:34",
            "name": "[1/3] app/testpmd: fix displaying RSS info",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/23163/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/111856/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/111856/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 13B5AA0555;\n\tWed, 25 May 2022 19:37:43 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id ADC2640143;\n\tWed, 25 May 2022 19:37:42 +0200 (CEST)",
            "from NAM02-SN1-obe.outbound.protection.outlook.com\n (mail-sn1anam02on2059.outbound.protection.outlook.com [40.107.96.59])\n by mails.dpdk.org (Postfix) with ESMTP id 19257400EF;\n Wed, 25 May 2022 19:37:41 +0200 (CEST)",
            "from DS7PR05CA0064.namprd05.prod.outlook.com (2603:10b6:8:57::26) by\n SN6PR02MB3935.namprd02.prod.outlook.com (2603:10b6:805:2b::16) with\n Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.5273.19; Wed, 25 May 2022 17:37:40 +0000",
            "from DM3NAM02FT021.eop-nam02.prod.protection.outlook.com\n (2603:10b6:8:57:cafe::a2) by DS7PR05CA0064.outlook.office365.com\n (2603:10b6:8:57::26) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.7 via Frontend\n Transport; Wed, 25 May 2022 17:37:40 +0000",
            "from xir-pvapexch02.xlnx.xilinx.com (149.199.80.198) by\n DM3NAM02FT021.mail.protection.outlook.com (10.13.4.249) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n 15.20.5293.13 via Frontend Transport; Wed, 25 May 2022 17:37:39 +0000",
            "from xir-pvapexch02.xlnx.xilinx.com (172.21.17.17) by\n xir-pvapexch02.xlnx.xilinx.com (172.21.17.17) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n 15.1.2176.14; Wed, 25 May 2022 18:37:38 +0100",
            "from smtp.xilinx.com (172.21.105.198) by\n xir-pvapexch02.xlnx.xilinx.com (172.21.17.17) with Microsoft SMTP Server id\n 15.1.2176.14 via Frontend Transport; Wed, 25 May 2022 18:37:38 +0100",
            "from [172.21.78.13] (port=42046 helo=xirdcglab01.xilinx.com)\n by smtp.xilinx.com with esmtp (Exim 4.90)\n (envelope-from <ferruh.yigit@xilinx.com>)\n id 1ntuwz-0006dh-H5; Wed, 25 May 2022 18:37:38 +0100"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=kvg8RUqbvpVMZTjs0IHAis7uRtD5bP9vH1mWkL1pT47nia4vl+nXIjYDVp1KD1m47Kkwy3OoN3z0jt06E4JP8xahZX3Ev/UCSjLWvSmf17sItmKhL6CH3S7ggUQAIX1nyapSOVnVODCiSirzdduCi7wZP7VSzHpNncaB4CZi5EY85QQ+xnJVaSh+JOKHZaZWTlX/m1KNyMWsoZ0Sc0ZW/NAXbXsfBiPsQdaa2ADSjIliMLTkmxGyqLk5Co4MRgkWWG9/L0wFqiEa/46a+X/PmnmQjigGnQ5xdbnup2AzZ9TNro4coDWgCbC5Z6xCS3qjUXdV9c+kxKcqAUxR0Xh98w==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=l0KlM/3ULZjt2thYFSNOBud7WDO+oATjVREv0I8xpGs=;\n b=EL38BCd0ZuoquhoUMPcbRo1IdSHhBsj3jVOHA3LZ1+ZYJDCOcM/93lkFw6QoZFOCzQ47eV4QZnPGBgybFVp9AV7E+rqFiO7OTAJIlhEdUZmmMQsVjtPHLMaHfANreZZqJ7R4hfEf5lbJ2c/PKXkqyh2nuEoPoOp61coSAwfbwRMAt1AbSeXJ25IDJUq+aGalTwCZj6oXKsVJEucnVSQKMa9CggeVPKjDAdZYDK/TWhFjOHxXV0hGI8idkg7tNjE7wuWx3M+Cd3X07270P5Clr21D5RMtz3ggeXTHuRDdQqMdyMebj97/El5xdJ40pJBuio+/+AcKMVLYpk2XEBhhhg==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 149.199.80.198) smtp.rcpttodomain=intel.com smtp.mailfrom=xilinx.com;\n dmarc=pass (p=none sp=none pct=100) action=none header.from=xilinx.com;\n dkim=none (message not signed); arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=xilinx.onmicrosoft.com; s=selector2-xilinx-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=l0KlM/3ULZjt2thYFSNOBud7WDO+oATjVREv0I8xpGs=;\n b=bQr1YFkdMN2lvpYvfZ5Tk9ahRLNrokHg//OYjCB0aWKhAsT7MWl2GGFSn6ZYJjXejAdHtXvtM+QG4gxOsahes97NyxAiVzPuCFUcZj/2DEgRdtlQ35O+ZwH20RzT6mY0WOXiOGqVSmFeC4md9R0U9RJ7jkS5Yee/EMK0rwDWwac=",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 149.199.80.198)\n smtp.mailfrom=xilinx.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=xilinx.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of xilinx.com designates\n 149.199.80.198 as permitted sender) receiver=protection.outlook.com;\n client-ip=149.199.80.198; helo=xir-pvapexch02.xlnx.xilinx.com; pr=C",
        "Envelope-to": "ferruh.yigit@xilinx.com, xiaoyun.li@intel.com,\n aman.deep.singh@intel.com, yuying.zhang@intel.com,\n helin.zhang@intel.com, jingjing.wu@intel.com,\n thomas.monjalon@6wind.com, dev@dpdk.org, thomas@monjalon.net,\n andrew.rybchenko@oktetlabs.ru, stable@dpdk.org",
        "From": "Ferruh Yigit <ferruh.yigit@xilinx.com>",
        "To": "Xiaoyun Li <xiaoyun.li@intel.com>, Aman Singh <aman.deep.singh@intel.com>,\n Yuying Zhang <yuying.zhang@intel.com>, Helin Zhang <helin.zhang@intel.com>,\n Jingjing Wu <jingjing.wu@intel.com>, Thomas Monjalon\n <thomas.monjalon@6wind.com>",
        "CC": "<dev@dpdk.org>, Thomas Monjalon <thomas@monjalon.net>, Ferruh Yigit\n <ferruh.yigit@xilinx.com>, Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,\n <stable@dpdk.org>",
        "Subject": "[PATCH 1/3] app/testpmd: fix displaying RSS info",
        "Date": "Wed, 25 May 2022 18:37:34 +0100",
        "Message-ID": "<20220525173736.3394787-1-ferruh.yigit@xilinx.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "72e93e60-4989-409a-c9c9-08da3e754412",
        "X-MS-TrafficTypeDiagnostic": "SN6PR02MB3935:EE_",
        "X-Microsoft-Antispam-PRVS": "\n <SN6PR02MB39353AB18CD0E68DD1F3D1B3D0D69@SN6PR02MB3935.namprd02.prod.outlook.com>",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n Q2cubCLRhVYxzYM2UvcW2YsbPavYE/HUcYLVAdOU+tnXuQ600qaRSaoe87LwlOLZi/TVc+ZZimwWRU3LZn6Q9Hv9RLM9hjUj7EIlu2xV6zp9u0hYyjIzkQAkbo1ayx8Bm0hUPzWinRxYP7KTnxRqjYIBb13RRZsTqblLO4d9h4eQe08DOtQzrg+3ppVbv6qXcga5L8CN+dkJWwesQ18+rL5RFH7gltl2iOw/WIEUfLWA9dlJTgKcnVCm0CMargv9Kk/XZYbfSQFSgreiduMvGQACozkdPjjaDmZLmKk6kT4GadtFTCTfBN+gNlOb2w4ldGKSyUy11jUHxbtD5xqWuEwGxuhHeUHNfwOcCUIGY2NJ2IUJcBa7Tdz+GjPYefr/PeCCV5GLpZvoqQMvn1cj408GX3RZxASZhaIkJKenzvk+ytxHmxbWk63jE3MJ77k0QGOYz2mSRm/P/cieLvc5PawPezXPzvoaeug8w6jqxXnOuIHoV1N2k60iOJNKQFT4cs+ixQw90q+80QSnfWL4ZQAc+yP4Wj+h2wmCUJdhOoiid/FKd+4N+mP04Lz46z2yor0Oc4oRuy46hPwf9xBJDBQkpghnlfDg9QF4BCrR1ZsQExInvxX4mfnRLjjKIIPtUHM7C9rAlMewxQUVdEvhJudrXboACNagGVrTEmSFnuTMFf1Dw9QThAlZaXT7nmOk+3wAVvhw5UL814LQ98uM8w==",
        "X-Forefront-Antispam-Report": "CIP:149.199.80.198; CTRY:IE; LANG:en; SCL:1;\n SRV:;\n IPV:CAL; SFV:NSPM; H:xir-pvapexch02.xlnx.xilinx.com;\n PTR:unknown-80-198.xilinx.com; CAT:NONE;\n SFS:(13230001)(4636009)(46966006)(40470700004)(36840700001)(4326008)(8676002)(40460700003)(6666004)(316002)(26005)(5660300002)(70206006)(70586007)(508600001)(186003)(83380400001)(7636003)(2906002)(54906003)(356005)(82310400005)(47076005)(336012)(2616005)(1076003)(426003)(7696005)(8936002)(9786002)(7416002)(110136005)(44832011)(36860700001)(36756003)(102446001);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "xilinx.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "25 May 2022 17:37:39.8336 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 72e93e60-4989-409a-c9c9-08da3e754412",
        "X-MS-Exchange-CrossTenant-Id": "657af505-d5df-48d0-8300-c31994686c5c",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.80.198];\n Helo=[xir-pvapexch02.xlnx.xilinx.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n DM3NAM02FT021.eop-nam02.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SN6PR02MB3935",
        "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": "When supported RSS offload flow types are printed via 'show port info #'\ncommand, flow names are get from flow type array which is wrong and\ncausing some RSS flow types not being displayed.\n\nInstead RSS flow type array should be used. Also helper functions added\nand existing code updated to use helpers.\n\nFixes: b12964f621dc (\"ethdev: unification of RSS offload types\")\nCc: stable@dpdk.org\n\nSigned-off-by: Ferruh Yigit <ferruh.yigit@xilinx.com>\n---\nCc: helin.zhang@intel.com\n\nNote:\nIn ethdev, flow type macros 'RTE_ETH_FLOW_*' and RSS type macros\n'RTE_ETH_RSS_*' are related, buy they seems diverged a little, may need\nto check that too.\n---\n app/test-pmd/config.c | 92 ++++++++++++++++++++++++++++++-------------\n 1 file changed, 64 insertions(+), 28 deletions(-)",
    "diff": "diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c\nindex 72d2606d19d5..c353d224ef06 100644\n--- a/app/test-pmd/config.c\n+++ b/app/test-pmd/config.c\n@@ -147,6 +147,32 @@ const struct rss_type_info rss_type_table[] = {\n \t{ NULL, 0 },\n };\n \n+static const char *\n+rsstype_to_str(uint64_t rss_type)\n+{\n+\tint i;\n+\n+\tfor (i = 0; rss_type_table[i].str != NULL; i++) {\n+\t\tif (rss_type_table[i].rss_type == rss_type)\n+\t\t\treturn rss_type_table[i].str;\n+\t}\n+\n+\treturn NULL;\n+}\n+\n+static uint64_t\n+str_to_rsstype(const char *str)\n+{\n+\tint i;\n+\n+\tfor (i = 0; rss_type_table[i].str != NULL; i++) {\n+\t\tif (!strcmp(rss_type_table[i].str, str))\n+\t\t\treturn rss_type_table[i].rss_type;\n+\t}\n+\n+\treturn 0;\n+}\n+\n static const struct {\n \tenum rte_eth_fec_mode mode;\n \tconst char *name;\n@@ -779,19 +805,21 @@ port_infos_display(portid_t port_id)\n \tif (!dev_info.flow_type_rss_offloads)\n \t\tprintf(\"No RSS offload flow type is supported.\\n\");\n \telse {\n+\t\tuint64_t rss_types = dev_info.flow_type_rss_offloads;\n \t\tuint16_t i;\n-\t\tchar *p;\n \n \t\tprintf(\"Supported RSS offload flow types:\\n\");\n-\t\tfor (i = RTE_ETH_FLOW_UNKNOWN + 1;\n-\t\t     i < sizeof(dev_info.flow_type_rss_offloads) * CHAR_BIT; i++) {\n-\t\t\tif (!(dev_info.flow_type_rss_offloads & (1ULL << i)))\n-\t\t\t\tcontinue;\n-\t\t\tp = flowtype_to_str(i);\n-\t\t\tif (p)\n-\t\t\t\tprintf(\"  %s\\n\", p);\n-\t\t\telse\n-\t\t\t\tprintf(\"  user defined %d\\n\", i);\n+\t\tfor (i = 0; rss_types != 0; i++) {\n+\t\t\tif (rss_types & 1) {\n+\t\t\t\tuint64_t rss_type = 1ULL << i;\n+\t\t\t\tconst char *p = rsstype_to_str(rss_type);\n+\n+\t\t\t\tif (p)\n+\t\t\t\t\tprintf(\"  %s\\n\", p);\n+\t\t\t\telse\n+\t\t\t\t\tprintf(\"  user defined 0x%\"PRIx64\"\\n\", rss_type);\n+\t\t\t}\n+\t\t\trss_types >>= 1;\n \t\t}\n \t}\n \n@@ -1547,6 +1575,7 @@ port_flow_complain(struct rte_flow_error *error)\n static void\n rss_config_display(struct rte_flow_action_rss *rss_conf)\n {\n+\tuint64_t rss_types;\n \tuint8_t i;\n \n \tif (rss_conf == NULL) {\n@@ -1582,16 +1611,23 @@ rss_config_display(struct rte_flow_action_rss *rss_conf)\n \t}\n \n \tprintf(\" types:\\n\");\n-\tif (rss_conf->types == 0) {\n+\trss_types = rss_conf->types;\n+\tif (rss_types == 0) {\n \t\tprintf(\"  none\\n\");\n \t\treturn;\n \t}\n-\tfor (i = 0; rss_type_table[i].str; i++) {\n-\t\tif ((rss_conf->types &\n-\t\t    rss_type_table[i].rss_type) ==\n-\t\t    rss_type_table[i].rss_type &&\n-\t\t    rss_type_table[i].rss_type != 0)\n-\t\t\tprintf(\"  %s\\n\", rss_type_table[i].str);\n+\n+\tfor (i = 0; rss_types != 0; i++) {\n+\t\tif (rss_types & 1) {\n+\t\t\tuint64_t rss_type = 1ULL << i;\n+\t\t\tconst char *p = rsstype_to_str(rss_type);\n+\n+\t\t\tif (p)\n+\t\t\t\tprintf(\"  %s\\n\", p);\n+\t\t\telse\n+\t\t\t\tprintf(\"  user defined 0x%\"PRIx64\"\\n\", rss_type);\n+\t\t}\n+\t\trss_types >>= 1;\n \t}\n }\n \n@@ -3823,11 +3859,16 @@ port_rss_hash_conf_show(portid_t port_id, int show_rss_key)\n \t\treturn;\n \t}\n \tprintf(\"RSS functions:\\n \");\n-\tfor (i = 0; rss_type_table[i].str; i++) {\n-\t\tif (rss_type_table[i].rss_type == 0)\n-\t\t\tcontinue;\n-\t\tif ((rss_hf & rss_type_table[i].rss_type) == rss_type_table[i].rss_type)\n-\t\t\tprintf(\"%s \", rss_type_table[i].str);\n+\tfor (i = 0; rss_hf != 0; i++) {\n+\t\tif (rss_hf & 1) {\n+\t\t\tuint64_t rss_type = 1ULL << i;\n+\t\t\tconst char *p = rsstype_to_str(rss_type);\n+\t\t\tif (p)\n+\t\t\t\tprintf(\"%s \", p);\n+\t\t\telse\n+\t\t\t\tprintf(\"0x%\"PRIx64\" \", rss_type);\n+\t\t}\n+\t\trss_hf >>= 1;\n \t}\n \tprintf(\"\\n\");\n \tif (!show_rss_key)\n@@ -3844,15 +3885,10 @@ port_rss_hash_key_update(portid_t port_id, char rss_type[], uint8_t *hash_key,\n {\n \tstruct rte_eth_rss_conf rss_conf;\n \tint diag;\n-\tunsigned int i;\n \n \trss_conf.rss_key = NULL;\n \trss_conf.rss_key_len = 0;\n-\trss_conf.rss_hf = 0;\n-\tfor (i = 0; rss_type_table[i].str; i++) {\n-\t\tif (!strcmp(rss_type_table[i].str, rss_type))\n-\t\t\trss_conf.rss_hf = rss_type_table[i].rss_type;\n-\t}\n+\trss_conf.rss_hf = str_to_rsstype(rss_type);\n \tdiag = rte_eth_dev_rss_hash_conf_get(port_id, &rss_conf);\n \tif (diag == 0) {\n \t\trss_conf.rss_key = hash_key;\n",
    "prefixes": [
        "1/3"
    ]
}