get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 45679,
    "url": "http://patches.dpdk.org/api/patches/45679/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/56a8740410d840ac5c83b984dcacb4d70b72d7ed.1538215990.git.igor.russkikh@aquantia.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": "<56a8740410d840ac5c83b984dcacb4d70b72d7ed.1538215990.git.igor.russkikh@aquantia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/56a8740410d840ac5c83b984dcacb4d70b72d7ed.1538215990.git.igor.russkikh@aquantia.com",
    "date": "2018-09-29T10:30:29",
    "name": "[v3,15/22] net/atlantic: RSS and RETA manipulation API",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "13463c2bc7613d23f0330a098924d9496ee77836",
    "submitter": {
        "id": 1124,
        "url": "http://patches.dpdk.org/api/people/1124/?format=api",
        "name": "Igor Russkikh",
        "email": "igor.russkikh@aquantia.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/56a8740410d840ac5c83b984dcacb4d70b72d7ed.1538215990.git.igor.russkikh@aquantia.com/mbox/",
    "series": [
        {
            "id": 1598,
            "url": "http://patches.dpdk.org/api/series/1598/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1598",
            "date": "2018-09-29T10:30:14",
            "name": "net/atlantic: Aquantia aQtion 10G NIC Family DPDK PMD driver",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/1598/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/45679/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/45679/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 2DB721B13E;\n\tSat, 29 Sep 2018 12:32:24 +0200 (CEST)",
            "from NAM05-DM3-obe.outbound.protection.outlook.com\n\t(mail-eopbgr730047.outbound.protection.outlook.com [40.107.73.47])\n\tby dpdk.org (Postfix) with ESMTP id E775B1B1FE\n\tfor <dev@dpdk.org>; Sat, 29 Sep 2018 12:32:21 +0200 (CEST)",
            "from ubuntubox.rdc.aquantia.com (95.79.108.179) by\n\tBLUPR0701MB1650.namprd07.prod.outlook.com (2a01:111:e400:58c6::20)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.22;\n\tSat, 29 Sep 2018 10:32:14 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=AQUANTIA1COM.onmicrosoft.com; s=selector1-aquantia-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=pA/IRKT/sU1SN1C1hSpUO0/ZUp9/KCEaaYgrynl/N+g=;\n\tb=T/5gHGlOz9ISbvlNmgZJ6mcB7MOVzavsoLcL7o90oNwHIddKG0MJ+UiHpr8YJWeJqLof3ZObXvg7NWCVuySD9bhnzvzPvnwnnT+5JoBvL1fWFbKhLYX5Knhy5Ra3oDLXwSOiLSxCD4jQzsY/i1EcS4NZQvcgYQQl4KTfn1AnCXk=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Igor.Russkikh@aquantia.com; ",
        "From": "Igor Russkikh <igor.russkikh@aquantia.com>",
        "To": "dev@dpdk.org",
        "Cc": "pavel.belous@aquantia.com, igor.russkikh@aquantia.com,\n\tPavel Belous <Pavel.Belous@aquantia.com>",
        "Date": "Sat, 29 Sep 2018 13:30:29 +0300",
        "Message-Id": "<56a8740410d840ac5c83b984dcacb4d70b72d7ed.1538215990.git.igor.russkikh@aquantia.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<cover.1538215990.git.igor.russkikh@aquantia.com>",
        "References": "<cover.1538215990.git.igor.russkikh@aquantia.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[95.79.108.179]",
        "X-ClientProxiedBy": "VI1P193CA0009.EURP193.PROD.OUTLOOK.COM\n\t(2603:10a6:800:bd::19) To BLUPR0701MB1650.namprd07.prod.outlook.com\n\t(2a01:111:e400:58c6::20)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "d9a57a98-2400-42f3-de9a-08d625f6d645",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989299)(4534165)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020);\n\tSRVR:BLUPR0701MB1650; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BLUPR0701MB1650;\n\t3:3yvbe3p4d4mIw5xcdoYUIqyaXYUm3bhiWP+Pgz4MrYDbrnwWngwZD9D62x0u+dutNb9uHIcsWM2fo1O0Iw1jldyYb2NzlqJhNa9Hsdyu9iYu+dYc5iHEeOYhAGHuPCtmimIonwHS3YpIxYVi+bkgRMY57kZll3ry42FLJYC4Uq7DgI5wkQoJNRneGc+QUmzWgFALGLjiaxOHp9Ujv4HTltK0fiIWYW5RfQVI30VRCE6txE73+N6reXbEr+pBhaKQ;\n\t25:wwYvw5+ej+8iILof5BzBvdHAvVxxss6P0RDuF67VUJSvw2+zJaridu0fPgCuSQu0OfOMWYizypsW62fnjpXryNMCLKnEGe2e5LAmDhCziGYVTR1OquzUUbLrYbIO87fJ8wOzXhG94wYXJZi/NuoIVdvbKBkF7d2BgSarlCtfvOUcXP3aDM3JvvQH353FOBDJs+FzFNFMEBQipJ1ORJai3PRuV/GFFYZGiHn9zE9h5ey+hkSAymqyPvTs6iKzXZ7kOAP+WN/OgpgV0oblvIcWLWuiZR5AmkZSyZdO+B5VHE/7LysaiuaclipUtOQlK89lS4xvZ22diYwRKIjuPJBIeXJg4eM1PUxT9sZ7tdhc+q0=;\n\t31:lNZAaGhfUgJD0uLxZpddJj1vsRdfNqaIQt9piL4Q2qM2MGU+APWXew2AJu+Gd7edaYifckENquApBeyKezrf85UyOp9ar21V66+KnYxqZosFuUa/dlN6LhMUSvR2N2xwm2lIORnm3RtykpgugYLEOcP+nvLv1YlZE+kcfAOQEaMnJ129jkO8FLfIHYLEqal6B03sIHCbPVe6xUJwVJnp3a+1394SNtYw8mVs8QCNG30=",
            "1; BLUPR0701MB1650;\n\t20:rTaFTOAKyQDRH9C92UGWtw84zMcPDKu1bytSvfoJw3GJUZkceG1i7Zal96s/NUllhEwxIJlTK5llNvgeIb9u6PffnwDgGwV/c26uPA46lW5TrDTD2PBgoTBCgPv/GDb6G2aY9qrQVUMoJ56vMQPp4fY5Rfqhq3MMcgDJL83azSdgfF1P9EWeL582P82QlThrPZyeWqeZJBSF2dFIn67HVZWa0F1c2MhAO4gFiIfg8fyvM8w/4TUV8qT/r+cIsZ+vs51NB/TIsKObsgLPuCJEQzewCa0pIp5bsbVQK+O7jsv9zn3eRDqxWabxDCGOnkqqWZfoU0JH0JyMKYjDiMVSxwgaVwBAzUEOeinJ07sUa4tMGqTgS2WViFMGwDySNyiAwV0kyt1DCQ7wM9n+tloIpYgGN7cbMQ7M9+RkQXjzBk9FxcLXhhOix2WJsWi6a2R1Nq2bKl9VWLgvcDUILTJCgJt4liu4G2rpdmXRO5ssBVPCZkCJdU4NNOXuBuRDFPas;\n\t4:Fd4l0DLKi+EfInr2BkszOSMYHUUHvnbs/hHHhbzaUQOM0uT5vbq1Y7PrewZBTpzfr9vCN29+17rT5rP5Qcs103BSR9Htx9cWMYygwlq0x2K7/6SEbAFE3C/ljr8V2BRrvvuM+mMgALBl4PpD7GNViUu8yBMbXwGHcEob75nc8mJFiVF2G1M1Zvk4Mo53cgcasMw3z5DR1F9A/JckAbDqF0ETLWbaxxTl99omm9SW0Tnbhd+lBUVHU/Lsl+Y5I+3wszBJJsG821gImcuOYtteuA==",
            "=?us-ascii?Q?1; BLUPR0701MB1650;\n\t23:Kn66gzI7ULbGbVUiSiVm/ZXlIQWUZU7c0z11Ucx?=\n\tUSB3zLRJT9XDNUK+vhP3r27twzhZWcy6aXIoyAG5tw6FpYxhiS/gYZYep70AiY0UlcHD2xoWuA9JsAR3AQ3FsHdD7Is5HUWfHFQ+AiovbIJXz+scQ59yI4evMpbADp9YwhnHoZh9/vMwdN8fodKLLJ6YsQNDxHySX8Dqy9Bi2wUN9qbjHPtMIOfd0yVj4PKg/W+P9bgfLCmxgUi65WjpFuJcmSf2Vun4Jp3mSyzmcoLRsDpBMkGui7xsWq5wgGQf0r20CRYEAXmZwG5C3Ev13wjvKoCco5udCO11aqldnCAW5/xTwSb9ERXWPkDgP0Q0lvvxQEr6EyBc11HTvSY91ev45fxKBUyUiuvYyNzX5smgN1zj4rv6h1vZUGtZbFQC+zqjMD9nSgB2uUx2exU5VHKVazLs7uAItz7dUdTcqbXw0BUMxmCjoFpe9N3XpTUbnEqVKgvDAmSfbusmhZwiS7/VsjMiMmffLLMZ1CCuH+5Zhs/Ee3+od+Dbg8b+NLHjnLg+DV9fcxqngirC7Xq5JUwtuRkjMCxkyIISniw1+rR6jsofgHjZXsm+ZDm/RwC/iOr0+P85WxF6xm3F1h854ZheTWJgAW7EkOYURiEsGojDSnhz6/wKsyc14OKYhDpaNxK5ENTT/AAu4SkzXW/inBFB5+vz0i1aq+V+mRKbLnm6Dwl1Se/AC4uOT8sOFxDT1cDZy2PxuWi3ewZn6Wx/JeAdKRkDEn3I2M+BnJw/UweIdCF88X4cBc9GHLL2C135fXO+cVS6NK1FFa4CJZydh5Rb9fO7dsyeodgKPqpCRDiXZ1cJDeoHxAE+8u/lZDJ0PhO6vbA7Rw4qsekiMN66Mg98Zutls6EOV+6O9aQY1QvPDIV/LHzGg4FJRWtld5IP5m3PRJSK0If9i9GGeJzljrU63oEAzs5MiOLwm3wp+XJoQaIrDksvMkeUXTvzohi1zhNrLFpFF+tgA8Gr6khXKsPd1qkvUj3f3OGgl+gICmSyx2+I0kLJbfLDiEA0azqa2Dbu2YzptTQewgT0BtXiuqbBFzeJLkQ6C+m3LswNtnbjqGLYJ3mAMt2dwM4mhOAV5Lgjf8L41qZKn01bmnV8e0HRM394isA+u8EaUj3E0//Nd9YSutlInxRCrOFrBd+w8NA7FMy+3bIy7zDoT4l+PgUDTo4TAaQQvm7mBJK2ibj+NcgjYaK6VmaGuKw5G03FL8BgyzPjEhcn+n+weN58V73lHPOaBqHlk6uMiJD0pj6XJYIMntlqfag526KVxFfh9QG4BXteICEK+5kQDI1tq5Jy8gzL0I4ImPhOYkxKGkmxyLg==",
            "1; BLUPR0701MB1650;\n\t6:xvZQoP0+52ihFcdXK4BWsChJvsBUW77NjvzL1+MaO2LBRr6AEXTkCyH8BkQMfiVG7qEzgKsgJbUikuUH/ymvkYjJbF8eXQrjmUCGT7koHBOJKJB97VsJlfu64Cw08bcUfzEJMdXb99PDwV+SizPygMAHWrTIiri1ogRAJMTa+8Yo2a91x5pAQMN6TPBXh8KKpxAcr2bsaKdBjLuq+VwG3oZbAZQCUa612X5VhPJj9QJbnHOJwdkMkGRsC5Wjdk/cIr9Xbvj1jDMvnxc6ZkgVnAzYTz1HUNd5ne8kTCoVioGMwfcbDqOVduAFya8Xe3VXyaD5TxBVlu/DwZDbkOkEYenUAajW2yh8YIeHW7spF9Fas9Z6LeQdK9gJDBIpMk1jJbpcYg2ifQPCnr9G8C9HklUPIIeYZEqTlr3+xuas1MP+svRWkAOTSNhxR09Wn19IGl/+KSfFqytqsd/a1UkPsg==;\n\t5:FrL3VpBOBZX5dwQT70kFYVUv1jvokQH30g5xXlOa8EIN3+EPkJwT47DIUAH6gjNmI/cHBlqEwM0j+L/aqm/EFqF5uKhXQNkYVQuRTpDduWtmOv7I3pEG4kLgqeoKPlKx3s5P0CjdT7D2zs+nlbrC8xTN8Z/Ufw2wFocTDBAuxlo=;\n\t7:8rcdoIlb2n9HEgyyXMQG9bSsCCM0LQsszTqZIJnkyTi+i6igrOiMwNi5eQwT98r6vZo2iED4PReEG6VWsGMiyHKR1Y4FnxPbOGYwZ6hhu5dxvfZTxe9vO3apBsgfTbk1m0Py/eLJCHyowkiImCI/FaOR9a8KPmUOAGPVYYlqNskoYhtMv4L6cAyyGNezBML95Z0vArfJapWVzAUjlldXKMmcZ+ctV6yPSngZHSpK69PqDgCkP3tXotV/bCr6wbri"
        ],
        "X-MS-TrafficTypeDiagnostic": "BLUPR0701MB1650:",
        "X-Microsoft-Antispam-PRVS": "<BLUPR0701MB16502BC2E92B27F427DD229A98ED0@BLUPR0701MB1650.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231355)(944501410)(52105095)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(201708071742011)(7699051);\n\tSRVR:BLUPR0701MB1650; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0701MB1650; ",
        "X-Forefront-PRVS": "0810818DA0",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(346002)(136003)(396003)(376002)(39850400004)(366004)(189003)(199004)(16526019)(14444005)(446003)(76176011)(2906002)(6916009)(6666003)(97736004)(8676002)(81166006)(81156014)(36756003)(4326008)(316002)(8936002)(50226002)(34290500001)(575784001)(86362001)(5660300001)(68736007)(16586007)(118296001)(72206003)(3846002)(6116002)(53936002)(386003)(105586002)(6486002)(47776003)(66066001)(486006)(25786009)(305945005)(50466002)(44832011)(956004)(2616005)(26005)(107886003)(52116002)(51416003)(7696005)(186003)(476003)(478600001)(2361001)(7736002)(2351001)(48376002)(106356001)(11346002)(309714004);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1650;\n\tH:ubuntubox.rdc.aquantia.com; \n\tFPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; ",
        "Received-SPF": "None (protection.outlook.com: aquantia.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "MSlAycQfCt9B+1uoB6doWaCpy2wIlIQuaARYliJP9ahIN2MVbgll2fwaL7W3wDLpOV7Tn5HWjoGXrNa7ZC6oRlYSCHiyMgkV4y3T+yjchuzyPjOM/E3aznAWt8fa1w0hA/ZCQ2m5KFeT6Bst8wtJCcODwqWaYd6+O9KeSqkeiEskRhMPAsyYcGEFy8vI35Lsm4rTR9JYiSPpxBZF9FA1OswuXWh3lzyE2bjgIQQSXpN1ff5Q7SulaFnGwmL0M1frI/dRL7u3FaVSNyZWh/eRThG8srcxO5h1Oes7eFhfnwOa7NQD2wuGmjn3nnm9oeCn+pN4ml8h+TknQpcGojp50Rv7I0giBqwy4nNLZ3OcYO4=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "aquantia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "29 Sep 2018 10:32:14.5961\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "d9a57a98-2400-42f3-de9a-08d625f6d645",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "83e2e134-991c-4ede-8ced-34d47e38e6b1",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BLUPR0701MB1650",
        "Subject": "[dpdk-dev] [PATCH v3 15/22] net/atlantic: RSS and RETA manipulation\n\tAPI",
        "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": "Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>\nSigned-off-by: Pavel Belous <Pavel.Belous@aquantia.com>\n---\n drivers/net/atlantic/atl_ethdev.c | 107 ++++++++++++++++++++++++++++++++++++++\n drivers/net/atlantic/atl_ethdev.h |  14 +++++\n drivers/net/atlantic/atl_rxtx.c   |   5 ++\n 3 files changed, 126 insertions(+)",
    "diff": "diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c\nindex e71be3e14ca5..51e933a3559a 100644\n--- a/drivers/net/atlantic/atl_ethdev.c\n+++ b/drivers/net/atlantic/atl_ethdev.c\n@@ -64,6 +64,19 @@ static int atl_dev_interrupt_action(struct rte_eth_dev *dev,\n \t\t\t\t    struct rte_intr_handle *handle);\n static void atl_dev_interrupt_handler(void *param);\n \n+/* RSS */\n+static int atl_reta_update(struct rte_eth_dev *dev,\n+\t\t\t     struct rte_eth_rss_reta_entry64 *reta_conf,\n+\t\t\t     uint16_t reta_size);\n+static int atl_reta_query(struct rte_eth_dev *dev,\n+\t\t\t    struct rte_eth_rss_reta_entry64 *reta_conf,\n+\t\t\t    uint16_t reta_size);\n+static int atl_rss_hash_update(struct rte_eth_dev *dev,\n+\t\t\t\t struct rte_eth_rss_conf *rss_conf);\n+static int atl_rss_hash_conf_get(struct rte_eth_dev *dev,\n+\t\t\t\t   struct rte_eth_rss_conf *rss_conf);\n+\n+\n static int eth_atl_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,\n \tstruct rte_pci_device *pci_dev);\n static int eth_atl_pci_remove(struct rte_pci_device *pci_dev);\n@@ -213,6 +226,11 @@ static const struct eth_dev_ops atl_eth_dev_ops = {\n \n \t.rxq_info_get\t      = atl_rxq_info_get,\n \t.txq_info_get\t      = atl_txq_info_get,\n+\n+\t.reta_update          = atl_reta_update,\n+\t.reta_query           = atl_reta_query,\n+\t.rss_hash_update      = atl_rss_hash_update,\n+\t.rss_hash_conf_get    = atl_rss_hash_conf_get,\n };\n \n \n@@ -330,12 +348,18 @@ eth_atl_dev_init(struct rte_eth_dev *eth_dev)\n \t/* Hardware configuration - hardcode */\n \tadapter->hw_cfg.is_lro = false;\n \tadapter->hw_cfg.wol = false;\n+\tadapter->hw_cfg.is_rss = false;\n+\tadapter->hw_cfg.num_rss_queues = HW_ATL_B0_RSS_MAX;\n+\n \tadapter->hw_cfg.link_speed_msk = AQ_NIC_RATE_10G |\n \t\t\t  AQ_NIC_RATE_5G |\n \t\t\t  AQ_NIC_RATE_2G5 |\n \t\t\t  AQ_NIC_RATE_1G |\n \t\t\t  AQ_NIC_RATE_100M;\n \n+\tadapter->hw_cfg.aq_rss.indirection_table_size =\n+\t\tHW_ATL_B0_RSS_REDIRECTION_MAX;\n+\n \thw->aq_nic_cfg = &adapter->hw_cfg;\n \n \t/* disable interrupt */\n@@ -840,6 +864,10 @@ atl_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n \tdev_info->rx_desc_lim = rx_desc_lim;\n \tdev_info->tx_desc_lim = tx_desc_lim;\n \n+\tdev_info->hash_key_size = HW_ATL_B0_RSS_HASHKEY_BITS / 8;\n+\tdev_info->reta_size = HW_ATL_B0_RSS_REDIRECTION_MAX;\n+\tdev_info->flow_type_rss_offloads = ATL_RSS_OFFLOAD_ALL;\n+\n \tdev_info->speed_capa = ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G;\n \tdev_info->speed_capa |= ETH_LINK_SPEED_100M;\n \tdev_info->speed_capa |= ETH_LINK_SPEED_2_5G;\n@@ -1091,6 +1119,85 @@ atl_dev_interrupt_handler(void *param)\n \tatl_dev_interrupt_action(dev, dev->intr_handle);\n }\n \n+static int\n+atl_reta_update(struct rte_eth_dev *dev,\n+\t\t   struct rte_eth_rss_reta_entry64 *reta_conf,\n+\t\t   uint16_t reta_size)\n+{\n+\tint i;\n+\tstruct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\tstruct aq_hw_cfg_s *cf = ATL_DEV_PRIVATE_TO_CFG(dev->data->dev_private);\n+\n+\tfor (i = 0; i < reta_size && i < cf->aq_rss.indirection_table_size; i++)\n+\t\tcf->aq_rss.indirection_table[i] = min(reta_conf->reta[i],\n+\t\t\t\t\tdev->data->nb_rx_queues - 1);\n+\n+\thw_atl_b0_hw_rss_set(hw, &cf->aq_rss);\n+\treturn 0;\n+}\n+\n+static int\n+atl_reta_query(struct rte_eth_dev *dev,\n+\t\t    struct rte_eth_rss_reta_entry64 *reta_conf,\n+\t\t    uint16_t reta_size)\n+{\n+\tint i;\n+\tstruct aq_hw_cfg_s *cf = ATL_DEV_PRIVATE_TO_CFG(dev->data->dev_private);\n+\n+\tfor (i = 0; i < reta_size && i < cf->aq_rss.indirection_table_size; i++)\n+\t\treta_conf->reta[i] = cf->aq_rss.indirection_table[i];\n+\treta_conf->mask = ~0U;\n+\treturn 0;\n+}\n+\n+static int\n+atl_rss_hash_update(struct rte_eth_dev *dev,\n+\t\t\t\t struct rte_eth_rss_conf *rss_conf)\n+{\n+\tstruct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n+\tstruct aq_hw_cfg_s *cfg =\n+\t\tATL_DEV_PRIVATE_TO_CFG(dev->data->dev_private);\n+\tstatic u8 def_rss_key[40] = {\n+\t\t0x1e, 0xad, 0x71, 0x87, 0x65, 0xfc, 0x26, 0x7d,\n+\t\t0x0d, 0x45, 0x67, 0x74, 0xcd, 0x06, 0x1a, 0x18,\n+\t\t0xb6, 0xc1, 0xf0, 0xc7, 0xbb, 0x18, 0xbe, 0xf8,\n+\t\t0x19, 0x13, 0x4b, 0xa9, 0xd0, 0x3e, 0xfe, 0x70,\n+\t\t0x25, 0x03, 0xab, 0x50, 0x6a, 0x8b, 0x82, 0x0c\n+\t};\n+\n+\tcfg->is_rss = !!rss_conf->rss_hf;\n+\tif (rss_conf->rss_key) {\n+\t\tmemcpy(cfg->aq_rss.hash_secret_key, rss_conf->rss_key,\n+\t\t       rss_conf->rss_key_len);\n+\t\tcfg->aq_rss.hash_secret_key_size = rss_conf->rss_key_len;\n+\t} else {\n+\t\tmemcpy(cfg->aq_rss.hash_secret_key, def_rss_key,\n+\t\t       sizeof(def_rss_key));\n+\t\tcfg->aq_rss.hash_secret_key_size = sizeof(def_rss_key);\n+\t}\n+\n+\thw_atl_b0_hw_rss_set(hw, &cfg->aq_rss);\n+\thw_atl_b0_hw_rss_hash_set(hw, &cfg->aq_rss);\n+\treturn 0;\n+}\n+\n+static int\n+atl_rss_hash_conf_get(struct rte_eth_dev *dev,\n+\t\t\t\t struct rte_eth_rss_conf *rss_conf)\n+{\n+\tstruct aq_hw_cfg_s *cfg =\n+\t\tATL_DEV_PRIVATE_TO_CFG(dev->data->dev_private);\n+\n+\trss_conf->rss_hf = cfg->is_rss ? ATL_RSS_OFFLOAD_ALL : 0;\n+\tif (rss_conf->rss_key) {\n+\t\trss_conf->rss_key_len = cfg->aq_rss.hash_secret_key_size;\n+\t\tmemcpy(rss_conf->rss_key, cfg->aq_rss.hash_secret_key,\n+\t\t       rss_conf->rss_key_len);\n+\t}\n+\n+\treturn 0;\n+}\n+\n RTE_PMD_REGISTER_PCI(net_atlantic, rte_atl_pmd);\n RTE_PMD_REGISTER_PCI_TABLE(net_atlantic, pci_id_atl_map);\n RTE_PMD_REGISTER_KMOD_DEP(net_atlantic, \"* igb_uio | uio_pci_generic\");\ndiff --git a/drivers/net/atlantic/atl_ethdev.h b/drivers/net/atlantic/atl_ethdev.h\nindex 17c8505e4707..69612a016089 100644\n--- a/drivers/net/atlantic/atl_ethdev.h\n+++ b/drivers/net/atlantic/atl_ethdev.h\n@@ -9,6 +9,17 @@\n #include \"atl_types.h\"\n #include \"hw_atl/hw_atl_utils.h\"\n \n+#define ATL_RSS_OFFLOAD_ALL ( \\\n+\tETH_RSS_IPV4 | \\\n+\tETH_RSS_NONFRAG_IPV4_TCP | \\\n+\tETH_RSS_NONFRAG_IPV4_UDP | \\\n+\tETH_RSS_IPV6 | \\\n+\tETH_RSS_NONFRAG_IPV6_TCP | \\\n+\tETH_RSS_NONFRAG_IPV6_UDP | \\\n+\tETH_RSS_IPV6_EX | \\\n+\tETH_RSS_IPV6_TCP_EX | \\\n+\tETH_RSS_IPV6_UDP_EX)\n+\n #define ATL_DEV_PRIVATE_TO_HW(adapter) \\\n \t(&((struct atl_adapter *)adapter)->hw)\n \n@@ -18,6 +29,9 @@\n #define ATL_DEV_PRIVATE_TO_INTR(adapter) \\\n \t(&((struct atl_adapter *)adapter)->intr)\n \n+#define ATL_DEV_PRIVATE_TO_CFG(adapter) \\\n+\t(&((struct atl_adapter *)adapter)->hw_cfg)\n+\n #define ATL_FLAG_NEED_LINK_UPDATE (uint32_t)(1 << 0)\n #define ATL_FLAG_NEED_LINK_CONFIG (uint32_t)(4 << 0)\n \ndiff --git a/drivers/net/atlantic/atl_rxtx.c b/drivers/net/atlantic/atl_rxtx.c\nindex ebb606fbcd7c..cac518c1a780 100644\n--- a/drivers/net/atlantic/atl_rxtx.c\n+++ b/drivers/net/atlantic/atl_rxtx.c\n@@ -321,6 +321,7 @@ int\n atl_rx_init(struct rte_eth_dev *eth_dev)\n {\n \tstruct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);\n+\tstruct aq_rss_parameters *rss_params = &hw->aq_nic_cfg->aq_rss;\n \tstruct atl_rx_queue *rxq;\n \tuint64_t base_addr = 0;\n \tint i = 0;\n@@ -358,6 +359,10 @@ atl_rx_init(struct rte_eth_dev *eth_dev)\n \t\t\t\t\t\trxq->port_id);\n \t}\n \n+\tfor (i = rss_params->indirection_table_size; i--;)\n+\t\trss_params->indirection_table[i] = i &\n+\t\t\t(eth_dev->data->nb_rx_queues - 1);\n+\thw_atl_b0_hw_rss_set(hw, rss_params);\n \treturn err;\n }\n \n",
    "prefixes": [
        "v3",
        "15/22"
    ]
}