get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 46683,
    "url": "http://patches.dpdk.org/api/patches/46683/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20181012100426.29349-5-shreyansh.jain@nxp.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": "<20181012100426.29349-5-shreyansh.jain@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20181012100426.29349-5-shreyansh.jain@nxp.com",
    "date": "2018-10-12T10:04:15",
    "name": "[v3,04/15] net/dpaa2: upgrade dpni to mc FW APIs to 10.10.0",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "9a1a062a0e7ea2ab74c22ae13541a044655ceca6",
    "submitter": {
        "id": 497,
        "url": "http://patches.dpdk.org/api/people/497/?format=api",
        "name": "Shreyansh Jain",
        "email": "shreyansh.jain@nxp.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20181012100426.29349-5-shreyansh.jain@nxp.com/mbox/",
    "series": [
        {
            "id": 1861,
            "url": "http://patches.dpdk.org/api/series/1861/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1861",
            "date": "2018-10-12T10:04:11",
            "name": "Upgrade DPAA2 FW and other feature/bug fixes",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/1861/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/46683/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/46683/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 CC5A31B499;\n\tFri, 12 Oct 2018 12:05:53 +0200 (CEST)",
            "from EUR02-AM5-obe.outbound.protection.outlook.com\n\t(mail-eopbgr00058.outbound.protection.outlook.com [40.107.0.58])\n\tby dpdk.org (Postfix) with ESMTP id F08B91B481\n\tfor <dev@dpdk.org>; Fri, 12 Oct 2018 12:05:47 +0200 (CEST)",
            "from Tophie.ap.freescale.net (14.142.187.166) by\n\tAM0PR04MB4676.eurprd04.prod.outlook.com (2603:10a6:208:75::18) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.1228.25; Fri, 12 Oct 2018 10:05:45 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=xvOIhLMwzMVBijrF9LB9GW/POPKZYN7Om2mEvIySQFc=;\n\tb=xSuER5zONFQxmQMLBMwHFiVSPEzRXYQHlyUs6jRxleYPmScFs+BbvxUVwNqWjPBqAxF0uD7GTF1Jy2qfHyFb1sEuLDIK3Ho0mVie2PIHxzqymdWskiBU7L4aLFr9C4sTKTq1QuC2BOkr3xDtoiwizVVcVWMCv80KPRDIepXFPeg=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=shreyansh.jain@nxp.com; ",
        "From": "Shreyansh Jain <shreyansh.jain@nxp.com>",
        "To": "thomas@monjalon.net",
        "Cc": "ferruh.yigit@intel.com, dev@dpdk.org,\n\tHemant Agrawal <hemant.agrawal@nxp.com>",
        "Date": "Fri, 12 Oct 2018 15:34:15 +0530",
        "Message-Id": "<20181012100426.29349-5-shreyansh.jain@nxp.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20181012100426.29349-1-shreyansh.jain@nxp.com>",
        "References": "<20180926180440.31726-1-shreyansh.jain@nxp.com>\n\t<20181012100426.29349-1-shreyansh.jain@nxp.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[14.142.187.166]",
        "X-ClientProxiedBy": "BMXPR01CA0004.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:b00:d::14) To AM0PR04MB4676.eurprd04.prod.outlook.com\n\t(2603:10a6:208:75::18)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "2888f251-3412-457f-b619-08d6302a4774",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);\n\tSRVR:AM0PR04MB4676; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; AM0PR04MB4676;\n\t3:SCwO2Lt/IWpbheayy3tfl1BUpSa1S6T0XtIlWq8b3ncJpemU9DTFHh0w7Gmsk/HX3rktMSEwXtnQV4U90FkVeeJnV3SU2HewZ75XA/H1ch6Ht11iexmWO91RvM2nxOaazLy+TLS6vsrNoy+n1IJ2Oj/0NDhTXDJ32o69+x6lO0c2aQ8vUdVmEjueHGZeJjvp8FJkp5zf3Tnmbe3kyTPGezrFV25crIBvL3dISKQAEibFL5jZ1UKud2vSd2XvELKT;\n\t25:pNUs5m9Ap/VEEbxqiIK77ik5ZEbjZLutFRyIBEgDSPR3EAEdXqADpWf9apCBRmaBc25aZpIqFAUL4oFxnHLNJlPDqmDM3eXzzGPaULTE5wIDj5L37lmF3MtkRXWBx6F3LiYAfS90c9l1mQPJaLTiXFiF368Qq1HeLVO7XkYQM97GBmWzvSu8NAeqSC+w0EIkq+A5VYhoSZkseeNsqODe7Ygeb+SRKiKA+VjmsV+rPfzoTNAqEOfNB/K7kr2UEanXE+JTs1gRx5lD18yChiapnsO9WELCegULPie6iWC49dYR+qXXksM6kl9NyuSyqNr41+PoK2jTNRu1bT7L1fiRLQ==;\n\t31:x55BkLOYXQai+K6jc4c/0lkaJ81PIdl6CTnZ4SBDZOA9DcOrESjykSFVjBb3D4AkWsnxQdRNTsDtpDPQYWrbk4KZX04MRiDvt/WBFpnaUDHp21ZBGFSxduZmcolum8xhoimDxU4BdLKBZkYfYOxqTMNhRgSXVt9vfWYZ3LadKXpZcFiBr7CYB1OLlvWtHv70400kwYULCqLOFavYCMBcWLm3o9UxvWI2GEMIiuKrbBo=",
            "1; AM0PR04MB4676;\n\t20:KENrxuu/EKmVoI+ZrKO2+KfCAMGqbiVIZ8gXvVCCBH1KkoMz9c+WvD1tKb9JpwZ0TLYt/KPAvvB8ddD07zv/N+9b7OhBKii2XSXPvA8u8mZr+I5ApwM2RUfEevaqpgWR7wQbFhWW07F4MB0FPfR/lVtweY41xXwpIENMCFgK/k6UB7GDFkjcfIt5zD7wZaEigg+wSAyIZ27Mh4tn/Pg4WBvh8y+lj+sh0ExF4/Yr2LoVXjq3aSf5E1alBqO7FvG9FO1nMjIblxwixo9VYSkekfVueZ4Z8ve1E56z/qI6m2ejW6My97nAdBl3dw8PWWPQI6dpSvLQzEKralsqaGvaVkRyp9PrmFrdloADEggBb99qFgFAgmq3hTFQQRQ5a8cucx2P1acIxzIz6ZnmOoWhRLU19vu2b0439N/v9USwHs6OB+ybJuQzqjzVYVevaa5zQmANXppOvAMR5H0kAhPsh31Y/UYidXk50S6ncSHtnUXm/s9989uTP9zpCxRjYSqK;\n\t4:JB6UPdxO/AHTESrsDZ/tsyIhaCUdeJDbA9l0q0GvKxjncYHTjtgAcp+TND7ao9i0196PKxmpay/YCbmIXlkKoiFwVLqS51qFC8vGH/Y31Yo96NYvr4zk0+Vhdp16vc2tms5vVK6+DxYIgH2z49Xsnqpenx9DpIogUQ1dNkda21PAmMPbWzvi4XT7x6nrACVzcp7WBd5XK1Hmjttn1YxmH0XO6Je8bDadNmCSrf1jtFLSU9G3CpEtADNXOOqm8ipiPbaejj1FU8tIduOZccJX4F6J0tZb/YRJ/PzKTPOet7WChG/NHTFAbNGh8LQ82x0UysYaRYOzgIVh/IhgWO8LTdSseEN16KdUhl6AIorkmu0=",
            "=?us-ascii?Q?1; AM0PR04MB4676;\n\t23:SHDwa4Cue7cGFvGjwbRhE+AxjXUJf4a50bLIQCFjH?=\n\t3T/UUKa/zgS2UECedfHaaP++KNK1Y5xKx/WpK5c1rSnodt8pDiUGfR0LA4p7jonvxbMAdvjMKS2HnhnYgWB6oFSczZsYJKN1WqutfZxzNJKqEqEG0RhzlmkyYOaam1jCl06WF6v0wEhBRbw2btpsoupGJtryFsLZ+S506kOtC0PA0nMN3sD9jvy4mtP8H3YgPuxeilj1NTRoSsFPaJ0IG5qXiIV2OKGKHsEtuSx6KpkscMlDbwk70XGEuF4v5X3fnoE5qFNThxWym4u1vaSpG+qVO1Zehb6zEuErwEgB9/aVXCc9Uw2/6d0DsLGS8bp2bEGVwSJCkyXnTf9jk/dzp//iLbpgaxKxPg7NnaksNNenyO+BjBw3heQmtC92HdFEwT0z556scNkbavcpBQ61oFttZpGrNjZBOl4Eaq2aX1tyRAoP/ekNff08wl2Yv/voM98D4bmdhkd86WDTGYKgv5Vh2bvVTf2bzJLdv0jP/y6iCzfrAfifNMuaw+HfURi6cZllx8b8N69IEJr1qdgB9KL5xdM08RUhU7R2Jh/W/JOjvTWdwiQz4EyE1thtYoqpjlK4iMczCSZzFQuKZbh3AeEHdo7DS8cIe0zBHBHHA5mCP70QBWcIe0fThJervxky1sIQyEkZWo+hdyplU80JIVJi4WxSW0w9n+zp682FY++9lwibuR9vnHqhvyugE1RXQl8V2oqsUVcVMO1tY6XYLkDxCbWEtxiicf0WCTJq5w7Gh+CyuPs8nK7RmgIWCvWLoAULGeqSZ/h6wWU3B9Xb6XN0azOKPhcek7MHCsI0yvObnc+GpasjrfubQBpmi4OeEJ0oARNdrfO1s2yeW1MN2eExJtZ/xkOoIWeYSwveez5GDWTfDwcdbVkdJdzG1AzeXDZLRP6P/IyO1nkN3cB92iDqVvY7B6Ae6ZhS1///pjtVu6STz3HchDJ7lxUPL222Lkg4D289bBRhBgT4cx4i1ha2JrRTOuDHdM7PvGcguWPpXjOPQVk39YiiYlyQyGFLZsQLSWQbUYi5nmr+15npoT5eAsvltzWzP9VmKeISofmUkLyhF3AwSu+RxIMo9hQTjcQ6zavEBuuPCWd4pE1mQbeu07n3RXI25DaTod1UKxG4E63gY8pO3FUENcA8auQ1meUO+yx6IDu7cjc1Kl2MTNK8TyTmYWiJhqLkP9BSTUMZPOcI38VBWhSaryqKTG+xQ0TC5fIO+LqJ6GplOgoHYNLyKimH0rZw1a5CWtKjH/OYYiB9tJqEoTauFgt5xDbsgWeP74adt1OHWYOYLy0p4cnJ6JR7eGC+HBtcSNa6pBnuw78aYo3Cnb9lyvTcGbtUxBWbPeC7zLhm7WAhoI9VCr5MVZqnFEIFAbmncee9/yXJg==",
            "1; AM0PR04MB4676;\n\t6:gsoWnbriNlLJZkuDwf6u0ms0x9FyDAI3x1wMPuuhGY45OTxYnuaV2EsCnB3qdBGmXbAWpU97Wxa2KmxnzlRbCKMf4gQjJMF+8ZUdLM4u3P82tLsULSDBKxqOI4eKdodWH8CBm5jHNYF3jYPRY/6Ak7G0OknCnYe8HFu/4op9rit9zBaHYqhzpC33qr3qu79iC/UyEXQt6lgDtpXrUOyFj9K9ov44KL1x2cv9x5yZhFD8zmqh5JKh/nOXW3uzN637sSEbLfgIHGNPU0ZZXGkO/sUV7VR1+RUL2Ppi9Kgh+fPIzOPK0KKobcvhPJGlvB8n3EcS7od2b+p6w8nIn9UMlqfj2qf9RgET2VV9ZQs1Fp8Wjkv9LKHHPpgxrDxtdlelI7U3LXgH277flHDCi8NHln0mzmLtBin6eLhIJ3GJW3tW0asfeMOxG1E8WXyCx6IpcpF1xN22qv4PQTJJ8Ubg0w==;\n\t5:A39HCyywJ4IC1lz4zdZSyTCDEEzXBVSnPww9kJafNKU35YJoYIBb7y2dkKzxyOdYf2ZVnF4ZlELFhfWjPgEPMs1cV5672RFRI0OfoIbbQ1pg4+qb+ymOY39OKqbPMh73m50/1Tbbnyfbyi1ojAjUOwlo+5YelRZd5KUW4KjEOpQ=;\n\t7:zgYwOPzFSPeIi0wtE9QtlkOYSs7yIMq3kBLyGxPFHCn8GMgHZQBSipddFfFC5F6ZeNoumRyIEmwL2xCWF0wkbxZHca96C6Xo8nAYneXh3pXU6T5IucxpEQAo+hdnkSalAZITI3VZSU15wurmSfTeAySVZCsPQfsiK5DBbKm1ISVS+x1bBfF21fL2gFc+JZ+Aq9BxVZDaB/S8oPq2dOUW539tRkT1fwMfL/JD5b/a+Xv/yZfMEIVmteERiRkQw3+/"
        ],
        "X-MS-TrafficTypeDiagnostic": "AM0PR04MB4676:",
        "X-Microsoft-Antispam-PRVS": "<AM0PR04MB4676B5E679D2A1004027B5E090E20@AM0PR04MB4676.eurprd04.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197)(275809806118684); ",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231355)(944501410)(52105095)(6055026)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051);\n\tSRVR:AM0PR04MB4676; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB4676; ",
        "X-Forefront-PRVS": "0823A5777B",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(376002)(396003)(346002)(366004)(136003)(39860400002)(199004)(189003)(2906002)(52116002)(16526019)(14444005)(53936002)(8676002)(478600001)(186003)(386003)(446003)(105586002)(7736002)(106356001)(6512007)(6116002)(86362001)(3846002)(575784001)(81156014)(50226002)(68736007)(1076002)(47776003)(5660300001)(6506007)(8936002)(78486009)(36756003)(316002)(26005)(66066001)(53946003)(6666004)(25786009)(55236004)(81166006)(11346002)(48376002)(76176011)(44832011)(2361001)(956004)(51416003)(2616005)(97736004)(1006002)(50466002)(4744004)(486006)(476003)(305945005)(16586007)(6916009)(4326008)(6486002)(2351001)(110426005)(579004);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB4676;\n\tH:Tophie.ap.freescale.net; FPR:; \n\tSPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; ",
        "Received-SPF": "None (protection.outlook.com: nxp.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "cMTkBfyCNugyIXRQT21OEb66riWb36ByaNRi7vaWxMccwqTxP1MWcg9LAz0eDKNpmrpYo/sBfdCW/RBstlP/T13o3abbwJqME65MXxtfaXMxCAUB54cFvjh29djxv66JvZGpidNbsWvYp+qgCcqwWlS5xfhYag7m5IasRZU7Q5YLbp9bZIdnONjEvVzkT6GlARUL/JLv0qmnbYcLq4WvJEtlunvG48hAIHi3tN7cRqfxsij2HzvxM9/Bzaai541CKUfzZvsJFRHZ/cjC/IFpxuYVs4XhD93MR6c61RGmQ40RF6Wk4HuFLZMkw0+ZLDbZDAORhsCwmrBFqoM8j5bY8EYXJ6ZYz5MzdJrFX9oNQvk=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "12 Oct 2018 10:05:45.5117\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "2888f251-3412-457f-b619-08d6302a4774",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "AM0PR04MB4676",
        "Subject": "[dpdk-dev] [PATCH v3 04/15] net/dpaa2: upgrade dpni to mc FW APIs\n\tto 10.10.0",
        "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": "From: Hemant Agrawal <hemant.agrawal@nxp.com>\n\nNew feature includes ordering support and link related\nenhancements\n\nSigned-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>\n---\n drivers/net/dpaa2/mc/dpni.c         | 134 +++++++++-\n drivers/net/dpaa2/mc/fsl_dpkg.h     |  71 ++----\n drivers/net/dpaa2/mc/fsl_dpni.h     | 378 ++++++++++++++++------------\n drivers/net/dpaa2/mc/fsl_dpni_cmd.h |  87 ++++++-\n drivers/net/dpaa2/mc/fsl_net.h      |   2 +-\n 5 files changed, 460 insertions(+), 212 deletions(-)",
    "diff": "diff --git a/drivers/net/dpaa2/mc/dpni.c b/drivers/net/dpaa2/mc/dpni.c\nindex 9f228169a..44b5604d3 100644\n--- a/drivers/net/dpaa2/mc/dpni.c\n+++ b/drivers/net/dpaa2/mc/dpni.c\n@@ -121,6 +121,7 @@ int dpni_create(struct fsl_mc_io *mc_io,\n \tcmd_params->num_queues = cfg->num_queues;\n \tcmd_params->num_tcs = cfg->num_tcs;\n \tcmd_params->mac_filter_entries = cfg->mac_filter_entries;\n+\tcmd_params->num_rx_tcs = cfg->num_rx_tcs;\n \tcmd_params->vlan_filter_entries =  cfg->vlan_filter_entries;\n \tcmd_params->qos_entries = cfg->qos_entries;\n \tcmd_params->fs_entries = cpu_to_le16(cfg->fs_entries);\n@@ -664,9 +665,14 @@ int dpni_get_buffer_layout(struct fsl_mc_io *mc_io,\n \n \t/* retrieve response parameters */\n \trsp_params = (struct dpni_rsp_get_buffer_layout *)cmd.params;\n-\tlayout->pass_timestamp = dpni_get_field(rsp_params->flags, PASS_TS);\n-\tlayout->pass_parser_result = dpni_get_field(rsp_params->flags, PASS_PR);\n-\tlayout->pass_frame_status = dpni_get_field(rsp_params->flags, PASS_FS);\n+\tlayout->pass_timestamp =\n+\t\t\t\t(int)dpni_get_field(rsp_params->flags, PASS_TS);\n+\tlayout->pass_parser_result =\n+\t\t\t\t(int)dpni_get_field(rsp_params->flags, PASS_PR);\n+\tlayout->pass_frame_status =\n+\t\t\t\t(int)dpni_get_field(rsp_params->flags, PASS_FS);\n+\tlayout->pass_sw_opaque =\n+\t\t\t(int)dpni_get_field(rsp_params->flags, PASS_SWO);\n \tlayout->private_data_size = le16_to_cpu(rsp_params->private_data_size);\n \tlayout->data_align = le16_to_cpu(rsp_params->data_align);\n \tlayout->data_head_room = le16_to_cpu(rsp_params->head_room);\n@@ -702,10 +708,11 @@ int dpni_set_buffer_layout(struct fsl_mc_io *mc_io,\n \t\t\t\t\t  token);\n \tcmd_params = (struct dpni_cmd_set_buffer_layout *)cmd.params;\n \tcmd_params->qtype = qtype;\n-\tcmd_params->options = cpu_to_le16(layout->options);\n+\tcmd_params->options = cpu_to_le16((uint16_t)layout->options);\n \tdpni_set_field(cmd_params->flags, PASS_TS, layout->pass_timestamp);\n \tdpni_set_field(cmd_params->flags, PASS_PR, layout->pass_parser_result);\n \tdpni_set_field(cmd_params->flags, PASS_FS, layout->pass_frame_status);\n+\tdpni_set_field(cmd_params->flags, PASS_SWO, layout->pass_sw_opaque);\n \tcmd_params->private_data_size = cpu_to_le16(layout->private_data_size);\n \tcmd_params->data_align = cpu_to_le16(layout->data_align);\n \tcmd_params->head_room = cpu_to_le16(layout->data_head_room);\n@@ -893,6 +900,7 @@ int dpni_set_link_cfg(struct fsl_mc_io *mc_io,\n \tcmd_params = (struct dpni_cmd_set_link_cfg *)cmd.params;\n \tcmd_params->rate = cpu_to_le32(cfg->rate);\n \tcmd_params->options = cpu_to_le64(cfg->options);\n+\tcmd_params->advertising = cpu_to_le64(cfg->advertising);\n \n \t/* send command to mc*/\n \treturn mc_send_command(mc_io, &cmd);\n@@ -929,8 +937,11 @@ int dpni_get_link_state(struct fsl_mc_io *mc_io,\n \t/* retrieve response parameters */\n \trsp_params = (struct dpni_rsp_get_link_state *)cmd.params;\n \tstate->up = dpni_get_field(rsp_params->flags, LINK_STATE);\n+\tstate->state_valid = dpni_get_field(rsp_params->flags, STATE_VALID);\n \tstate->rate = le32_to_cpu(rsp_params->rate);\n \tstate->options = le64_to_cpu(rsp_params->options);\n+\tstate->supported = le64_to_cpu(rsp_params->supported);\n+\tstate->advertising = le64_to_cpu(rsp_params->advertising);\n \n \treturn 0;\n }\n@@ -1471,6 +1482,9 @@ int dpni_set_rx_tc_dist(struct fsl_mc_io *mc_io,\n \tdpni_set_field(cmd_params->keep_hash_key,\n \t\t       KEEP_HASH_KEY,\n \t\t       cfg->fs_cfg.keep_hash_key);\n+\tdpni_set_field(cmd_params->keep_hash_key,\n+\t\t       KEEP_ENTRIES,\n+\t\t       cfg->fs_cfg.keep_entries);\n \n \t/* send command to mc*/\n \treturn mc_send_command(mc_io, &cmd);\n@@ -1764,8 +1778,8 @@ int dpni_get_queue(struct fsl_mc_io *mc_io,\n  * @cmd_flags:\tCommand flags; one or more of 'MC_CMD_FLAG_'\n  * @token:\tToken of DPNI object\n  * @page:\tSelects the statistics page to retrieve, see\n- *\t\tDPNI_GET_STATISTICS output. Pages are numbered 0 to 2.\n- * @param:  Custom parameter for some pages used to select\n+ *\t\tDPNI_GET_STATISTICS output. Pages are numbered 0 to 3.\n+ * @param:\tCustom parameter for some pages used to select\n  *\t\ta certain statistic source, for example the TC.\n  * @stat:\tStructure containing the statistics\n  *\n@@ -1941,3 +1955,111 @@ int dpni_get_taildrop(struct fsl_mc_io *mc_io,\n \n \treturn 0;\n }\n+\n+/**\n+ * dpni_set_opr() - Set Order Restoration configuration.\n+ * @mc_io:\tPointer to MC portal's I/O object\n+ * @cmd_flags:\tCommand flags; one or more of 'MC_CMD_FLAG_'\n+ * @token:\tToken of DPNI object\n+ * @tc:\t\tTraffic class, in range 0 to NUM_TCS - 1\n+ * @index:\tSelects the specific queue out of the set allocated\n+ *\t\t\tfor the same TC. Value must be in range 0 to\n+ *\t\t\tNUM_QUEUES - 1\n+ * @options:\tConfiguration mode options\n+ *\t\t\tcan be OPR_OPT_CREATE or OPR_OPT_RETIRE\n+ * @cfg:\tConfiguration options for the OPR\n+ *\n+ * Return:\t'0' on Success; Error code otherwise.\n+ */\n+int dpni_set_opr(struct fsl_mc_io *mc_io,\n+\t\t uint32_t cmd_flags,\n+\t\t uint16_t token,\n+\t\t uint8_t tc,\n+\t\t uint8_t index,\n+\t\t uint8_t options,\n+\t\t struct opr_cfg *cfg)\n+{\n+\tstruct dpni_cmd_set_opr *cmd_params;\n+\tstruct mc_command cmd = { 0 };\n+\n+\t/* prepare command */\n+\tcmd.header = mc_encode_cmd_header(\n+\t\t\tDPNI_CMDID_SET_OPR,\n+\t\t\tcmd_flags,\n+\t\t\ttoken);\n+\tcmd_params = (struct dpni_cmd_set_opr *)cmd.params;\n+\tcmd_params->tc_id = tc;\n+\tcmd_params->index = index;\n+\tcmd_params->options = options;\n+\tcmd_params->oloe = cfg->oloe;\n+\tcmd_params->oeane = cfg->oeane;\n+\tcmd_params->olws = cfg->olws;\n+\tcmd_params->oa = cfg->oa;\n+\tcmd_params->oprrws = cfg->oprrws;\n+\n+\t/* send command to mc*/\n+\treturn mc_send_command(mc_io, &cmd);\n+}\n+\n+/**\n+ * dpni_get_opr() - Retrieve Order Restoration config and query.\n+ * @mc_io:\tPointer to MC portal's I/O object\n+ * @cmd_flags:\tCommand flags; one or more of 'MC_CMD_FLAG_'\n+ * @token:\tToken of DPNI object\n+ * @tc:\t\tTraffic class, in range 0 to NUM_TCS - 1\n+ * @index:\tSelects the specific queue out of the set allocated\n+ *\t\t\tfor the same TC. Value must be in range 0 to\n+ *\t\t\tNUM_QUEUES - 1\n+ * @cfg:\tReturned OPR configuration\n+ * @qry:\tReturned OPR query\n+ *\n+ * Return:\t'0' on Success; Error code otherwise.\n+ */\n+int dpni_get_opr(struct fsl_mc_io *mc_io,\n+\t\t uint32_t cmd_flags,\n+\t\t uint16_t token,\n+\t\t uint8_t tc,\n+\t\t uint8_t index,\n+\t\t struct opr_cfg *cfg,\n+\t\t struct opr_qry *qry)\n+{\n+\tstruct dpni_rsp_get_opr *rsp_params;\n+\tstruct dpni_cmd_get_opr *cmd_params;\n+\tstruct mc_command cmd = { 0 };\n+\tint err;\n+\n+\t/* prepare command */\n+\tcmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_OPR,\n+\t\t\t\t\t  cmd_flags,\n+\t\t\t\t\t  token);\n+\tcmd_params = (struct dpni_cmd_get_opr *)cmd.params;\n+\tcmd_params->index = index;\n+\tcmd_params->tc_id = tc;\n+\n+\t/* send command to mc*/\n+\terr = mc_send_command(mc_io, &cmd);\n+\tif (err)\n+\t\treturn err;\n+\n+\t/* retrieve response parameters */\n+\trsp_params = (struct dpni_rsp_get_opr *)cmd.params;\n+\tcfg->oloe = rsp_params->oloe;\n+\tcfg->oeane = rsp_params->oeane;\n+\tcfg->olws = rsp_params->olws;\n+\tcfg->oa = rsp_params->oa;\n+\tcfg->oprrws = rsp_params->oprrws;\n+\tqry->rip = dpni_get_field(rsp_params->flags, RIP);\n+\tqry->enable = dpni_get_field(rsp_params->flags, OPR_ENABLE);\n+\tqry->nesn = le16_to_cpu(rsp_params->nesn);\n+\tqry->ndsn = le16_to_cpu(rsp_params->ndsn);\n+\tqry->ea_tseq = le16_to_cpu(rsp_params->ea_tseq);\n+\tqry->tseq_nlis = dpni_get_field(rsp_params->tseq_nlis, TSEQ_NLIS);\n+\tqry->ea_hseq = le16_to_cpu(rsp_params->ea_hseq);\n+\tqry->hseq_nlis = dpni_get_field(rsp_params->hseq_nlis, HSEQ_NLIS);\n+\tqry->ea_hptr = le16_to_cpu(rsp_params->ea_hptr);\n+\tqry->ea_tptr = le16_to_cpu(rsp_params->ea_tptr);\n+\tqry->opr_vid = le16_to_cpu(rsp_params->opr_vid);\n+\tqry->opr_id = le16_to_cpu(rsp_params->opr_id);\n+\n+\treturn 0;\n+}\ndiff --git a/drivers/net/dpaa2/mc/fsl_dpkg.h b/drivers/net/dpaa2/mc/fsl_dpkg.h\nindex 4de70f307..02fe8d50e 100644\n--- a/drivers/net/dpaa2/mc/fsl_dpkg.h\n+++ b/drivers/net/dpaa2/mc/fsl_dpkg.h\n@@ -71,45 +71,41 @@ struct dpkg_mask {\n /**\n  * struct dpkg_extract - A structure for defining a single extraction\n  * @type: Determines how the union below is interpreted:\n- *\t\tDPKG_EXTRACT_FROM_HDR: selects 'from_hdr';\n- *\t\tDPKG_EXTRACT_FROM_DATA: selects 'from_data';\n- *\t\tDPKG_EXTRACT_FROM_PARSE: selects 'from_parse'\n+ *\tDPKG_EXTRACT_FROM_HDR: selects 'from_hdr';\n+ *\tDPKG_EXTRACT_FROM_DATA: selects 'from_data';\n+ *\tDPKG_EXTRACT_FROM_PARSE: selects 'from_parse'\n  * @extract: Selects extraction method\n+ * @extract.from_hdr: Used when 'type = DPKG_EXTRACT_FROM_HDR'\n+ * @extract.from_data: Used when 'type = DPKG_EXTRACT_FROM_DATA'\n+ * @extract.from_parse:  Used when 'type = DPKG_EXTRACT_FROM_PARSE'\n+ * @extract.from_hdr.prot: Any of the supported headers\n+ * @extract.from_hdr.type: Defines the type of header extraction:\n+ *\tDPKG_FROM_HDR: use size & offset below;\n+ *\tDPKG_FROM_FIELD: use field, size and offset below;\n+ *\tDPKG_FULL_FIELD: use field below\n+ * @extract.from_hdr.field: One of the supported fields (NH_FLD_)\n+ * @extract.from_hdr.size: Size in bytes\n+ * @extract.from_hdr.offset: Byte offset\n+ * @extract.from_hdr.hdr_index: Clear for cases not listed below;\n+ *\tUsed for protocols that may have more than a single\n+ *\theader, 0 indicates an outer header;\n+ *\tSupported protocols (possible values):\n+ *\tNET_PROT_VLAN (0, HDR_INDEX_LAST);\n+ *\tNET_PROT_MPLS (0, 1, HDR_INDEX_LAST);\n+ *\tNET_PROT_IP(0, HDR_INDEX_LAST);\n+ *\tNET_PROT_IPv4(0, HDR_INDEX_LAST);\n+ *\tNET_PROT_IPv6(0, HDR_INDEX_LAST);\n+ * @extract.from_data.size: Size in bytes\n+ * @extract.from_data.offset: Byte offset\n+ * @extract.from_parse.size: Size in bytes\n+ * @extract.from_parse.offset: Byte offset\n  * @num_of_byte_masks: Defines the number of valid entries in the array below;\n  *\t\tThis is\talso the number of bytes to be used as masks\n  * @masks: Masks parameters\n  */\n struct dpkg_extract {\n \tenum dpkg_extract_type type;\n-\t/**\n-\t * union extract - Selects extraction method\n-\t * @from_hdr - Used when 'type = DPKG_EXTRACT_FROM_HDR'\n-\t * @from_data - Used when 'type = DPKG_EXTRACT_FROM_DATA'\n-\t * @from_parse - Used when 'type = DPKG_EXTRACT_FROM_PARSE'\n-\t */\n \tunion {\n-\t\t/**\n-\t\t * struct from_hdr - Used when 'type = DPKG_EXTRACT_FROM_HDR'\n-\t\t * @prot: Any of the supported headers\n-\t\t * @type: Defines the type of header extraction:\n-\t\t *\tDPKG_FROM_HDR: use size & offset below;\n-\t\t *\tDPKG_FROM_FIELD: use field, size and offset below;\n-\t\t *\tDPKG_FULL_FIELD: use field below\n-\t\t * @field: One of the supported fields (NH_FLD_)\n-\t\t *\n-\t\t * @size: Size in bytes\n-\t\t * @offset: Byte offset\n-\t\t * @hdr_index: Clear for cases not listed below;\n-\t\t *\tUsed for protocols that may have more than a single\n-\t\t *\theader, 0 indicates an outer header;\n-\t\t *\tSupported protocols (possible values):\n-\t\t *\tNET_PROT_VLAN (0, HDR_INDEX_LAST);\n-\t\t *\tNET_PROT_MPLS (0, 1, HDR_INDEX_LAST);\n-\t\t *\tNET_PROT_IP(0, HDR_INDEX_LAST);\n-\t\t *\tNET_PROT_IPv4(0, HDR_INDEX_LAST);\n-\t\t *\tNET_PROT_IPv6(0, HDR_INDEX_LAST);\n-\t\t */\n-\n \t\tstruct {\n \t\t\tenum net_prot prot;\n \t\t\tenum dpkg_extract_from_hdr_type type;\n@@ -118,23 +114,10 @@ struct dpkg_extract {\n \t\t\tuint8_t offset;\n \t\t\tuint8_t hdr_index;\n \t\t} from_hdr;\n-\t\t/**\n-\t\t * struct from_data\n-\t\t *\tUsed when 'type = DPKG_EXTRACT_FROM_DATA'\n-\t\t * @size: Size in bytes\n-\t\t * @offset: Byte offset\n-\t\t */\n \t\tstruct {\n \t\t\tuint8_t size;\n \t\t\tuint8_t offset;\n \t\t} from_data;\n-\n-\t\t/**\n-\t\t * struct from_parse\n-\t\t *\tUsed when 'type = DPKG_EXTRACT_FROM_PARSE'\n-\t\t * @size: Size in bytes\n-\t\t * @offset: Byte offset\n-\t\t */\n \t\tstruct {\n \t\t\tuint8_t size;\n \t\t\tuint8_t offset;\ndiff --git a/drivers/net/dpaa2/mc/fsl_dpni.h b/drivers/net/dpaa2/mc/fsl_dpni.h\nindex f0edcd270..de1bcb5bf 100644\n--- a/drivers/net/dpaa2/mc/fsl_dpni.h\n+++ b/drivers/net/dpaa2/mc/fsl_dpni.h\n@@ -8,6 +8,7 @@\n #define __FSL_DPNI_H\n \n #include <fsl_dpkg.h>\n+#include <fsl_dpopr.h>\n \n struct fsl_mc_io;\n \n@@ -77,6 +78,20 @@ struct fsl_mc_io;\n  */\n #define DPNI_OPT_NO_FS\t\t\t\t0x000020\n \n+/**\n+ * Enable the Order Restoration support\n+ */\n+#define DPNI_OPT_HAS_OPR\t\t\t\t0x000040\n+\n+/**\n+ * Order Point Records are shared for the entire TC\n+ */\n+#define DPNI_OPT_OPR_PER_TC\t\t\t\t0x000080\n+/**\n+ * All Tx traffic classes will use a single sender (ignore num_queueus for tx)\n+ */\n+#define DPNI_OPT_SINGLE_SENDER\t\t\t0x000100\n+\n int dpni_open(struct fsl_mc_io *mc_io,\n \t      uint32_t cmd_flags,\n \t      int dpni_id,\n@@ -88,71 +103,74 @@ int dpni_close(struct fsl_mc_io *mc_io,\n \n /**\n  * struct dpni_cfg - Structure representing DPNI configuration\n- * @mac_addr:\tPrimary MAC address\n- * @adv:\tAdvanced parameters; default is all zeros;\n- *\t\tuse this structure to change default settings\n+ * @options: Any combination of the following options:\n+ *\t\tDPNI_OPT_TX_FRM_RELEASE\n+ *\t\tDPNI_OPT_NO_MAC_FILTER\n+ *\t\tDPNI_OPT_HAS_POLICING\n+ *\t\tDPNI_OPT_SHARED_CONGESTION\n+ *\t\tDPNI_OPT_HAS_KEY_MASKING\n+ *\t\tDPNI_OPT_NO_FS\n+ *\t\tDPNI_OPT_SINGLE_SENDER\n+ * @fs_entries: Number of entries in the flow steering table.\n+ *\t\tThis table is used to select the ingress queue for\n+ *\t\tingress traffic, targeting a GPP core or another.\n+ *\t\tIn addition it can be used to discard traffic that\n+ *\t\tmatches the set rule. It is either an exact match table\n+ *\t\tor a TCAM table, depending on DPNI_OPT_ HAS_KEY_MASKING\n+ *\t\tbit in OPTIONS field. This field is ignored if\n+ *\t\tDPNI_OPT_NO_FS bit is set in OPTIONS field. Otherwise,\n+ *\t\tvalue 0 defaults to 64. Maximum supported value is 1024.\n+ *\t\tNote that the total number of entries is limited on the\n+ *\t\tSoC to as low as 512 entries if TCAM is used.\n+ * @vlan_filter_entries: Number of entries in the VLAN address filtering\n+ *\t\ttable. This is an exact match table used to filter\n+ *\t\tingress traffic based on VLAN IDs. Value 0 disables VLAN\n+ *\t\tfiltering. Maximum supported value is 16.\n+ * @mac_filter_entries: Number of entries in the MAC address filtering\n+ *\t\ttable. This is an exact match table and allows both\n+ *\t\tunicast and multicast entries. The primary MAC address\n+ *\t\tof the network interface is not part of this table,\n+ *\t\tthis contains only entries in addition to it. This\n+ *\t\tfield is ignored if DPNI_OPT_ NO_MAC_FILTER is set in\n+ *\t\tOPTIONS field. Otherwise, value 0 defaults to 80.\n+ *\t\tMaximum supported value is 80.\n+ * @num_queues: Number of Tx and Rx queues used for traffic\n+ *\t\tdistribution. This is orthogonal to QoS and is only\n+ *\t\tused to distribute traffic to multiple GPP cores.\n+ *\t\tThis configuration affects the number of Tx queues\n+ *\t\t(logical FQs, all associated with a single CEETM queue),\n+ *\t\tRx queues and Tx confirmation queues, if applicable.\n+ *\t\tValue 0 defaults to one queue. Maximum supported value\n+ *\t\tis 8.\n+ * @num_tcs: Number of traffic classes (TCs), reserved for the DPNI.\n+ *\t\tTCs can have different priority levels for the purpose\n+ *\t\tof Tx scheduling (see DPNI_SET_TX_PRIORITIES), different\n+ *\t\tBPs (DPNI_ SET_POOLS), policers. There are dedicated QM\n+ *\t\tqueues for traffic classes (including class queues on\n+ *\t\tTx). Value 0 defaults to one TC. Maximum supported value\n+ *\t\tis 16. There are maximum 16 TCs for Tx and 8 TCs for Rx.\n+ *\t\tWhen num_tcs>8 Tx will use this value but Rx will have\n+ *\t\tonly 8 traffic classes.\n+ * @num_rx_tcs: if set to other value than zero represents number\n+ *\t\tof TCs used for Rx. Maximum value is 8. If set to zero the\n+ *\t\tnumber of Rx TCs will be initialized with the value provided\n+ *\t\tin num_tcs parameter.\n+ * @qos_entries: Number of entries in the QoS classification table. This\n+ *\t\ttable is used to select the TC for ingress traffic. It\n+ *\t\tis either an exact match or a TCAM table, depending on\n+ *\t\tDPNI_OPT_ HAS_KEY_MASKING bit in OPTIONS field. This\n+ *\t\tfield is ignored if the DPNI has a single TC. Otherwise,\n+ *\t\ta value of 0 defaults to 64. Maximum supported value\n+ *\t\tis 64.\n  */\n struct dpni_cfg {\n-\t/**\n-\t * @options: Any combination of the following options:\n-\t *\t\tDPNI_OPT_TX_FRM_RELEASE\n-\t *\t\tDPNI_OPT_NO_MAC_FILTER\n-\t *\t\tDPNI_OPT_HAS_POLICING\n-\t *\t\tDPNI_OPT_SHARED_CONGESTION\n-\t *\t\tDPNI_OPT_HAS_KEY_MASKING\n-\t *\t\tDPNI_OPT_NO_FS\n-\t * @fs_entries: Number of entries in the flow steering table.\n-\t *\t\tThis table is used to select the ingress queue for\n-\t *\t\tingress traffic, targeting a GPP core or another.\n-\t *\t\tIn addition it can be used to discard traffic that\n-\t *\t\tmatches the set rule. It is either an exact match table\n-\t *\t\tor a TCAM table, depending on DPNI_OPT_ HAS_KEY_MASKING\n-\t *\t\tbit in OPTIONS field. This field is ignored if\n-\t *\t\tDPNI_OPT_NO_FS bit is set in OPTIONS field. Otherwise,\n-\t *\t\tvalue 0 defaults to 64. Maximum supported value is 1024.\n-\t *\t\tNote that the total number of entries is limited on the\n-\t *\t\tSoC to as low as 512 entries if TCAM is used.\n-\t * @vlan_filter_entries: Number of entries in the VLAN address filtering\n-\t *\t\ttable. This is an exact match table used to filter\n-\t *\t\tingress traffic based on VLAN IDs. Value 0 disables VLAN\n-\t *\t\tfiltering. Maximum supported value is 16.\n-\t * @mac_filter_entries: Number of entries in the MAC address filtering\n-\t *\t\ttable. This is an exact match table and allows both\n-\t *\t\tunicast and multicast entries. The primary MAC address\n-\t *\t\tof the network interface is not part of this table,\n-\t *\t\tthis contains only entries in addition to it. This\n-\t *\t\tfield is ignored if DPNI_OPT_ NO_MAC_FILTER is set in\n-\t *\t\tOPTIONS field. Otherwise, value 0 defaults to 80.\n-\t *\t\tMaximum supported value is 80.\n-\t * @num_queues: Number of Tx and Rx queues used for traffic\n-\t *\t\tdistribution. This is orthogonal to QoS and is only\n-\t *\t\tused to distribute traffic to multiple GPP cores.\n-\t *\t\tThis configuration affects the number of Tx queues\n-\t *\t\t(logical FQs, all associated with a single CEETM queue),\n-\t *\t\tRx queues and Tx confirmation queues, if applicable.\n-\t *\t\tValue 0 defaults to one queue. Maximum supported value\n-\t *\t\tis 8.\n-\t * @num_tcs: Number of traffic classes (TCs), reserved for the DPNI.\n-\t *\t\tTCs can have different priority levels for the purpose\n-\t *\t\tof Tx scheduling (see DPNI_SET_TX_SELECTION), different\n-\t *\t\tBPs (DPNI_ SET_POOLS), policers. There are dedicated QM\n-\t *\t\tqueues for traffic classes (including class queues on\n-\t *\t\tTx). Value 0 defaults to one TC. Maximum supported value\n-\t *\t\tis 8.\n-\t * @qos_entries: Number of entries in the QoS classification table. This\n-\t *\t\ttable is used to select the TC for ingress traffic. It\n-\t *\t\tis either an exact match or a TCAM table, depending on\n-\t *\t\tDPNI_OPT_ HAS_KEY_MASKING bit in OPTIONS field. This\n-\t *\t\tfield is ignored if the DPNI has a single TC. Otherwise,\n-\t *\t\ta value of 0 defaults to 64. Maximum supported value\n-\t *\t\tis 64.\n-\t */\n \tuint32_t options;\n \tuint16_t fs_entries;\n \tuint8_t  vlan_filter_entries;\n \tuint8_t  mac_filter_entries;\n \tuint8_t  num_queues;\n \tuint8_t  num_tcs;\n+\tuint8_t  num_rx_tcs;\n \tuint8_t  qos_entries;\n };\n \n@@ -172,17 +190,14 @@ int dpni_destroy(struct fsl_mc_io *mc_io,\n  * @num_dpbp:\tNumber of DPBPs\n  * @pools:\tArray of buffer pools parameters; The number of valid entries\n  *\t\tmust match 'num_dpbp' value\n+ * @pools.dpbp_id:     DPBP object ID\n+ * @pools.priority:    Priority mask that indicates TC's used with this buffer.\n+ *\t\t       I set to 0x00 MC will assume value 0xff.\n+ * @pools.buffer_size: Buffer size\n+ * @pools.backup_pool: Backup pool\n  */\n struct dpni_pools_cfg {\n \tuint8_t num_dpbp;\n-\t/**\n-\t * struct pools - Buffer pools parameters\n-\t * @dpbp_id: DPBP object ID\n-\t * @priority: priority mask that indicates TC's used with this buffer.\n-\t * I set to 0x00 MC will assume value 0xff.\n-\t * @buffer_size: Buffer size\n-\t * @backup_pool: Backup pool\n-\t */\n \tstruct {\n \t\tint\t\tdpbp_id;\n \t\tuint8_t\t\tpriority_mask;\n@@ -296,6 +311,8 @@ int dpni_clear_irq_status(struct fsl_mc_io *mc_io,\n  *\t\t\tvariants,\n  *\t\t\t- 0x422 - WRIOP version 1.1.2, used on LS1088 and\n  *\t\t\tvariants.\n+ *\t\t\t- 0xC00 - WRIOP version 3.0.0, used on LX2160 and\n+ *\t\t\tvariants.\n  */\n struct dpni_attr {\n \tuint32_t options;\n@@ -320,6 +337,13 @@ int dpni_get_attributes(struct fsl_mc_io *mc_io,\n  * DPNI errors\n  */\n \n+/**\n+ * Discard error. When set all discarded frames in wriop will be enqueued to\n+ * error queue. To be used in dpni_set_errors_behavior() only if error_action\n+ * parameter is set to DPNI_ERROR_ACTION_SEND_TO_ERROR_QUEUE.\n+ */\n+#define DPNI_ERROR_DISC\t\t0x80000000\n+\n /**\n  * Extract out of frame header error\n  */\n@@ -408,6 +432,10 @@ int dpni_set_errors_behavior(struct fsl_mc_io *mc_io,\n  * Select to modify the data-tail-room setting\n  */\n #define DPNI_BUF_LAYOUT_OPT_DATA_TAIL_ROOM\t0x00000040\n+/**\n+ * Select to modify the sw-opaque value setting\n+ */\n+#define DPNI_BUF_LAYOUT_OPT_SW_OPAQUE\t\t0x00000080\n \n /**\n  * struct dpni_buffer_layout - Structure representing DPNI buffer layout\n@@ -427,6 +455,7 @@ struct dpni_buffer_layout {\n \tint pass_timestamp;\n \tint pass_parser_result;\n \tint pass_frame_status;\n+\tint pass_sw_opaque;\n \tuint16_t private_data_size;\n \tuint16_t data_align;\n \tuint16_t data_head_room;\n@@ -501,16 +530,48 @@ int dpni_get_tx_data_offset(struct fsl_mc_io *mc_io,\n \n #define DPNI_STATISTICS_CNT\t\t7\n \n+/**\n+ * union dpni_statistics - Union describing the DPNI statistics\n+ * @page_0: Page_0 statistics structure\n+ * @page_0.ingress_all_frames: Ingress frame count\n+ * @page_0.ingress_all_bytes: Ingress byte count\n+ * @page_0.ingress_multicast_frames: Ingress multicast frame count\n+ * @page_0.ingress_multicast_bytes: Ingress multicast byte count\n+ * @page_0.ingress_broadcast_frames: Ingress broadcast frame count\n+ * @page_0.ingress_broadcast_bytes: Ingress broadcast byte count\n+ * @page_1: Page_1 statistics structure\n+ * @page_1.egress_all_frames: Egress frame count\n+ * @page_1.egress_all_bytes: Egress byte count\n+ * @page_1.egress_multicast_frames: Egress multicast frame count\n+ * @page_1.egress_multicast_bytes: Egress multicast byte count\n+ * @page_1.egress_broadcast_frames: Egress broadcast frame count\n+ * @page_1.egress_broadcast_bytes: Egress broadcast byte count\n+ * @page_2: Page_2 statistics structure\n+ * @page_2.ingress_filtered_frames: Ingress filtered frame count\n+ * @page_2.ingress_discarded_frames: Ingress discarded frame count\n+ * @page_2.ingress_nobuffer_discards: Ingress discarded frame count due to\n+ *\tlack of buffers\n+ * @page_2.egress_discarded_frames: Egress discarded frame count\n+ * @page_2.egress_confirmed_frames: Egress confirmed frame count\n+ * @page_3: Page_3 statistics structure with values for the selected TC\n+ * @page_3.ceetm_dequeue_bytes: Cumulative count of the number of bytes dequeued\n+ * @page_3.ceetm_dequeue_frames: Cumulative count of the number of frames\n+ *\tdequeued\n+ * @page_3.ceetm_reject_bytes: Cumulative count of the number of bytes in all\n+ *\tframes whose enqueue was rejected\n+ * @page_3.ceetm_reject_frames: Cumulative count of all frame enqueues rejected\n+ * @page_4: congestion point drops for seleted TC\n+ * @page_4.cgr_reject_frames: number of rejected frames due to congestion point\n+ * @page_4.cgr_reject_bytes: number of rejected bytes due to congestion point\n+ * @page_5: policer statistics per TC\n+ * @page_5.policer_cnt_red: NUmber of red colored frames\n+ * @page_5.policer_cnt_yellow: number of yellow colored frames\n+ * @page_5.policer_cnt_green: number of green colored frames\n+ * @page_5.policer_cnt_re_red: number of recolored red frames\n+ * @page_5.policer_cnt_re_yellow: number of recolored yellow frames\n+ * @raw: raw statistics structure, used to index counters\n+ */\n union dpni_statistics {\n-\t/**\n-\t * struct page_0 - Page_0 statistics structure\n-\t * @ingress_all_frames: Ingress frame count\n-\t * @ingress_all_bytes: Ingress byte count\n-\t * @ingress_multicast_frames: Ingress multicast frame count\n-\t * @ingress_multicast_bytes: Ingress multicast byte count\n-\t * @ingress_broadcast_frames: Ingress broadcast frame count\n-\t * @ingress_broadcast_bytes: Ingress broadcast byte count\n-\t */\n \tstruct {\n \t\tuint64_t ingress_all_frames;\n \t\tuint64_t ingress_all_bytes;\n@@ -519,15 +580,6 @@ union dpni_statistics {\n \t\tuint64_t ingress_broadcast_frames;\n \t\tuint64_t ingress_broadcast_bytes;\n \t} page_0;\n-\t/**\n-\t * struct page_1 - Page_1 statistics structure\n-\t * @egress_all_frames: Egress frame count\n-\t * @egress_all_bytes: Egress byte count\n-\t * @egress_multicast_frames: Egress multicast frame count\n-\t * @egress_multicast_bytes: Egress multicast byte count\n-\t * @egress_broadcast_frames: Egress broadcast frame count\n-\t * @egress_broadcast_bytes: Egress broadcast byte count\n-\t */\n \tstruct {\n \t\tuint64_t egress_all_frames;\n \t\tuint64_t egress_all_bytes;\n@@ -536,15 +588,6 @@ union dpni_statistics {\n \t\tuint64_t egress_broadcast_frames;\n \t\tuint64_t egress_broadcast_bytes;\n \t} page_1;\n-\t/**\n-\t * struct page_2 - Page_2 statistics structure\n-\t * @ingress_filtered_frames: Ingress filtered frame count\n-\t * @ingress_discarded_frames: Ingress discarded frame count\n-\t * @ingress_nobuffer_discards: Ingress discarded frame count due to\n-\t *\t\t\t\t\tlack of buffers\n-\t * @egress_discarded_frames: Egress discarded frame count\n-\t * @egress_confirmed_frames: Egress confirmed frame count\n-\t */\n \tstruct {\n \t\tuint64_t ingress_filtered_frames;\n \t\tuint64_t ingress_discarded_frames;\n@@ -552,26 +595,23 @@ union dpni_statistics {\n \t\tuint64_t egress_discarded_frames;\n \t\tuint64_t egress_confirmed_frames;\n \t} page_2;\n-\t/**\n-\t * struct page_3 - Page_3 statistics structure with values for the\n-\t *\t\t\tselected TC\n-\t * @ceetm_dequeue_bytes: Cumulative count of the number of bytes\n-\t *\t\t\tdequeued\n-\t * @ceetm_dequeue_frames: Cumulative count of the number of frames\n-\t *\t\t\tdequeued\n-\t * @ceetm_reject_bytes: Cumulative count of the number of bytes in all\n-\t *\t\t\tframes whose enqueue was rejected\n-\t * @ceetm_reject_frames: Cumulative count of all frame enqueues rejected\n-\t */\n \tstruct {\n \t\tuint64_t ceetm_dequeue_bytes;\n \t\tuint64_t ceetm_dequeue_frames;\n \t\tuint64_t ceetm_reject_bytes;\n \t\tuint64_t ceetm_reject_frames;\n \t} page_3;\n-\t/**\n-\t * struct raw - raw statistics structure, used to index counters\n-\t */\n+\tstruct {\n+\t\tuint64_t cgr_reject_frames;\n+\t\tuint64_t cgr_reject_bytes;\n+\t} page_4;\n+\tstruct {\n+\t\tuint64_t policer_cnt_red;\n+\t\tuint64_t policer_cnt_yellow;\n+\t\tuint64_t policer_cnt_green;\n+\t\tuint64_t policer_cnt_re_red;\n+\t\tuint64_t policer_cnt_re_yellow;\n+\t} page_5;\n \tstruct {\n \t\tuint64_t counter[DPNI_STATISTICS_CNT];\n \t} raw;\n@@ -602,10 +642,12 @@ union dpni_statistics {\n  * struct - Structure representing DPNI link configuration\n  * @rate: Rate\n  * @options: Mask of available options; use 'DPNI_LINK_OPT_<X>' values\n+ * @advertising: Speeds that are advertised for autoneg (bitmap)\n  */\n struct dpni_link_cfg {\n \tuint32_t rate;\n \tuint64_t options;\n+\tuint64_t advertising;\n };\n \n int dpni_set_link_cfg(struct fsl_mc_io *mc_io,\n@@ -618,11 +660,17 @@ int dpni_set_link_cfg(struct fsl_mc_io *mc_io,\n  * @rate:\tRate\n  * @options:\tMask of available options; use 'DPNI_LINK_OPT_<X>' values\n  * @up:\t\tLink state; '0' for down, '1' for up\n+ * @state_valid: Ignore/Update the state of the link\n+ * @supported: Speeds capability of the phy (bitmap)\n+ * @advertising: Speeds that are advertised for autoneg (bitmap)\n  */\n struct dpni_link_state {\n \tuint32_t rate;\n \tuint64_t options;\n \tint up;\n+\tint     state_valid;\n+\tuint64_t supported;\n+\tuint64_t advertising;\n };\n \n int dpni_get_link_state(struct fsl_mc_io *mc_io,\n@@ -750,11 +798,20 @@ enum dpni_fs_miss_action {\n  * struct dpni_fs_tbl_cfg - Flow Steering table configuration\n  * @miss_action:\tMiss action selection\n  * @default_flow_id:\tUsed when 'miss_action = DPNI_FS_MISS_EXPLICIT_FLOWID'\n+ * @keep_hash_key: used only when miss_action is set to DPNI_FS_MISS_HASH. When\n+ *\tset to one unclassified frames will be distributed according to previous\n+ *\tused hash key. If set to zero hash key will be replaced with the key\n+ *\tprovided for flow steering.\n+ * @keep_entries: if set to one command will not delete the entries that already\n+ *\texist into FS table. Use this option with caution: if the table\n+ *\tentries\tare not compatible with the distribution key the packets\n+ *\twill not be classified properly.\n  */\n struct dpni_fs_tbl_cfg {\n \tenum dpni_fs_miss_action miss_action;\n \tuint16_t default_flow_id;\n \tchar keep_hash_key;\n+\tuint8_t keep_entries;\n };\n \n /**\n@@ -915,34 +972,52 @@ int dpni_get_congestion_notification(struct fsl_mc_io *mc_io,\n \n /**\n  * struct dpni_queue - Queue structure\n- * @user_context:\tUser data, presented to the user along with any frames\n- *\t\t\tfrom this queue. Not relevant for Tx queues.\n+ * @destination - Destination structure\n+ * @destination.id: ID of the destination, only relevant if DEST_TYPE is > 0.\n+ *\tIdentifies either a DPIO or a DPCON object.\n+ *\tNot relevant for Tx queues.\n+ * @destination.type:\tMay be one of the following:\n+ *\t0 - No destination, queue can be manually\n+ *\t\tqueried, but will not push traffic or\n+ *\t\tnotifications to a DPIO;\n+ *\t1 - The destination is a DPIO. When traffic\n+ *\t\tbecomes available in the queue a FQDAN\n+ *\t\t(FQ data available notification) will be\n+ *\t\tgenerated to selected DPIO;\n+ *\t2 - The destination is a DPCON. The queue is\n+ *\t\tassociated with a DPCON object for the\n+ *\t\tpurpose of scheduling between multiple\n+ *\t\tqueues. The DPCON may be independently\n+ *\t\tconfigured to generate notifications.\n+ *\t\tNot relevant for Tx queues.\n+ * @destination.hold_active: Hold active, maintains a queue scheduled for longer\n+ *\tin a DPIO during dequeue to reduce spread of traffic.\n+ *\tOnly relevant if queues are\n+ *\tnot affined to a single DPIO.\n+ * @user_context: User data, presented to the user along with any frames\n+ *\tfrom this queue. Not relevant for Tx queues.\n+ * @flc: FD FLow Context structure\n+ * @flc.value: Default FLC value for traffic dequeued from\n+ *      this queue.  Please check description of FD\n+ *      structure for more information.\n+ *      Note that FLC values set using dpni_add_fs_entry,\n+ *      if any, take precedence over values per queue.\n+ * @flc.stash_control: Boolean, indicates whether the 6 lowest\n+ *      - significant bits are used for stash control.\n+ *      significant bits are used for stash control.  If set, the 6\n+ *      least significant bits in value are interpreted as follows:\n+ *      - bits 0-1: indicates the number of 64 byte units of context\n+ *      that are stashed.  FLC value is interpreted as a memory address\n+ *      in this case, excluding the 6 LS bits.\n+ *      - bits 2-3: indicates the number of 64 byte units of frame\n+ *      annotation to be stashed.  Annotation is placed at FD[ADDR].\n+ *      - bits 4-5: indicates the number of 64 byte units of frame\n+ *      data to be stashed.  Frame data is placed at FD[ADDR] +\n+ *      FD[OFFSET].\n+ *      For more details check the Frame Descriptor section in the\n+ *      hardware documentation.\n  */\n struct dpni_queue {\n-\t/**\n-\t * struct destination - Destination structure\n-\t * @id:\tID of the destination, only relevant if DEST_TYPE is > 0.\n-\t *\t\t\tIdentifies either a DPIO or a DPCON object.\n-\t *\t\t\tNot relevant for Tx queues.\n-\t * @type:\tMay be one of the following:\n-\t *\t\t\t0 - No destination, queue can be manually\n-\t *\t\t\t\tqueried, but will not push traffic or\n-\t *\t\t\t\tnotifications to a DPIO;\n-\t *\t\t\t1 - The destination is a DPIO. When traffic\n-\t *\t\t\t\tbecomes available in the queue a FQDAN\n-\t *\t\t\t\t(FQ data available notification) will be\n-\t *\t\t\t\tgenerated to selected DPIO;\n-\t *\t\t\t2 - The destination is a DPCON. The queue is\n-\t *\t\t\t\tassociated with a DPCON object for the\n-\t *\t\t\t\tpurpose of scheduling between multiple\n-\t *\t\t\t\tqueues. The DPCON may be independently\n-\t *\t\t\t\tconfigured to generate notifications.\n-\t *\t\t\t\tNot relevant for Tx queues.\n-\t * @hold_active: Hold active, maintains a queue scheduled for longer\n-\t *\t\tin a DPIO during dequeue to reduce spread of traffic.\n-\t *\t\tOnly relevant if queues are\n-\t *\t\tnot affined to a single DPIO.\n-\t */\n \tstruct {\n \t\tuint16_t id;\n \t\tenum dpni_dest type;\n@@ -950,28 +1025,6 @@ struct dpni_queue {\n \t\tuint8_t priority;\n \t} destination;\n \tuint64_t user_context;\n-\t/**\n-\t * struct flc - FD FLow Context structure\n-\t * @value: Default FLC value for traffic dequeued from\n-\t *      this queue.  Please check description of FD\n-\t *      structure for more information.\n-\t *      Note that FLC values set using dpni_add_fs_entry,\n-\t *      if any, take precedence over values per queue.\n-\t * @stash_control: Boolean, indicates whether the 6 lowest\n-\t *      - significant bits are used for stash control.\n-\t *      significant bits are used for stash control.  If set, the 6\n-\t *      least significant bits in value are interpreted as follows:\n-\t *      - bits 0-1: indicates the number of 64 byte units of context\n-\t *      that are stashed.  FLC value is interpreted as a memory address\n-\t *      in this case, excluding the 6 LS bits.\n-\t *      - bits 2-3: indicates the number of 64 byte units of frame\n-\t *      annotation to be stashed.  Annotation is placed at FD[ADDR].\n-\t *      - bits 4-5: indicates the number of 64 byte units of frame\n-\t *      data to be stashed.  Frame data is placed at FD[ADDR] +\n-\t *      FD[OFFSET].\n-\t *      For more details check the Frame Descriptor section in the\n-\t *      hardware documentation.\n-\t */\n \tstruct {\n \t\tuint64_t value;\n \t\tchar stash_control;\n@@ -1132,4 +1185,21 @@ int dpni_get_taildrop(struct fsl_mc_io *mc_io,\n \t\t      uint8_t tc,\n \t\t      uint8_t q_index,\n \t\t      struct dpni_taildrop *taildrop);\n+\n+int dpni_set_opr(struct fsl_mc_io *mc_io,\n+\t\t uint32_t cmd_flags,\n+\t\t uint16_t token,\n+\t\t uint8_t tc,\n+\t\t uint8_t index,\n+\t\t uint8_t options,\n+\t\t struct opr_cfg *cfg);\n+\n+int dpni_get_opr(struct fsl_mc_io *mc_io,\n+\t\t uint32_t cmd_flags,\n+\t\t uint16_t token,\n+\t\t uint8_t tc,\n+\t\t uint8_t index,\n+\t\t struct opr_cfg *cfg,\n+\t\t struct opr_qry *qry);\n+\n #endif /* __FSL_DPNI_H */\ndiff --git a/drivers/net/dpaa2/mc/fsl_dpni_cmd.h b/drivers/net/dpaa2/mc/fsl_dpni_cmd.h\nindex eb3e99878..3df5bcf1f 100644\n--- a/drivers/net/dpaa2/mc/fsl_dpni_cmd.h\n+++ b/drivers/net/dpaa2/mc/fsl_dpni_cmd.h\n@@ -9,19 +9,21 @@\n \n /* DPNI Version */\n #define DPNI_VER_MAJOR\t\t\t\t7\n-#define DPNI_VER_MINOR\t\t\t\t3\n+#define DPNI_VER_MINOR\t\t\t\t8\n \n #define DPNI_CMD_BASE_VERSION\t\t\t1\n #define DPNI_CMD_VERSION_2\t\t\t2\n+#define DPNI_CMD_VERSION_3\t\t\t3\n #define DPNI_CMD_ID_OFFSET\t\t\t4\n \n #define DPNI_CMD(id)\t(((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_BASE_VERSION)\n #define DPNI_CMD_V2(id)\t(((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_VERSION_2)\n+#define DPNI_CMD_V3(id)\t(((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_VERSION_3)\n \n /* Command IDs */\n #define DPNI_CMDID_OPEN\t\t\t\tDPNI_CMD(0x801)\n #define DPNI_CMDID_CLOSE\t\t\tDPNI_CMD(0x800)\n-#define DPNI_CMDID_CREATE\t\t\tDPNI_CMD(0x901)\n+#define DPNI_CMDID_CREATE\t\t\tDPNI_CMD_V2(0x901)\n #define DPNI_CMDID_DESTROY\t\t\tDPNI_CMD(0x981)\n #define DPNI_CMDID_GET_API_VERSION\t\tDPNI_CMD(0xa01)\n \n@@ -44,10 +46,10 @@\n #define DPNI_CMDID_GET_QDID\t\t\tDPNI_CMD(0x210)\n #define DPNI_CMDID_GET_SP_INFO\t\t\tDPNI_CMD(0x211)\n #define DPNI_CMDID_GET_TX_DATA_OFFSET\t\tDPNI_CMD(0x212)\n-#define DPNI_CMDID_GET_LINK_STATE\t\tDPNI_CMD(0x215)\n+#define DPNI_CMDID_GET_LINK_STATE\t\tDPNI_CMD_V2(0x215)\n #define DPNI_CMDID_SET_MAX_FRAME_LENGTH\t\tDPNI_CMD(0x216)\n #define DPNI_CMDID_GET_MAX_FRAME_LENGTH\t\tDPNI_CMD(0x217)\n-#define DPNI_CMDID_SET_LINK_CFG\t\t\tDPNI_CMD(0x21A)\n+#define DPNI_CMDID_SET_LINK_CFG\t\t\tDPNI_CMD_V2(0x21A)\n #define DPNI_CMDID_SET_TX_SHAPING\t\tDPNI_CMD_V2(0x21B)\n \n #define DPNI_CMDID_SET_MCAST_PROMISC\t\tDPNI_CMD(0x220)\n@@ -65,7 +67,7 @@\n #define DPNI_CMDID_REMOVE_VLAN_ID\t\tDPNI_CMD(0x232)\n #define DPNI_CMDID_CLR_VLAN_FILTERS\t\tDPNI_CMD(0x233)\n \n-#define DPNI_CMDID_SET_RX_TC_DIST\t\tDPNI_CMD_V2(0x235)\n+#define DPNI_CMDID_SET_RX_TC_DIST\t\tDPNI_CMD_V3(0x235)\n \n #define DPNI_CMDID_GET_STATISTICS\t\tDPNI_CMD_V2(0x25D)\n #define DPNI_CMDID_RESET_STATISTICS\t\tDPNI_CMD(0x25E)\n@@ -76,8 +78,8 @@\n \n #define DPNI_CMDID_GET_PORT_MAC_ADDR\t\tDPNI_CMD(0x263)\n \n-#define DPNI_CMDID_GET_BUFFER_LAYOUT\t\tDPNI_CMD(0x264)\n-#define DPNI_CMDID_SET_BUFFER_LAYOUT\t\tDPNI_CMD(0x265)\n+#define DPNI_CMDID_GET_BUFFER_LAYOUT\t\tDPNI_CMD_V2(0x264)\n+#define DPNI_CMDID_SET_BUFFER_LAYOUT\t\tDPNI_CMD_V2(0x265)\n \n #define DPNI_CMDID_SET_CONGESTION_NOTIFICATION\tDPNI_CMD(0x267)\n #define DPNI_CMDID_GET_CONGESTION_NOTIFICATION\tDPNI_CMD(0x268)\n@@ -87,6 +89,8 @@\n #define DPNI_CMDID_SET_OFFLOAD\t\t\tDPNI_CMD(0x26C)\n #define DPNI_CMDID_SET_TX_CONFIRMATION_MODE\tDPNI_CMD(0x266)\n #define DPNI_CMDID_GET_TX_CONFIRMATION_MODE\tDPNI_CMD(0x26D)\n+#define DPNI_CMDID_SET_OPR\t\t\tDPNI_CMD(0x26e)\n+#define DPNI_CMDID_GET_OPR\t\t\tDPNI_CMD(0x26f)\n \n /* Macros for accessing command fields smaller than 1byte */\n #define DPNI_MASK(field)\t\\\n@@ -113,6 +117,7 @@ struct dpni_cmd_create {\n \tuint8_t qos_entries;\n \tuint8_t pad3;\n \tuint16_t fs_entries;\n+\tuint8_t num_rx_tcs;\n };\n \n struct dpni_cmd_destroy {\n@@ -228,6 +233,8 @@ struct dpni_cmd_set_errors_behavior {\n #define DPNI_PASS_PR_SIZE\t\t1\n #define DPNI_PASS_FS_SHIFT\t\t2\n #define DPNI_PASS_FS_SIZE\t\t1\n+#define DPNI_PASS_SWO_SHIFT\t\t3\n+#define DPNI_PASS_SWO_SIZE\t\t1\n \n struct dpni_cmd_get_buffer_layout {\n \tuint8_t qtype;\n@@ -307,10 +314,13 @@ struct dpni_cmd_set_link_cfg {\n \tuint32_t rate;\n \tuint32_t pad1;\n \tuint64_t options;\n+\tuint64_t advertising;\n };\n \n #define DPNI_LINK_STATE_SHIFT\t\t0\n #define DPNI_LINK_STATE_SIZE\t\t1\n+#define DPNI_STATE_VALID_SHIFT\t\t1\n+#define DPNI_STATE_VALID_SIZE\t\t1\n \n struct dpni_rsp_get_link_state {\n \tuint32_t pad0;\n@@ -320,6 +330,8 @@ struct dpni_rsp_get_link_state {\n \tuint32_t rate;\n \tuint32_t pad2;\n \tuint64_t options;\n+\tuint64_t supported;\n+\tuint64_t advertising;\n };\n \n struct dpni_cmd_set_max_frame_length {\n@@ -415,6 +427,8 @@ struct dpni_cmd_set_tx_priorities {\n #define DPNI_MISS_ACTION_SIZE\t\t4\n #define DPNI_KEEP_HASH_KEY_SHIFT\t7\n #define DPNI_KEEP_HASH_KEY_SIZE\t\t1\n+#define DPNI_KEEP_ENTRIES_SHIFT\t\t6\n+#define DPNI_KEEP_ENTRIES_SIZE\t\t1\n \n struct dpni_cmd_set_rx_tc_dist {\n \tuint16_t dist_size;\n@@ -601,5 +615,64 @@ struct dpni_rsp_get_congestion_notification {\n \tuint32_t threshold_exit;\n };\n \n+struct dpni_cmd_set_opr {\n+\tuint8_t pad0;\n+\tuint8_t tc_id;\n+\tuint8_t index;\n+\tuint8_t options;\n+\tuint8_t pad1[7];\n+\tuint8_t oloe;\n+\tuint8_t oeane;\n+\tuint8_t olws;\n+\tuint8_t oa;\n+\tuint8_t oprrws;\n+};\n+\n+struct dpni_cmd_get_opr {\n+\tuint8_t pad;\n+\tuint8_t tc_id;\n+\tuint8_t index;\n+};\n+\n+#define DPNI_RIP_SHIFT\t0\n+#define DPNI_RIP_SIZE\t\t1\n+#define DPNI_OPR_ENABLE_SHIFT\t1\n+#define DPNI_OPR_ENABLE_SIZE\t1\n+#define DPNI_TSEQ_NLIS_SHIFT\t0\n+#define DPNI_TSEQ_NLIS_SIZE\t1\n+#define DPNI_HSEQ_NLIS_SHIFT\t0\n+#define DPNI_HSEQ_NLIS_SIZE\t1\n+\n+struct dpni_rsp_get_opr {\n+\tuint64_t pad0;\n+\t/* from LSB: rip:1 enable:1 */\n+\tuint8_t flags;\n+\tuint16_t pad1;\n+\tuint8_t oloe;\n+\tuint8_t oeane;\n+\tuint8_t olws;\n+\tuint8_t oa;\n+\tuint8_t oprrws;\n+\tuint16_t nesn;\n+\tuint16_t pad8;\n+\tuint16_t ndsn;\n+\tuint16_t pad2;\n+\tuint16_t ea_tseq;\n+\t/* only the LSB */\n+\tuint8_t tseq_nlis;\n+\tuint8_t pad3;\n+\tuint16_t ea_hseq;\n+\t/* only the LSB */\n+\tuint8_t hseq_nlis;\n+\tuint8_t pad4;\n+\tuint16_t ea_hptr;\n+\tuint16_t pad5;\n+\tuint16_t ea_tptr;\n+\tuint16_t pad6;\n+\tuint16_t opr_vid;\n+\tuint16_t pad7;\n+\tuint16_t opr_id;\n+};\n+\n #pragma pack(pop)\n #endif /* _FSL_DPNI_CMD_H */\ndiff --git a/drivers/net/dpaa2/mc/fsl_net.h b/drivers/net/dpaa2/mc/fsl_net.h\nindex 964870ba9..0dc0131bb 100644\n--- a/drivers/net/dpaa2/mc/fsl_net.h\n+++ b/drivers/net/dpaa2/mc/fsl_net.h\n@@ -180,7 +180,7 @@\n #define NH_FLD_SCTP_CHUNK_DATA_STREAM_SQN     (NH_FLD_SCTP_CHUNK_DATA_TYPE << 5)\n #define NH_FLD_SCTP_CHUNK_DATA_PAYLOAD_PID    (NH_FLD_SCTP_CHUNK_DATA_TYPE << 6)\n #define NH_FLD_SCTP_CHUNK_DATA_UNORDERED      (NH_FLD_SCTP_CHUNK_DATA_TYPE << 7)\n-#define NH_FLD_SCTP_CHUNK_DATA_BEGGINNING     (NH_FLD_SCTP_CHUNK_DATA_TYPE << 8)\n+#define NH_FLD_SCTP_CHUNK_DATA_BEGGINING      (NH_FLD_SCTP_CHUNK_DATA_TYPE << 8)\n #define NH_FLD_SCTP_CHUNK_DATA_END            (NH_FLD_SCTP_CHUNK_DATA_TYPE << 9)\n #define NH_FLD_SCTP_CHUNK_DATA_ALL_FIELDS \\\n \t((NH_FLD_SCTP_CHUNK_DATA_TYPE << 10) - 1)\n",
    "prefixes": [
        "v3",
        "04/15"
    ]
}