get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 45437,
    "url": "http://patches.dpdk.org/api/patches/45437/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180926180440.31726-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": "<20180926180440.31726-5-shreyansh.jain@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180926180440.31726-5-shreyansh.jain@nxp.com",
    "date": "2018-09-26T18:04:29",
    "name": "[v2,04/15] net/dpaa2: upgrade dpni to mc FW APIs to 10.10.0",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "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/20180926180440.31726-5-shreyansh.jain@nxp.com/mbox/",
    "series": [
        {
            "id": 1525,
            "url": "http://patches.dpdk.org/api/series/1525/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1525",
            "date": "2018-09-26T18:04:25",
            "name": "Upgrade DPAA2 FW and other feature/bug fixes",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/1525/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/45437/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/45437/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 55A3C1B48C;\n\tWed, 26 Sep 2018 20:06:01 +0200 (CEST)",
            "from EUR03-VE1-obe.outbound.protection.outlook.com\n\t(mail-eopbgr50058.outbound.protection.outlook.com [40.107.5.58])\n\tby dpdk.org (Postfix) with ESMTP id 5A79D1B484\n\tfor <dev@dpdk.org>; Wed, 26 Sep 2018 20:05:57 +0200 (CEST)",
            "from Tophie.ap.freescale.net (14.142.187.166) by\n\tAM6PR04MB4679.eurprd04.prod.outlook.com (2603:10a6:20b:1c::18) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.1164.22; Wed, 26 Sep 2018 18:05:54 +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=qNlwF3xLqQL4FhERiNaJ4fR2xoyvpPuCwYuBcXpESNNyfMxydyr/uA924nqWGubZIEB+SR1kepEkvhjH0nCYHhmBr92VRYg39ipNgAtTir19MZfC3OTgMzNl6UXc7A+yAJMTs298gyryGAVNDWYiqQjxsTKso+wjqdJgCBY3V7E=",
        "Authentication-Results": "spf=none (sender IP is )\n\tsmtp.mailfrom=shreyansh.jain@nxp.com; ",
        "From": "Shreyansh Jain <shreyansh.jain@nxp.com>",
        "To": "dev@dpdk.org,\n\tferruh.yigit@intel.com",
        "Cc": "thomas@monjalon.net,\n\tHemant Agrawal <hemant.agrawal@nxp.com>",
        "Date": "Wed, 26 Sep 2018 23:34:29 +0530",
        "Message-Id": "<20180926180440.31726-5-shreyansh.jain@nxp.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20180926180440.31726-1-shreyansh.jain@nxp.com>",
        "References": "<20180917103631.32304-1-shreyansh.jain@nxp.com>\n\t<20180926180440.31726-1-shreyansh.jain@nxp.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[14.142.187.166]",
        "X-ClientProxiedBy": "MA1PR0101CA0014.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:a00:21::24) To AM6PR04MB4679.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:1c::18)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "e0c891ae-788f-423f-bf6f-08d623dab47c",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989299)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);\n\tSRVR:AM6PR04MB4679; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; AM6PR04MB4679;\n\t3:OB+cQtx3gTGWMnyB92DSmlrXMYH03nmWfBmQyZPFtbP6kgB2xaNM9HrONRdF34lWv2Y11MS2hVpvSFm64x356M0fV0ETb8XZNTcrFLxoszNdqIm7qZBCVe4DKB9hlXx1kRoimLdtfdakRSJDOjldWGtTx7A8G/5PQIEHas2nTia0+6WLbSsuqIMlsNreVBDjtmRPcQqo0NkwQy+fkLVpPJkgUMwNejNupnUtQ4it7gvUGYbSjfCw8JqFLVhOOKEI;\n\t25:xhV8sy1vtr0FEz0m6R08bOokDBeA1+I+0lLhlqfmK9MD9nSKrayRCjKpps5gPe/Nj9OtkSMe904dV9lfolVCXysyQnH1W9yG8CQHIQodvvScjk4uCOveFM/5I7Juf2PWc75qS/w5PrOoz1pfr6T1PNAVAWd1UfZwKste6gn/9lR4MACGJZL1txKSDvh+s3rScLnYsoyAlOmvNPoc1Rv0Ft1qOnOC3Y/Kr58J4pXX5cYQV6ZcNzTi9XnBy51Q9LoIIiCX66xMgFSJc2kFoJnCknUE2+IV+sSnmYCugGkQbBTWgAr5iWDwgUg9N93a9AIioYYguojzivsAHm1dLUEQXA==;\n\t31:wzaR0luzZxOOCkwh1Mt074VDbATjFHe/dRsIHG3x5qNNYe650qdwZh+LKYry24wK0BGs9fBQX6CtXWhS3+0DrAp/4BNhL49IdJdEGeehY3ug6KdepR4eYVj4GAmpj1S7IDN/K6dWl2lI2Vm/ZPRvp8kdeRBIdoPHgffYMPq3KfiRDgp5KQlcazuIUeIunKMqSzv0GSrLnwfM8ehGgBY3NxN4zhYTYEfHW4THsXozK0k=",
            "1; AM6PR04MB4679;\n\t20:+5mJ6k3rzB47tG6/iN5j7tBKMN655+SES/c1S8g3rkQXSdzTkuZjdqtx4EhWdlaZ1AsKmpbzw49CnCVPvGQzkkw3YxewTjjicUTyi68dj4XEgZ2Vk3cfLTUfbVOlPYq4uHCV1CbQio/7kK2Ap/N78XJmCmRepq2veeBPjHXmXJVohyEnMwu4rDZgp1AlJ2x5xK29m+Zo15MlbsrNootkdNXuZE1UwAeMCMYPCeqiMvrACwavantRk0NOD0oZ6ok+r/CGRruEYvdhTwSwGJrA+cBNJgFkUsTOrdWvr5Qzxw9H20mkPM9QtbN430m+sh4KRfupEOawxx2lgG3PbhoIhW2jRpmZAeo1vNMLOkUsYURWq21MoLk/a6WTQKKZfpEDCPOl/aM3SRFrrAaEyzLoajET9GbFDwEufdgRzcd8CkokaykBpC0iwbgyty6+XTBP6xw8R35afPJD5juRgZUH8X9XMlFb9ZB/vXnvokef5U5wPZPvykhlrxsQ6fiP0gHB;\n\t4:bYEx3c4VVS2++7x+mNH7sK1o6pXbx/pY6Xzfkb3zEacW+KoYiWG1IdxAsNZHlvW2ciDcgGn3ysDdv96wrzPsrkoYuFWDNxdLxi4nRNJhKlLYMgm8TGYruWnlTA9onAsA2GYd16Ms2sAa7LZPVr/0+fcDrhwYiNz5elWgUo5353HAoTNxKJT0WV7jrXOVTJbj0gcdkKqgsRCooP4r7m3g4objgFq4If/qYJorPz9LGYaE0vzwu3M5d7OZB/QUkeA0Bd2QmXyIR6I2eUnmrKsysTmuI5/plcA4lswS/iP6e2D0VK/UVU7GJeeeKbOshGWD1KKZloP2s55sngBrmQiDO8++X/jT/NaDBxffGoo5/eQ=",
            "=?us-ascii?Q?1; AM6PR04MB4679;\n\t23:yJHmouigxVUoFX/4QJVXgrKvJwE0V9GPVkRucwDWu?=\n\tg3X6xaMZy3xMaW3xyyPiIWRxnQFtu7uVy0mGBRxKoUZa9vUWPJW30f8Rb8tsj6MEPspS8T7Ppx894HT4ogP9Es57ixr7k0O8Vba2WldtuwP01LOAJ48npKySzHBazPj1QMY0VxWbRBcy0XfLX5TJcBm4ZwvRDOAtswJzM+Camb7Whh8K7PZ/q8fb4n7Mnpj3+6SfG2h+bim34TK6PcOI/wINAYb0qfofz5Ih+nQCNxzvByATVKbEQUok34iXLdcKaW5dSoKijF3ApgwCzREdvjylZOqWksyIfsXktvnl/o3WiCTF25z+a9h2W11E1BG3YyrspGFZkUsIqV/U59TAvW0DPL9c+O5U0W6XwCdihP3eqn54vAzWGs6BpFvFWHmWph7A9f3+2C9Tb4IRYVYsWA9qPVI4P5FBsU1zI6TLd1df9wuiQ7dTAz3cgZSbF0k+ajCbCFtz2Ld45o0ERBSgT8RlgKraRuKk702bxjZrRnf8FpHrPBCIySfR9X5fK1YcDwJGCJPdpM9ryoQmbMmlK14Kds1Vf6PR84vm2O7+PkZoKYD1NV0qsdJtAoJNyC2VC5pl17JXlHX07RRG50dY3PF9qYcTSYreJdSJ1ogSCe0ja2CJWFG1KOOcKYm5LkH+BVbSTp2qwbZGZkCkiKaHOnvKVu1Vsk7UMbaiAUpbK4fHAwZXQJWcmImJjWWqdgB+gNi/KqgbvtgMlyCwMlktax/gTCPdRNySm/FiHXROwBwNVXlU+9V7/DFXR1tnvqUCKEbSYbWUMmhXVdmYVBgJu3xEl18J+4+LHBCRE04UThx3AV7O7BJXIhE1WC2IVu4LfiKH+PBAI3E4GJIKNkMxgKPSSulrLOb6IBr2Tlb6KMXbFlyYN927lqXb9DzIVXr48Q1wfql8zU/d2+WmGavE+zlL2rjnGTzDahop2LcKiTwEXi6Z2lt3yu28Rvb/roAg0LZduiCHQaCBBHcAjPq3HQOgFP9tdgf9am5dGv2GG4kIj/UmLNAKWq+znNVQ+0RiEuY5sYhDkuo33Pkzuscqb0gifTlHP611MGqJtpY0ls6BSDm/6B3TzM139iHy52UVZL7a/XUAi7uFZgMh9uHnLK97AxTc1fOb+JSOYmzIZFz/z30Eyeb+p/MXggOEfYF2fPkEh6jQudGeZgkxPolxJacR70FV8sPLM1qBwEXQbuGEQvW59XDessGV3Kja2X7awRsbIGKZK/y7ODBe0ew4In/xB29yk9ADC1gnZDPyegttyj7sGFdbg4DhwjozBz6Q1z9j8ocY4yzlvqhcSzjjyQnbj3MikhDLjZqnlaMfaTxlg==",
            "1; AM6PR04MB4679;\n\t6:CizQ0hHLFYyOUE5O/qapokjZVtpy5IdD0lteFDj9WhSkXeinZOlDirERScXrdoynEI+fHuvvGsoBQowj1EjnF5rcfIajXH6n23jWl71UsTQ4ttZ8coAu9h8IolBZ2MN53LbB6eddeO4iwUAkUPEjboXA/Vq1j5ifelnbBlVpQ03B5GGZXHfC1eLazHh+AFHEkf9IqDS73/W8AOEpAmehuVPRYnpZbdiWlYXKltgqUUGx4Z/nxHI60JIMksmiYcj6Vm8k5SIH8lKPw2XOXqfTrf23fFaqTGtn+XcMoe3wdPrIWSOwTvyF11dZ0vAjUBcGi6HWQfuuaTXKwvC5dIZOO9zKRtZofGI52th6OXYKBPEZ7GGcLYT3iDB71pQayyDr3/u5U9axfXerLwDYZzp/LuUCPhRanDf0sGpuvDzWJ5oD94n0N9+FaJXL1B6mPEdCjw+TxfwuxmBoimFQcLSVHQ==;\n\t5:RvZI9oyqYEf+Rx0PXIDdPriA/Lhc7QXoQeKhUwXxX4Hp/M0e+gPaOTFyoE1KfWyEZc/mc/bh4pfPZ63Bxm5HyHGoum6qtfpsZzy6FZkxwH4bYsWPlUb9eZgTuAxrAuRgu+sdcKxRkHRpFW33FMcAfMfY7pi6cqe9Ol8e/VoN69o=;\n\t7:s01SvDW5BTT+PFGtvD6uSeIR+nr0VBRPQ8BP6IpjxZodtOx102/869nR6ykuucaL68IWPag8NYb095pexaKhYn2cI8vtPEg1sRftvqnMpoqlCsv6+sV8YgNk52+vU5dasf/NMte0r3/Ne1IxVsPpwtshX26/QUX9q+8FTEfE9kQiK1S3K2fcGDNPcMtmsKuLxdxX/CvsJUYCOuudWBZ77E0UzASnIYxmxORcRShGae6GWVT8Ri1cGukyeKk/fgkE"
        ],
        "X-MS-TrafficTypeDiagnostic": "AM6PR04MB4679:",
        "X-Microsoft-Antispam-PRVS": "<AM6PR04MB4679CC43A16048CF28D4B1B390150@AM6PR04MB4679.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)(3231355)(944501410)(52105095)(3002001)(6055026)(149066)(150057)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123560045)(201708071742011)(7699051);\n\tSRVR:AM6PR04MB4679; BCL:0; PCL:0; RULEID:; SRVR:AM6PR04MB4679; ",
        "X-Forefront-PRVS": "08076ABC99",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(376002)(136003)(396003)(346002)(366004)(39860400002)(189003)(199004)(11346002)(50226002)(446003)(47776003)(44832011)(956004)(476003)(106356001)(486006)(2616005)(53946003)(6512007)(66066001)(305945005)(7736002)(6486002)(105586002)(36756003)(575784001)(86362001)(478600001)(8936002)(16526019)(81166006)(50466002)(186003)(26005)(25786009)(8676002)(55236004)(48376002)(81156014)(4326008)(3846002)(6116002)(1076002)(6666003)(52116002)(5009440100003)(2906002)(16586007)(51416003)(316002)(97736004)(6506007)(76176011)(5660300001)(386003)(68736007)(14444005)(53936002)(110426005)(579004);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR04MB4679;\n\tH:Tophie.ap.freescale.net; FPR:; \n\tSPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; ",
        "Received-SPF": "None (protection.outlook.com: nxp.com does not designate\n\tpermitted sender hosts)",
        "X-Microsoft-Antispam-Message-Info": "ox2sTLecU2D/Y3bVUdX7hmo+K9ZnRjZzRQD83JrShhuIwU4nJ6o0TQhsokBc3Llh0vk++rUNObz39BAs0suFHkQNM7b1SKHArO+YhRp0RzeX7C4KCIw7bxSlVeqi7yg5KyMGrv05z9sMtNpRMbAC6dWIwJm6njDtmQCIHkbIC4WK+ofPxswAqRqy3zbL/APyAc+kVsE9YMdjyDtBKVL4siRGanO4IIaZogIFkHaenfPfvvUBydgn1KI79fBDZ/DCJ1GdU4DcK2mV6d0YNYuiaz/24NiBx/xd3kibx31cukmNPo4/MAMUM7Wxx6hGdc+KkXtwB58dJrzWh8OQqFtP57wZ/xR/WPkrmJAhlNKbZHg=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "26 Sep 2018 18:05:54.1014\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "e0c891ae-788f-423f-bf6f-08d623dab47c",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "AM6PR04MB4679",
        "Subject": "[dpdk-dev] [PATCH v2 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": [
        "v2",
        "04/15"
    ]
}