get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 13967,
    "url": "https://patches.dpdk.org/api/patches/13967/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1466170194-28393-7-git-send-email-jerin.jacob@caviumnetworks.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": "<1466170194-28393-7-git-send-email-jerin.jacob@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1466170194-28393-7-git-send-email-jerin.jacob@caviumnetworks.com",
    "date": "2016-06-17T13:29:33",
    "name": "[dpdk-dev,v6,06/27] net/thunderx/base: add RSS and reta configuration HW APIs",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "6d63111e6232a1e60a3232249f0e2648c31d2b6b",
    "submitter": {
        "id": 305,
        "url": "https://patches.dpdk.org/api/people/305/?format=api",
        "name": "Jerin Jacob",
        "email": "jerin.jacob@caviumnetworks.com"
    },
    "delegate": {
        "id": 10,
        "url": "https://patches.dpdk.org/api/users/10/?format=api",
        "username": "bruce",
        "first_name": "Bruce",
        "last_name": "Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1466170194-28393-7-git-send-email-jerin.jacob@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/13967/comments/",
    "check": "pending",
    "checks": "https://patches.dpdk.org/api/patches/13967/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 [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 86399D061;\n\tFri, 17 Jun 2016 15:31:06 +0200 (CEST)",
            "from na01-bn1-obe.outbound.protection.outlook.com\n\t(mail-bn1bon0066.outbound.protection.outlook.com [157.56.111.66])\n\tby dpdk.org (Postfix) with ESMTP id 63A43D049\n\tfor <dev@dpdk.org>; Fri, 17 Jun 2016 15:31:03 +0200 (CEST)",
            "from localhost.localdomain.localdomain (171.48.17.70) by\n\tBN3PR0701MB1718.namprd07.prod.outlook.com (10.163.39.17) with\n\tMicrosoft SMTP\n\tServer (TLS) id 15.1.517.8; Fri, 17 Jun 2016 13:30:58 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=IUDcVjHa94avApGcJOf2OXyPeBQ1ELqugSW+Ndu2WNA=;\n\tb=ln40ZBYyivZLmEZYH6hYRTZHiAbxZgute8QwOLH+fvLX/e7V5LUZpKMAon1PH+6MiIFMKsH1VLcsT/zFbWslfOfYfQFHtTgHuzVoR990hImEYfBElUqMXJQ9DAP780qa5z5Sii3tCY4lLqUdgnftzGYjktS489pYwSuWuYbLzDU=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Jerin.Jacob@cavium.com; ",
        "From": "Jerin Jacob <jerin.jacob@caviumnetworks.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<thomas.monjalon@6wind.com>, <bruce.richardson@intel.com>,\n\t<ferruh.yigit@intel.com>, Jerin Jacob <jerin.jacob@caviumnetworks.com>,\n\tMaciej Czekaj <maciej.czekaj@caviumnetworks.com>, Kamil Rytarowski\n\t<Kamil.Rytarowski@caviumnetworks.com>,\n\tZyta Szpak <zyta.szpak@semihalf.com>, \n\tSlawomir Rosek <slawomir.rosek@semihalf.com>, Radoslaw Biernacki\n\t<rad@semihalf.com>",
        "Date": "Fri, 17 Jun 2016 18:59:33 +0530",
        "Message-ID": "<1466170194-28393-7-git-send-email-jerin.jacob@caviumnetworks.com>",
        "X-Mailer": "git-send-email 2.5.5",
        "In-Reply-To": "<1466170194-28393-1-git-send-email-jerin.jacob@caviumnetworks.com>",
        "References": "<1465931200-23912-1-git-send-email-jerin.jacob@caviumnetworks.com>\n\t<1466170194-28393-1-git-send-email-jerin.jacob@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[171.48.17.70]",
        "X-ClientProxiedBy": "BM1PR01CA0028.INDPRD01.PROD.OUTLOOK.COM (10.163.198.163)\n\tTo\n\tBN3PR0701MB1718.namprd07.prod.outlook.com (10.163.39.17)",
        "X-MS-Office365-Filtering-Correlation-Id": "9a45db9d-f6d0-43b6-71c0-08d396b3a035",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BN3PR0701MB1718;\n\t2:7TMgsS6vnvN3cqQ3WCxQvPuROCHcx4xJxDVZPMPKOxgQYxmxW+SC6Zyhut6R1McZEIg/f05D9PcSLVvOTqsTdqxEzFYVLEA83iqzHBoVx70nhiTwxP1WNl4Ijx7HBijcLuM0u2IAWyCzCtsIYLjK6hfXC2lVHsJEqo6br5chKsbCIu7jvgmRkj5YWrde0+69;\n\t3:37hOjLQsz20G+fTCjPH3OVXyq4Zy/TOhPr5lNJ8iufBVUbMZEJMdwcEQohf2j8Xj3oIwHIl9wdC5Vd9nTEl/LELuwoTTYdUpirVuml/bcd9DumWAPwPmNrAkY5zqjV/m;\n\t25:Vo+TFeuxmj7sbCLk+lfIyE3lFeZ2fOZ+WPilLv3b/CdbFpR/U9OublJbXrlNwPFCRPS4zuxnS78nk4ykm30xf17rZIIvSQwIkoCazwxj+zT+ZTk9+f/dxXcCk1zdLcAQBpIIGboKslAhUzB1KPU4KFM2lbRjtaHhzWOM+QxwTGmlJzmGIBxOFnDhlsy1PppFt57j85pWM7u+BUI7pDtYQUGb7Ixt5g70I4IUv/fnMabkTPswX2n5doWnq2aU1gT5FMLd5eeROD75hRKzg6RLMB1jQ2wWkZYSLA5u/XhHzUgkmupP/2NHsblSiQz9rfq2D+5XnJmwhZ68xOLzF7lrqQeXmjmA1hFWUmaudCAx8kwZFJCXIJWBDxJgQdqkWFQPohH+SoNRFfxIA8LknH9gvHg3Z9FrRCciqrh+AuyCTK0=",
            "1; BN3PR0701MB1718;\n\t20:ChB4dpLIraHfr0nZ5MdCIXD7vA2BMndoyMmNtnIifqrDkjCHOiOELnzY3MaG5s2DSLKCXCPhlAd9RdTPFdha9Moc4Lv71OfcnhY24gwd05YZjv3Kw33/lolarDM0HQUIKNJd4ZkgD/1BQWK6U7N3untSxX2bVjvu9/oBfWJwtvDiM9FIgg1L1DfG8afgtVIcuXJX+/OJP2++zlaTrA5soLL0sUysKzt0YCYEmOqAOAWiAnirA/nGdMcAeWLAuMBMsuFEMtNv4dA2EWaQV6gaAVgfUhUWoY+wK0cAZfA0Kjp3yh7muM5LdnLrm/MuPXarGyUxnbzofszgFNF2TrFld56fCk4HNq/5kcFjIIRZ69o2Lnw6AoHopffLYR4r8aLow+NCunSZW3Y3z4IJ/UNATYbY1AAXZKBktU84a7RtUd9P/s1Z6YduTA7p9r5iiR5QSXb9mW1PJiqgqrKwBVfJ6Cko92OM3ot5RYm8GjCs4vWBj1BaS9aJ8Z3P0S8xXKs8DKM4hhsC7z/2zVxAzAr43st6eIDRwnNxCcbfAQlSlXRUoCQw6t/Z5QhPjkCbS5ZjnB+wW0mF1CWY5Tnfh2X0EOC7UiMYNLUWPSdE4LU3csY=",
            "1; BN3PR0701MB1718;\n\t4:51OnEj0NgQfJG1l8pnGvqw0GISA/Xl8kJ/aDsi9UyX2iZ9abMV3nJ/9zSERmhu/BYWOSKS3GC4BLoFsXDUlq3lJxiMk1iz2pYMRvoEg/JiLfgj2e/fRn37C5VQYqT87JmpSYMSbm9SYUlw66uLv9k30OK3Q57LgIIE9foaXrPcFvDgeARVInLMjhcyAOMheBs1EHG4gLUXy8SaBFL4IAE+w4PR9aVx0A2oGvL0QxcNKOeLxs3QIEyegMWMNijhtjsSz3dAldP3VQ/VO11g/aggeLK1oilN23+CxjC3L6/8xnQjVeylhC584KjakJsaAhOpk2k8N2ywWnK+4JhCGoXbftsEBlXwe6LBlT4LowQTPGxgMhh2CLo9QTlTHLBnAp",
            "=?us-ascii?Q?1; BN3PR0701MB1718;\n\t23:kf9p9H0TJm6AZIN5Cvw8IOAE80lOPnYrj5nbZuh?=\n\t=?us-ascii?Q?ODFIS94208bxwxQFZAraq/BAsDN5WjDFx/20WoZ+v3yW2aL9RlND9jZE2qXb?=\n\t=?us-ascii?Q?bshPX+JaqcwB+ufSsiQ24G1aevSHXfC6x2YJcGwROFO2RHjNhdlGWkFfEUyl?=\n\t=?us-ascii?Q?bx4tEQJ6tow5hUtuh2DGwiRsrIXvaA81J/U/Z1QkG4GwcHkmHjE/eMAAIt3c?=\n\t=?us-ascii?Q?MymyYFsYsCajDnHHjHQJmOfQzK40PhJX1jZEJKaB1uQv7YMMSEHaxfrkPg3V?=\n\t=?us-ascii?Q?nTJ1GPcsHT9pLuOUWaMx5CO4p3nv5Hg62EoGTUIrgJI1a2/+Ypy3/Svjvz6F?=\n\t=?us-ascii?Q?pGL1Ye2LH7K6IpT/zecNW0mAGDhQJPN6FsD2+J05xJozSFe4QmXfRpQdfPcb?=\n\t=?us-ascii?Q?aG8beCJVkTWYmSDDLbiGD/r8BmyC8xZmtd0llsaYSaSlJo6kEbC3vczvaKus?=\n\t=?us-ascii?Q?KfK7XInf1BESBVCgN18AOSAMHTs8LnN4yYK/VONMMHDZKd4OOZlUwJn1u898?=\n\t=?us-ascii?Q?rQDXUKage3EWvrsO/Cmu6DbyWPTr60e+5X64LbFPN1dX1OvfRkN1gYm0W3pl?=\n\t=?us-ascii?Q?PSGXmm2BP1TH8triPZNa8DGKAz9iztsbHrseb3VqlBzhSXGOtEqB8EDaEOQj?=\n\t=?us-ascii?Q?wuqwirxd7dRI2rLFeJz61tunTZDpxeqnsZHmhC/NyYn5yCxfFwc5AMnmYCf8?=\n\t=?us-ascii?Q?r+VhD68W0YhtMSfmjHg4SzljpZx3zWktHNmKnbB3ZBYhcgf8XnpyUKG2QGj2?=\n\t=?us-ascii?Q?lq1uly1Cxmw2hbyBluNBYAoLDh1KRKHMcUXy9x6TZDBUiWHpPHxENII+VHLR?=\n\t=?us-ascii?Q?lUOQriWCR/6oSV32lNI1WXz7KCta/jjBcIvQp5wk0brMIiz16NzBzHnzQiVs?=\n\t=?us-ascii?Q?kJjReJpNTIvtultO1V345k5j9Hl8A/kVJkpBx5uSVnjQ1lIYiYCqphXyMLnx?=\n\t=?us-ascii?Q?0Il1z3nwHeZIjZ5d7xJRnAu4IjoRaMgECD89tRfU5yopoxw9UqtzFKWfBVOp?=\n\t=?us-ascii?Q?HTtXjCCFv+yuizE4UdoQYrOOrzUXCKnzMfZ7HeD/QMuR7CsBu2uo/MkoyCXV?=\n\t=?us-ascii?Q?q9UmgD1DiPyRo2253mEsZsYlpVbdcg5dd6sFuFv7lLrxxMMkmQw=3D=3D?=",
            "1; BN3PR0701MB1718;\n\t6:6GsCMptnt7Ud7hyUq3nlimp9FL/Q3EN9C2e0xAd+HLjzRSzeS88RnfANw4aA7lqnD6fd+QHfBs5OCH9esbai/aILNFTxAq1l0IfmVHtB5Ki+lCywN8lWy98zG+9eSs37DcoxFxiNni6n7bL4E38yCFzp8IMSz3KxIR11CY9Ahw2KrhGikPCNz4YVS8rNoSHAZE6wLJK9IfsjoHzD5otx57z/08TELs0CZrmsoOJJ+dyNkbi3ujkicGTzWff0hswsQ9JCH3w9vrdn40qBHjKC+DMdlDHu/o8blCnJKkfn0Zs=;\n\t5:9mkYFc9Q/uwAV/7lZVweWhiCpRzqPB24/mFWeAS92SlUDglPNQVWs0e7Bksrn+xVlrID3wb+JxuUwH2oSn8Erwqln4alJfI/5ETyo5K7BNvUIqVe3ppb4IfitEfJBJX50apmYpXXa/J/MoKHJnv9FQ==;\n\t24:JvEoEPc2DjCnuh97I26GcwmwLkD921rX5wHLG+bTDc8nMXhAUexa7x9hK0bfJko8UGHO/hRh31wOWi+RJvb6d18/c8eyzSGLn+LYzQFhtac=;\n\t7:lq8XPSnEBf897wzKKf8fGqmnAGXZwM0diuO2RMkM5aX+/gOT5ud58EdkRNN3gnyWISF04CNHjCLKpgBpGmJwl5mehQxxCvz8TgjoySz/2Y4xKzT7JFtxwHTO6UEazTggg+bQ40+pzxxbI0/L++epZ4xgQNlZnPOLl9uxf5yyou05iH03CqFoePzQuj2E9krePW7npP9emGca5cH86IOP0w=="
        ],
        "X-Microsoft-Antispam": "UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0701MB1718;",
        "X-Microsoft-Antispam-PRVS": "<BN3PR0701MB1718C96ED23731038729F3C881570@BN3PR0701MB1718.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046); \n\tSRVR:BN3PR0701MB1718; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0701MB1718; ",
        "X-Forefront-PRVS": "09760A0505",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(199003)(189002)(48376002)(19580395003)(68736007)(2351001)(47776003)(229853001)(97736004)(19580405001)(586003)(50986999)(110136002)(36756003)(3846002)(66066001)(92566002)(105586002)(189998001)(76176999)(33646002)(42186005)(81156014)(575784001)(5004730100002)(101416001)(50466002)(2950100001)(5003940100001)(4326007)(5008740100001)(50226002)(2906002)(6116002)(77096005)(81166006)(8676002)(106356001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0701MB1718;\n\tH:localhost.localdomain.localdomain; FPR:; SPF:None; PTR:InfoNoRecords;\n\tA:1; MX:1; CAT:NONE; LANG:en; CAT:NONE; ",
        "Received-SPF": "None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Jun 2016 13:30:58.1946\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BN3PR0701MB1718",
        "Subject": "[dpdk-dev] [PATCH v6 06/27] net/thunderx/base: add RSS and reta\n\tconfiguration HW APIs",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>\nSigned-off-by: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>\nSigned-off-by: Kamil Rytarowski <Kamil.Rytarowski@caviumnetworks.com>\nSigned-off-by: Zyta Szpak <zyta.szpak@semihalf.com>\nSigned-off-by: Slawomir Rosek <slawomir.rosek@semihalf.com>\nSigned-off-by: Radoslaw Biernacki <rad@semihalf.com>\n---\n drivers/net/thunderx/base/nicvf_hw.c | 129 +++++++++++++++++++++++++++++++++++\n drivers/net/thunderx/base/nicvf_hw.h |  20 ++++++\n 2 files changed, 149 insertions(+)",
    "diff": "diff --git a/drivers/net/thunderx/base/nicvf_hw.c b/drivers/net/thunderx/base/nicvf_hw.c\nindex ec24f9c..3366aa5 100644\n--- a/drivers/net/thunderx/base/nicvf_hw.c\n+++ b/drivers/net/thunderx/base/nicvf_hw.c\n@@ -721,6 +721,135 @@ nicvf_vlan_hw_strip(struct nicvf *nic, bool enable)\n \tnicvf_reg_write(nic, NIC_VNIC_RQ_GEN_CFG, val);\n }\n \n+void\n+nicvf_rss_set_key(struct nicvf *nic, uint8_t *key)\n+{\n+\tint idx;\n+\tuint64_t addr, val;\n+\tuint64_t *keyptr = (uint64_t *)key;\n+\n+\taddr = NIC_VNIC_RSS_KEY_0_4;\n+\tfor (idx = 0; idx < RSS_HASH_KEY_SIZE; idx++) {\n+\t\tval = nicvf_cpu_to_be_64(*keyptr);\n+\t\tnicvf_reg_write(nic, addr, val);\n+\t\taddr += sizeof(uint64_t);\n+\t\tkeyptr++;\n+\t}\n+}\n+\n+void\n+nicvf_rss_get_key(struct nicvf *nic, uint8_t *key)\n+{\n+\tint idx;\n+\tuint64_t addr, val;\n+\tuint64_t *keyptr = (uint64_t *)key;\n+\n+\taddr = NIC_VNIC_RSS_KEY_0_4;\n+\tfor (idx = 0; idx < RSS_HASH_KEY_SIZE; idx++) {\n+\t\tval = nicvf_reg_read(nic, addr);\n+\t\t*keyptr = nicvf_be_to_cpu_64(val);\n+\t\taddr += sizeof(uint64_t);\n+\t\tkeyptr++;\n+\t}\n+}\n+\n+void\n+nicvf_rss_set_cfg(struct nicvf *nic, uint64_t val)\n+{\n+\tnicvf_reg_write(nic, NIC_VNIC_RSS_CFG, val);\n+}\n+\n+uint64_t\n+nicvf_rss_get_cfg(struct nicvf *nic)\n+{\n+\treturn nicvf_reg_read(nic, NIC_VNIC_RSS_CFG);\n+}\n+\n+int\n+nicvf_rss_reta_update(struct nicvf *nic, uint8_t *tbl, uint32_t max_count)\n+{\n+\tuint32_t idx;\n+\tstruct nicvf_rss_reta_info *rss = &nic->rss_info;\n+\n+\t/* result will be stored in nic->rss_info.rss_size */\n+\tif (nicvf_mbox_get_rss_size(nic))\n+\t\treturn NICVF_ERR_RSS_GET_SZ;\n+\n+\tassert(rss->rss_size > 0);\n+\trss->hash_bits = (uint8_t)log2(rss->rss_size);\n+\tfor (idx = 0; idx < rss->rss_size && idx < max_count; idx++)\n+\t\trss->ind_tbl[idx] = tbl[idx];\n+\n+\tif (nicvf_mbox_config_rss(nic))\n+\t\treturn NICVF_ERR_RSS_TBL_UPDATE;\n+\n+\treturn NICVF_OK;\n+}\n+\n+int\n+nicvf_rss_reta_query(struct nicvf *nic, uint8_t *tbl, uint32_t max_count)\n+{\n+\tuint32_t idx;\n+\tstruct nicvf_rss_reta_info *rss = &nic->rss_info;\n+\n+\t/* result will be stored in nic->rss_info.rss_size */\n+\tif (nicvf_mbox_get_rss_size(nic))\n+\t\treturn NICVF_ERR_RSS_GET_SZ;\n+\n+\tassert(rss->rss_size > 0);\n+\trss->hash_bits = (uint8_t)log2(rss->rss_size);\n+\tfor (idx = 0; idx < rss->rss_size && idx < max_count; idx++)\n+\t\ttbl[idx] = rss->ind_tbl[idx];\n+\n+\treturn NICVF_OK;\n+}\n+\n+int\n+nicvf_rss_config(struct nicvf *nic, uint32_t  qcnt, uint64_t cfg)\n+{\n+\tuint32_t idx;\n+\tuint8_t default_reta[NIC_MAX_RSS_IDR_TBL_SIZE];\n+\tuint8_t default_key[RSS_HASH_KEY_BYTE_SIZE] = {\n+\t\t0xFE, 0xED, 0x0B, 0xAD, 0xFE, 0xED, 0x0B, 0xAD,\n+\t\t0xFE, 0xED, 0x0B, 0xAD, 0xFE, 0xED, 0x0B, 0xAD,\n+\t\t0xFE, 0xED, 0x0B, 0xAD, 0xFE, 0xED, 0x0B, 0xAD,\n+\t\t0xFE, 0xED, 0x0B, 0xAD, 0xFE, 0xED, 0x0B, 0xAD,\n+\t\t0xFE, 0xED, 0x0B, 0xAD, 0xFE, 0xED, 0x0B, 0xAD\n+\t};\n+\n+\tif (nic->cpi_alg != CPI_ALG_NONE)\n+\t\treturn -EINVAL;\n+\n+\tif (cfg == 0)\n+\t\treturn -EINVAL;\n+\n+\t/* Update default RSS key and cfg */\n+\tnicvf_rss_set_key(nic, default_key);\n+\tnicvf_rss_set_cfg(nic, cfg);\n+\n+\t/* Update default RSS RETA */\n+\tfor (idx = 0; idx < NIC_MAX_RSS_IDR_TBL_SIZE; idx++)\n+\t\tdefault_reta[idx] = idx % qcnt;\n+\n+\treturn nicvf_rss_reta_update(nic, default_reta,\n+\t\t\tNIC_MAX_RSS_IDR_TBL_SIZE);\n+}\n+\n+int\n+nicvf_rss_term(struct nicvf *nic)\n+{\n+\tuint32_t idx;\n+\tuint8_t disable_rss[NIC_MAX_RSS_IDR_TBL_SIZE];\n+\n+\tnicvf_rss_set_cfg(nic, 0);\n+\t/* Redirect the output to 0th queue  */\n+\tfor (idx = 0; idx < NIC_MAX_RSS_IDR_TBL_SIZE; idx++)\n+\t\tdisable_rss[idx] = 0;\n+\n+\treturn nicvf_rss_reta_update(nic, disable_rss,\n+\t\t\tNIC_MAX_RSS_IDR_TBL_SIZE);\n+}\n+\n int\n nicvf_loopback_config(struct nicvf *nic, bool enable)\n {\ndiff --git a/drivers/net/thunderx/base/nicvf_hw.h b/drivers/net/thunderx/base/nicvf_hw.h\nindex dc9f4f1..a7ae531 100644\n--- a/drivers/net/thunderx/base/nicvf_hw.h\n+++ b/drivers/net/thunderx/base/nicvf_hw.h\n@@ -76,10 +76,18 @@ enum nicvf_err_e {\n \tNICVF_ERR_SQ_PF_CFG,\t /* -8175 */\n \tNICVF_ERR_LOOPBACK_CFG,  /* -8174 */\n \tNICVF_ERR_BASE_INIT,     /* -8173 */\n+\tNICVF_ERR_RSS_TBL_UPDATE,/* -8172 */\n+\tNICVF_ERR_RSS_GET_SZ,    /* -8171 */\n };\n \n typedef nicvf_phys_addr_t (*rbdr_pool_get_handler)(void *opaque);\n \n+struct nicvf_rss_reta_info {\n+\tuint8_t hash_bits;\n+\tuint16_t rss_size;\n+\tuint8_t ind_tbl[NIC_MAX_RSS_IDR_TBL_SIZE];\n+};\n+\n /* Common structs used in DPDK and base layer are defined in DPDK layer */\n #include \"../nicvf_struct.h\"\n \n@@ -171,6 +179,18 @@ uint32_t nicvf_qsize_sq_roundup(uint32_t val);\n \n void nicvf_vlan_hw_strip(struct nicvf *nic, bool enable);\n \n+int nicvf_rss_config(struct nicvf *nic, uint32_t  qcnt, uint64_t cfg);\n+int nicvf_rss_term(struct nicvf *nic);\n+\n+int nicvf_rss_reta_update(struct nicvf *nic, uint8_t *tbl, uint32_t max_count);\n+int nicvf_rss_reta_query(struct nicvf *nic, uint8_t *tbl, uint32_t max_count);\n+\n+void nicvf_rss_set_key(struct nicvf *nic, uint8_t *key);\n+void nicvf_rss_get_key(struct nicvf *nic, uint8_t *key);\n+\n+void nicvf_rss_set_cfg(struct nicvf *nic, uint64_t val);\n+uint64_t nicvf_rss_get_cfg(struct nicvf *nic);\n+\n int nicvf_loopback_config(struct nicvf *nic, bool enable);\n \n #endif /* _THUNDERX_NICVF_HW_H */\n",
    "prefixes": [
        "dpdk-dev",
        "v6",
        "06/27"
    ]
}