get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 44799,
    "url": "https://patches.dpdk.org/api/patches/44799/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20180917103631.32304-4-shreyansh.jain@nxp.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20180917103631.32304-4-shreyansh.jain@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180917103631.32304-4-shreyansh.jain@nxp.com",
    "date": "2018-09-17T10:36:23",
    "name": "[03/11] net/dpaa2: upgrade dpni to mc FW APIs to 10.10.0",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "50c5a3065a38bd32058827971cbf12bd43f0c6eb",
    "submitter": {
        "id": 497,
        "url": "https://patches.dpdk.org/api/people/497/?format=api",
        "name": "Shreyansh Jain",
        "email": "shreyansh.jain@nxp.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20180917103631.32304-4-shreyansh.jain@nxp.com/mbox/",
    "series": [
        {
            "id": 1352,
            "url": "https://patches.dpdk.org/api/series/1352/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=1352",
            "date": "2018-09-17T10:36:20",
            "name": "Upgrade DPAA2 FW and other feature/bug fixes",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/1352/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/44799/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/44799/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 D86E458CB;\n\tMon, 17 Sep 2018 12:37:55 +0200 (CEST)",
            "from EUR03-DB5-obe.outbound.protection.outlook.com\n\t(mail-eopbgr40067.outbound.protection.outlook.com [40.107.4.67])\n\tby dpdk.org (Postfix) with ESMTP id 599424F93\n\tfor <dev@dpdk.org>; Mon, 17 Sep 2018 12:37:51 +0200 (CEST)",
            "from Tophie.ap.freescale.net (14.142.187.166) by\n\tAM0PR04MB4673.eurprd04.prod.outlook.com (2603:10a6:208:75::15) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n\t15.20.1143.18; Mon, 17 Sep 2018 10:37:49 +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=OgfsEgpUDou0TCT/7NURysbm/Wpe+bXIhRmutQ3oqtc=;\n\tb=UXASZQIMPFCJWG+LtXTNRgt5okGnUPtWH87jDxC/yd1U31R0kNvoGL+rwHH7GMwaPet0zRSfQHP/Qp4hXb7Fx5liljmkE20y5ps/3MuAnxQxQ7o1Jd4bgx17LgNCYiNAjNEBM2DRe9JN0JdNQAVZDluEJz16iQSJ9yyjsPCo+9w=",
        "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": "Hemant Agrawal <hemant.agrawal@nxp.com>",
        "Date": "Mon, 17 Sep 2018 16:06:23 +0530",
        "Message-Id": "<20180917103631.32304-4-shreyansh.jain@nxp.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20180917103631.32304-1-shreyansh.jain@nxp.com>",
        "References": "<20180917103631.32304-1-shreyansh.jain@nxp.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[14.142.187.166]",
        "X-ClientProxiedBy": "BM1PR01CA0092.INDPRD01.PROD.OUTLOOK.COM\n\t(2603:1096:b00:1::32) To AM0PR04MB4673.eurprd04.prod.outlook.com\n\t(2603:10a6:208:75::15)",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "952cec03-8ee5-4e46-a676-08d61c899d93",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Microsoft-Antispam": "BCL:0; PCL:0;\n\tRULEID:(7020095)(4652040)(8989137)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);\n\tSRVR:AM0PR04MB4673; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; AM0PR04MB4673;\n\t3:UQJuwnWlUS3KBV+Xyosy9lSJJfNWyecqOICPPz5NAy6+3d81CEUkQMicaXrBFzjwY3B460KtdA5bU/iQ7J/LHQH51SjqRNKM57SfLZ6DK+wIJbrFAs0Tfu8n+nTRWzAjolm+5ePsz59XVPnNjj5HiUcDydr2D1F9TuqBW1ZIq2aHKX5iwsWvp6q7X3HRBf7xckB8xlbiFoDOqk4CyqCEPwLf+qyZIHMK7lK8H+X+C5xEo1+2/Weo54ZaDl2DV4Kq;\n\t25:3vXpx7Ed/pGyEmkqeV+WYpFsXTf11kUPhZoJLcJNVDiDVV9LM8Em8/hBXllJ99lIq2PAP9rdL8M0wgbjWA9dKOYqNqKBjQIf8aoSrlH4BJfIsmme74zRwE7BUpUhktx/yzZpAkk+pVagaz3Upipm59Ty/d66Af/Kk4UJQSifWpe0N03EO4678EVlhd7yHKI1XlDvltYyVfZta6S+5rrUROOJdVFaREKEm8f++6WKp9jJzihy8YVelLUH2Xm1ARKwOCBTadbNpZk52udm8gtMaCWLArsjp/xJ3hEYpUPN8QfneC3FhWzeGRAlFMznvX2/5uLyM7uerX1c9INQiJSRTg==;\n\t31:Uk+7DuctcQ61epeb90FUPdFrwM9TheW782KmR8PwfQyf4FYNgVPwUZ4ItXdvwIO2yjQ2ozQES3CcQqHPHJKCvU0+igOKlntPt24BaBs9AdBGdEV5N4HWjNyVrL7b5JL/3zD3POhGrnEi29LndH7FCbQPwt0v8uLcsGcRY0Pr+us8A41ef8UtJzBcNtmPCyWDA/3V4UERquXkBvX0uY6DsChwA0AXT/S567/3sy0bpig=",
            "1; AM0PR04MB4673;\n\t20:aZ4Bvs0qh9ji6NNyKT67KPk2V5eC4nZbPFVPsRBwlupoPBol4z/up5s8jB4Q1NuwXFO8QM+iX6TTV0sdnBkpgqKYoNfU9jBKHaPMrnsV0/EcG5DmHiRlETQs+TNDclRP7aU0UFObfvP3ygDlnBg1XbQVignFOcrpjNQdWqyuI6U2/owFp+zuCarv+5FB64Dym2BaRpcdcBoj3AqxGLmFqWlYzHuzgTgG/7JhVBDIYT0iIIDHd1iLD+9p4rGo0ihB8ciWQhqQFnKlMDEVIz84Nk9eukux2W9yTYrPC86VzbiB66vFdHiiup2N9u4Mn+nEgXiOJ3bR5+l7CPLy3eI9Kez/FQuf2Gwe/QAhnrb9YahoGtP3kwST+H8R37Si4Sxx7YhrX8IpyTvHBuMj3//c5Gd+w2jgtIZ6ocI9ir9k2A2bGwla8UgjAh12F5AZJcjaTCYwu/kBiwGJtxZY6dWmA2Ol5gn3rpB3qQ2FLzQW/oIK58GUE2jSG8JLdsxy8zXC;\n\t4:rWWOdgcfqRXPZFUrVDUvEmNwshPtvzSjftCCW81et5HJenF/Bo8dIQSvEAdnTDM/U31Wk7LV+zAJyg2Xr989o8JPrTwlllH2uLOim9WW4WuGZWoHaOLorIKjpAL2UvtAZySoiWpNiiBwRET+BeJitPyggb5LMRt34EjwIFkDkWXswABQtoFUwWR+w4iJUceKBcOkUpzS2nanlHldMDcaVZYvltkdtxrDamnQvZl6dDFMwti8sIUHAGuutosqcH/saHNzz7BJdSyG/MlE4gOXjgGyF6YGGxHRGE276ulhdMXAubzDTzhan/5+xGdPXiBES2YOMdBEcxHh449bt/egFVuiBrPVpeBfAv0zIgE5RmI=",
            "=?us-ascii?Q?1; AM0PR04MB4673;\n\t23:XUrOROCXh7CRAiIsw3Guq5a0eNIDzpD1oLB3/ZrkX?=\n\tgE97j6mlUrmYvZF1YOGAyxHVfTfbm4wCXkIx4+PRHoL5Rl5GzqLj19JZ8DRxZv35u5Zy0LAcQgD4JPyRHCvT22iKcfmN9i0vaNLtIvpG5U7SHPfRq3DrcZX5/J4YVJuejnKwCgIz/2DVMth/7XXCqiLSUZ8893rBgKmltuMT1+taYYDePDwmOzzq59ki/MRfP0vsjcBugFcPIn0UK93eU4gLs9yTkLwLXV53VZis2dxfVCISllhHHHRh/62EWQK7vk/2J4EOQeoutOBr6C+LROXeJcTooadGw7QoUCIxp4R4jMUfm/sYtfANcSdX0k5nDld5vfOKsRdEfKUaalbIy8BVhyE0XhyD7d1Ec1TG+Ezu2WpIb4Pjh/3oQRRiHZcclVrI4yMQ+DV58Z5TpuVVSa92UzKR7UfTv0q6pdcqV+SZ3mylo0hPODyD88AbdyyOE/5CNilNyKkwpnIK9TmrnqAC0SzUkvat4H+9zlAlTYMk4wFVSmbiqnnOIfXWyuFNKqrta6grObYnOlrgjyBroC1ypmk+oKmNNDfnX7Ud5iGPeFsPZvbwsNbk0ZmxNK2lPlx/eoNFREpeLLONrxXiqB4YLSIbq39OyR7tsxCa1TKXeRCSB/uvX5CfOqdW/k0wcdBc9rklK92bKNlkkSp+KaOOTUNqAGo3SW1+qU2F4w2JkhYv6Zh6C9lbsZpO0pAxYPJENFVj4aXSOJDkc8YYoF+1H82ECk81IqzfpvJLo5e3KONXslGTPFb91K12/ye1PPTqLIkAL5I3FVEq2k4XuO76RLvd5ujmSn2s8UzIi3yqA6fZptMWDwrKEQjuwOYvX84Yuvvec3+bYjDbJNvNrO79wjeWbRHzLmQpejFIbu7n64/jEDf/6qn/ScxpXJ1/p0NgWtMRunc8Ku/+wX9XXUYi6/q6bWHpD8Wgky3mmQdXMFxyhGGJIjU/lmqw9v9JRCE9COzmc3xDDwC6jZa3FWTV/+fYBwicQtkDgdv17usJXSOxh5yiC3krrc1YryTKVLkoQsyj5NQZjpqkC0CZ2IJg9sizU30vdWwQLxzkcnI7jkWqJMFR3KaPZNv4Zw/DXXqbBOYci3/GtRDk0bEBCN9qVzA4iGNb8Ks7LhvsbUDw8GfUkGRrnsPaj7SVHxbmiFXKb9Ox/ypM/wG8aFukfoBRVfuwKnfQrSCKnte7Zovco3BdPqxL9R7ct9Ry3uwy18pF4PHzZ08f68TGwwNzU9QtZHeGxRmcA8CCwZ0G4HRtDcdwKkWPF1GT2aMeZHG6Ww=",
            "1; AM0PR04MB4673;\n\t6:BiP3bLMcpEIGeAOLpQNMKIOpa06eMDGbnsi9/vXzti1/bZ4YwnJkXsW9xYRq5h2u5NbiAyf/4F74zEz8VXhlHKolXgqWe4mRR3I5BmdRnGHUoUO5Tnh+B2nxy3xXhsJ3Iv8Zcgwv5jk9X8qbkjlMdM31ig3naq5mzn9HyZCbD14voAbngCgIDbMuABOWna3rrFndxEEjeCaeJ82IasueLeOX1gBKKyjSSUZl+d5+DrWy9RsDs58r9Gi65r5CyK4xQBc0MSQCs2DOj2umRIwGlR5uT2vJK82TmuDtjPNXu2DEXKs8o9SfMthWb2jWVx6E+Zl+M8XVjjr8/tbAmSU+o38bgOzyjQLisT1KsA6a2jQWfGQmiW8k8N5O2f5LHMlSSXn7X5LM0x/jxS/70VbERHSYjjjAeGLkSB1Ke0OZNB3ZHkhY0EOIMzSM/H0FDKXnz7CHicT1NCKdZrirKn3AfQ==;\n\t5:O98eKxEqv+d5phQIaCYfOmlaDDAXmQ/ffkNr6p99rvpG4fly94mY3DUBQq0HLoXy0CqMwzaz90Ynejtv/FoY81cxL3xhp0f8IBgTLwZbSMrZblF+m3uFs9RHXQHbyjTfEC8I2qoPx9y+wjAiQNieNcz3xeAHa46dhH0yVuCeb/0=;\n\t7:ijWxmasPYi8qjCMbrnH9tzOwBCbzOG7sMXSSwT/WSXgAT1cO3If1N+ijbaBEV2PN1dRpu306Z5EXuM6hyVP1g06kOs/h0FtVM6DPakOM8XvU/2D/tMPYgm0Bd6L1VDkhlAg6urMHBprm5veiPEOCIxQ3bGANgrjTV2wIhgaHnEIxPpp1al/TsPzMBPSY3yCwzY1D82Sjjbdzealyn/8bls/yBvrRM2udTZXBj81ZhbUhWpTsqFNZmSPoOVkGJVhE"
        ],
        "X-MS-TrafficTypeDiagnostic": "AM0PR04MB4673:",
        "X-Microsoft-Antispam-PRVS": "<AM0PR04MB4673D848C702C78CDC123162901E0@AM0PR04MB4673.eurprd04.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197)(103651359005742); ",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231355)(944501410)(52105095)(10201501046)(3002001)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699050);\n\tSRVR:AM0PR04MB4673; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB4673; ",
        "X-Forefront-PRVS": "0798146F16",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(136003)(396003)(346002)(366004)(376002)(39860400002)(199004)(189003)(16526019)(48376002)(186003)(1076002)(3846002)(5660300001)(486006)(6506007)(386003)(16586007)(316002)(36756003)(14444005)(44832011)(5009440100003)(52116002)(6116002)(2616005)(76176011)(446003)(51416003)(11346002)(956004)(476003)(53946003)(6512007)(47776003)(106356001)(25786009)(50226002)(2906002)(68736007)(105586002)(81156014)(81166006)(7736002)(6666003)(305945005)(8676002)(8936002)(4326008)(575784001)(86362001)(97736004)(6486002)(478600001)(50466002)(66066001)(26005)(53936002)(110426005);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB4673;\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": "xM+GYJPy32BW6G4r9T8jUjeKw+D9RDuJhhssDnPVPCuFyfeTTF0BULrNxH9Khp1KkVtbgEe1JnWibo+1mM6Ey/vKa5TIH3/Cg79pR4ox71iUAoLD/XfAM3WOthitlFPXGiD8xj/iLRE7rCkN68XYC3s2uQsTu3ZiCsG/+pzFLCIk+AF+3ZVlIO8A/Md8wu/bZT6SUdA/yVUZEw+/9uAsRwKDgXa8PN8wTUodxLPcfe42mM3Mq8pD+joGYZDn1Z/UPiSOvhhgn1VNfwOiOMatoC+wIhxA66uwHQ/kpr6N/4RavZlLkV7831HpFtWx4sYR2R1B1/thLd0vHwTpGlKZDoywP/06en2yccUx5fNeWJY=",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Sep 2018 10:37:49.1956\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "952cec03-8ee5-4e46-a676-08d61c899d93",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "AM0PR04MB4673",
        "Subject": "[dpdk-dev] [PATCH 03/11] net/dpaa2: upgrade dpni to mc FW APIs to\n\t10.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\nSigned-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>\n---\n drivers/net/dpaa2/dpaa2_ethdev.c    |  21 +-\n drivers/net/dpaa2/mc/dpni.c         |  22 +-\n drivers/net/dpaa2/mc/fsl_dpni.h     | 343 +++++++++++++++-------------\n drivers/net/dpaa2/mc/fsl_dpni_cmd.h |  17 +-\n drivers/net/dpaa2/mc/fsl_net.h      |   2 +-\n 5 files changed, 229 insertions(+), 176 deletions(-)",
    "diff": "diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c\nindex 8d3d54bfe..7ae74c65d 100644\n--- a/drivers/net/dpaa2/dpaa2_ethdev.c\n+++ b/drivers/net/dpaa2/dpaa2_ethdev.c\n@@ -219,6 +219,7 @@ dpaa2_alloc_rx_tx_queues(struct rte_eth_dev *dev)\n \tstruct dpaa2_dev_priv *priv = dev->data->dev_private;\n \tuint16_t dist_idx;\n \tuint32_t vq_id;\n+\tuint8_t num_rxqueue_per_tc;\n \tstruct dpaa2_queue *mc_q, *mcq;\n \tuint32_t tot_queues;\n \tint i;\n@@ -226,6 +227,7 @@ dpaa2_alloc_rx_tx_queues(struct rte_eth_dev *dev)\n \n \tPMD_INIT_FUNC_TRACE();\n \n+\tnum_rxqueue_per_tc = (priv->nb_rx_queues / priv->num_rx_tc);\n \ttot_queues = priv->nb_rx_queues + priv->nb_tx_queues;\n \tmc_q = rte_malloc(NULL, sizeof(struct dpaa2_queue) * tot_queues,\n \t\t\t  RTE_CACHE_LINE_SIZE);\n@@ -264,8 +266,8 @@ dpaa2_alloc_rx_tx_queues(struct rte_eth_dev *dev)\n \tvq_id = 0;\n \tfor (dist_idx = 0; dist_idx < priv->nb_rx_queues; dist_idx++) {\n \t\tmcq = (struct dpaa2_queue *)priv->rx_vq[vq_id];\n-\t\tmcq->tc_index = DPAA2_DEF_TC;\n-\t\tmcq->flow_id = dist_idx;\n+\t\tmcq->tc_index = dist_idx / num_rxqueue_per_tc;\n+\t\tmcq->flow_id = dist_idx % num_rxqueue_per_tc;\n \t\tvq_id++;\n \t}\n \n@@ -428,7 +430,7 @@ dpaa2_dev_rx_queue_setup(struct rte_eth_dev *dev,\n \tstruct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw;\n \tstruct dpaa2_queue *dpaa2_q;\n \tstruct dpni_queue cfg;\n-\tuint8_t options = 0;\n+\tuint8_t options = 0, num_rxqueue_per_tc;\n \tuint8_t flow_id;\n \tuint32_t bpid;\n \tint ret;\n@@ -448,8 +450,10 @@ dpaa2_dev_rx_queue_setup(struct rte_eth_dev *dev,\n \tdpaa2_q = (struct dpaa2_queue *)priv->rx_vq[rx_queue_id];\n \tdpaa2_q->mb_pool = mb_pool; /**< mbuf pool to populate RX ring. */\n \n+\tnum_rxqueue_per_tc = (priv->nb_rx_queues / priv->num_rx_tc);\n+\n \t/*Get the flow id from given VQ id*/\n-\tflow_id = rx_queue_id % priv->nb_rx_queues;\n+\tflow_id = rx_queue_id % num_rxqueue_per_tc;\n \tmemset(&cfg, 0, sizeof(struct dpni_queue));\n \n \toptions = options | DPNI_QUEUE_OPT_USER_CTX;\n@@ -1793,7 +1797,7 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)\n \tstruct dpni_attr attr;\n \tstruct dpaa2_dev_priv *priv = eth_dev->data->dev_private;\n \tstruct dpni_buffer_layout layout;\n-\tint ret, hw_id;\n+\tint ret, hw_id, i;\n \n \tPMD_INIT_FUNC_TRACE();\n \n@@ -1839,11 +1843,8 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)\n \n \tpriv->num_rx_tc = attr.num_rx_tcs;\n \n-\t/* Resetting the \"num_rx_queues\" to equal number of queues in first TC\n-\t * as only one TC is supported on Rx Side. Once Multiple TCs will be\n-\t * in use for Rx processing then this will be changed or removed.\n-\t */\n-\tpriv->nb_rx_queues = attr.num_queues;\n+\tfor (i = 0; i < attr.num_rx_tcs; i++)\n+\t\tpriv->nb_rx_queues += attr.num_queues;\n \n \t/* Using number of TX queues as number of TX TCs */\n \tpriv->nb_tx_queues = attr.num_tx_tcs;\ndiff --git a/drivers/net/dpaa2/mc/dpni.c b/drivers/net/dpaa2/mc/dpni.c\nindex 9f228169a..6f5393f26 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@@ -1471,6 +1478,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 +1774,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  *\ndiff --git a/drivers/net/dpaa2/mc/fsl_dpni.h b/drivers/net/dpaa2/mc/fsl_dpni.h\nindex f0edcd270..40f045c9d 100644\n--- a/drivers/net/dpaa2/mc/fsl_dpni.h\n+++ b/drivers/net/dpaa2/mc/fsl_dpni.h\n@@ -77,6 +77,11 @@ struct fsl_mc_io;\n  */\n #define DPNI_OPT_NO_FS\t\t\t\t0x000020\n \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 +93,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 +180,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 +301,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 +327,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 +422,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 +445,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 +520,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 +570,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 +578,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 +585,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@@ -750,11 +780,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 +954,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 +1007,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;\ndiff --git a/drivers/net/dpaa2/mc/fsl_dpni_cmd.h b/drivers/net/dpaa2/mc/fsl_dpni_cmd.h\nindex eb3e99878..fe0915968 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\t7\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@@ -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@@ -113,6 +115,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 +231,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@@ -415,6 +420,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;\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": [
        "03/11"
    ]
}