get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 104927,
    "url": "http://patchwork.dpdk.org/api/patches/104927/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20211206121824.3493-2-nipun.gupta@nxp.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20211206121824.3493-2-nipun.gupta@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20211206121824.3493-2-nipun.gupta@nxp.com",
    "date": "2021-12-06T12:18:08",
    "name": "[01/17] bus/fslmc: update MC to 10.29",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "0f2d36e35d897d91f609bebdf8fc5d9afaeed450",
    "submitter": {
        "id": 471,
        "url": "http://patchwork.dpdk.org/api/people/471/?format=api",
        "name": "Nipun Gupta",
        "email": "nipun.gupta@nxp.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patchwork.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20211206121824.3493-2-nipun.gupta@nxp.com/mbox/",
    "series": [
        {
            "id": 20873,
            "url": "http://patchwork.dpdk.org/api/series/20873/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=20873",
            "date": "2021-12-06T12:18:07",
            "name": "features and fixes on NXP eth devices",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/20873/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/104927/comments/",
    "check": "warning",
    "checks": "http://patchwork.dpdk.org/api/patches/104927/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 6153AA034F;\n\tMon,  6 Dec 2021 13:18:33 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 6726241174;\n\tMon,  6 Dec 2021 13:18:29 +0100 (CET)",
            "from inva020.nxp.com (inva020.nxp.com [92.121.34.13])\n by mails.dpdk.org (Postfix) with ESMTP id ED80540040\n for <dev@dpdk.org>; Mon,  6 Dec 2021 13:18:27 +0100 (CET)",
            "from inva020.nxp.com (localhost [127.0.0.1])\n by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id C62521A12E9;\n Mon,  6 Dec 2021 13:18:27 +0100 (CET)",
            "from aprdc01srsp001v.ap-rdc01.nxp.com\n (aprdc01srsp001v.ap-rdc01.nxp.com [165.114.16.16])\n by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 63B511A0E16;\n Mon,  6 Dec 2021 13:18:27 +0100 (CET)",
            "from lsv03274.swis.in-blr01.nxp.com (lsv03274.swis.in-blr01.nxp.com\n [92.120.147.114])\n by aprdc01srsp001v.ap-rdc01.nxp.com (Postfix) with ESMTP id 60D77183AC96;\n Mon,  6 Dec 2021 20:18:26 +0800 (+08)"
        ],
        "From": "nipun.gupta@nxp.com",
        "To": "dev@dpdk.org",
        "Cc": "thomas@monjalon.net, ferruh.yigit@intel.com, hemant.agrawal@nxp.com,\n Nipun Gupta <nipun.gupta@nxp.com>, Gagandeep Singh <g.singh@nxp.com>",
        "Subject": "[PATCH 01/17] bus/fslmc: update MC to 10.29",
        "Date": "Mon,  6 Dec 2021 17:48:08 +0530",
        "Message-Id": "<20211206121824.3493-2-nipun.gupta@nxp.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20211206121824.3493-1-nipun.gupta@nxp.com>",
        "References": "<20211206121824.3493-1-nipun.gupta@nxp.com>",
        "X-Virus-Scanned": "ClamAV using ClamSMTP",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <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 <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "From: Nipun Gupta <nipun.gupta@nxp.com>\n\nupdate MC firmware library version to 10.29\n\nSigned-off-by: Nipun Gupta <nipun.gupta@nxp.com>\nSigned-off-by: Gagandeep Singh <g.singh@nxp.com>\n---\n drivers/bus/fslmc/mc/fsl_dpmng.h      |   2 +-\n drivers/net/dpaa2/mc/dpdmux.c         |   8 ++\n drivers/net/dpaa2/mc/dpkg.c           |   7 +-\n drivers/net/dpaa2/mc/dpni.c           | 111 ++++++++++++++++++++------\n drivers/net/dpaa2/mc/fsl_dpdmux.h     |   3 +\n drivers/net/dpaa2/mc/fsl_dpdmux_cmd.h |   5 +-\n drivers/net/dpaa2/mc/fsl_dpni.h       |  54 ++++++++++---\n drivers/net/dpaa2/mc/fsl_dpni_cmd.h   |  57 +++++++------\n 8 files changed, 181 insertions(+), 66 deletions(-)",
    "diff": "diff --git a/drivers/bus/fslmc/mc/fsl_dpmng.h b/drivers/bus/fslmc/mc/fsl_dpmng.h\nindex 7e9bd96429..073d47efbf 100644\n--- a/drivers/bus/fslmc/mc/fsl_dpmng.h\n+++ b/drivers/bus/fslmc/mc/fsl_dpmng.h\n@@ -20,7 +20,7 @@ struct fsl_mc_io;\n  * Management Complex firmware version information\n  */\n #define MC_VER_MAJOR 10\n-#define MC_VER_MINOR 28\n+#define MC_VER_MINOR 29\n \n /**\n  * struct mc_version\ndiff --git a/drivers/net/dpaa2/mc/dpdmux.c b/drivers/net/dpaa2/mc/dpdmux.c\nindex edbb01b45b..1bb153cad7 100644\n--- a/drivers/net/dpaa2/mc/dpdmux.c\n+++ b/drivers/net/dpaa2/mc/dpdmux.c\n@@ -398,6 +398,9 @@ int dpdmux_get_attributes(struct fsl_mc_io *mc_io,\n \tattr->num_ifs = le16_to_cpu(rsp_params->num_ifs);\n \tattr->mem_size = le16_to_cpu(rsp_params->mem_size);\n \tattr->default_if = le16_to_cpu(rsp_params->default_if);\n+\tattr->max_dmat_entries = le16_to_cpu(rsp_params->max_dmat_entries);\n+\tattr->max_mc_groups = le16_to_cpu(rsp_params->max_mc_groups);\n+\tattr->max_vlan_ids = le16_to_cpu(rsp_params->max_vlan_ids);\n \n \treturn 0;\n }\n@@ -470,6 +473,11 @@ int dpdmux_if_disable(struct fsl_mc_io *mc_io,\n  * will be updated with the minimum value of the mfls of the connected\n  * dpnis and the actual value of dmux mfl.\n  *\n+ * If dpdmux object is created using DPDMUX_OPT_AUTO_MAX_FRAME_LEN and maximum\n+ * frame length is changed for a dpni connected to dpdmux interface the change\n+ * is propagated through dpdmux interfaces and will overwrite the value set using\n+ * this API.\n+ *\n  * Return:\t'0' on Success; Error code otherwise.\n  */\n int dpdmux_set_max_frame_length(struct fsl_mc_io *mc_io,\ndiff --git a/drivers/net/dpaa2/mc/dpkg.c b/drivers/net/dpaa2/mc/dpkg.c\nindex 1e171eedc7..4789976b7d 100644\n--- a/drivers/net/dpaa2/mc/dpkg.c\n+++ b/drivers/net/dpaa2/mc/dpkg.c\n@@ -1,6 +1,6 @@\n /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)\n  *\n- * Copyright 2017 NXP\n+ * Copyright 2017-2021 NXP\n  *\n  */\n #include <fsl_mc_sys.h>\n@@ -63,10 +63,7 @@ dpkg_prepare_key_cfg(const struct dpkg_profile_cfg *cfg, uint8_t *key_cfg_buf)\n \t\tdpkg_set_field(extr->extract_type, EXTRACT_TYPE,\n \t\t\t       cfg->extracts[i].type);\n \n-\t\tif (extr->num_of_byte_masks > DPKG_NUM_OF_MASKS)\n-\t\t\treturn -EINVAL;\n-\n-\t\tfor (j = 0; j < extr->num_of_byte_masks; j++) {\n+\t\tfor (j = 0; j < DPKG_NUM_OF_MASKS; j++) {\n \t\t\textr->masks[j].mask = cfg->extracts[i].masks[j].mask;\n \t\t\textr->masks[j].offset =\n \t\t\t\tcfg->extracts[i].masks[j].offset;\ndiff --git a/drivers/net/dpaa2/mc/dpni.c b/drivers/net/dpaa2/mc/dpni.c\nindex 60048d6c43..cf78295d90 100644\n--- a/drivers/net/dpaa2/mc/dpni.c\n+++ b/drivers/net/dpaa2/mc/dpni.c\n@@ -128,6 +128,7 @@ int dpni_create(struct fsl_mc_io *mc_io,\n \tcmd_params->num_cgs = cfg->num_cgs;\n \tcmd_params->num_opr = cfg->num_opr;\n \tcmd_params->dist_key_size = cfg->dist_key_size;\n+\tcmd_params->num_channels = cfg->num_channels;\n \n \t/* send command to mc*/\n \terr = mc_send_command(mc_io, &cmd);\n@@ -203,7 +204,7 @@ int dpni_set_pools(struct fsl_mc_io *mc_io,\n \tcmd_params = (struct dpni_cmd_set_pools *)cmd.params;\n \tcmd_params->num_dpbp = cfg->num_dpbp;\n \tcmd_params->pool_options = cfg->pool_options;\n-\tfor (i = 0; i < cmd_params->num_dpbp; i++) {\n+\tfor (i = 0; i < DPNI_MAX_DPBP; i++) {\n \t\tcmd_params->pool[i].dpbp_id =\n \t\t\tcpu_to_le16(cfg->pools[i].dpbp_id);\n \t\tcmd_params->pool[i].priority_mask =\n@@ -592,6 +593,7 @@ int dpni_get_attributes(struct fsl_mc_io *mc_io,\n \tattr->num_tx_tcs = rsp_params->num_tx_tcs;\n \tattr->mac_filter_entries = rsp_params->mac_filter_entries;\n \tattr->vlan_filter_entries = rsp_params->vlan_filter_entries;\n+\tattr->num_channels = rsp_params->num_channels;\n \tattr->qos_entries = rsp_params->qos_entries;\n \tattr->fs_entries = le16_to_cpu(rsp_params->fs_entries);\n \tattr->qos_key_size = rsp_params->qos_key_size;\n@@ -815,6 +817,9 @@ int dpni_get_offload(struct fsl_mc_io *mc_io,\n  *\t\t\tin all enqueue operations\n  *\n  * Return:\t'0' on Success; Error code otherwise.\n+ *\n+ * If dpni object is created using multiple Tc channels this function will return\n+ * qdid value for the first channel\n  */\n int dpni_get_qdid(struct fsl_mc_io *mc_io,\n \t\t  uint32_t cmd_flags,\n@@ -958,7 +963,12 @@ int dpni_get_link_state(struct fsl_mc_io *mc_io,\n  * @token:\t\tToken of DPNI object\n  * @tx_cr_shaper:\tTX committed rate shaping configuration\n  * @tx_er_shaper:\tTX excess rate shaping configuration\n- * @coupled:\t\tCommitted and excess rate shapers are coupled\n+ * @param:\t\tSpecial parameters\n+ *\t\t\tbit0: Committed and excess rates are coupled\n+ *\t\t\tbit1: 1 modify LNI shaper, 0 modify channel shaper\n+ *\t\t\tbit8-15: Tx channel to be shaped. Used only if bit1 is set to zero\n+ *\t\t\tbits16-26: OAL (Overhead accounting length 11bit value). Used only\n+ *\t\t\twhen bit1 is set.\n  *\n  * Return:\t'0' on Success; Error code otherwise.\n  */\n@@ -967,10 +977,13 @@ int dpni_set_tx_shaping(struct fsl_mc_io *mc_io,\n \t\t\tuint16_t token,\n \t\t\tconst struct dpni_tx_shaping_cfg *tx_cr_shaper,\n \t\t\tconst struct dpni_tx_shaping_cfg *tx_er_shaper,\n-\t\t\tint coupled)\n+\t\t\tuint32_t param)\n {\n \tstruct dpni_cmd_set_tx_shaping *cmd_params;\n \tstruct mc_command cmd = { 0 };\n+\tint coupled, lni_shaper;\n+\tuint8_t channel_id;\n+\tuint16_t oal;\n \n \t/* prepare command */\n \tcmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_TX_SHAPING,\n@@ -985,7 +998,18 @@ int dpni_set_tx_shaping(struct fsl_mc_io *mc_io,\n \t\tcpu_to_le32(tx_cr_shaper->rate_limit);\n \tcmd_params->tx_er_rate_limit =\n \t\tcpu_to_le32(tx_er_shaper->rate_limit);\n-\tdpni_set_field(cmd_params->coupled, COUPLED, coupled);\n+\n+\tcoupled = !!(param & 0x01);\n+\tdpni_set_field(cmd_params->options, COUPLED, coupled);\n+\n+\tlni_shaper = !!((param >> 1) & 0x01);\n+\tdpni_set_field(cmd_params->options, LNI_SHAPER, lni_shaper);\n+\n+\tchannel_id = (param >> 8) & 0xff;\n+\tcmd_params->channel_id = channel_id;\n+\n+\toal = (param >> 16) & 0x7FF;\n+\tcmd_params->oal = cpu_to_le16(oal);\n \n \t/* send command to mc*/\n \treturn mc_send_command(mc_io, &cmd);\n@@ -1543,6 +1567,7 @@ int dpni_set_tx_priorities(struct fsl_mc_io *mc_io,\n \t\t\t\t\t  cmd_flags,\n \t\t\t\t\t  token);\n \tcmd_params = (struct dpni_cmd_set_tx_priorities *)cmd.params;\n+\tcmd_params->channel_idx = cfg->channel_idx;\n \tdpni_set_field(cmd_params->flags,\n \t\t\t\tSEPARATE_GRP,\n \t\t\t\tcfg->separate_groups);\n@@ -2053,7 +2078,13 @@ void dpni_extract_early_drop(struct dpni_early_drop_cfg *cfg,\n  * @cmd_flags:\tCommand flags; one or more of 'MC_CMD_FLAG_'\n  * @token:\tToken of DPNI object\n  * @qtype:\tType of queue - only Rx and Tx types are supported\n- * @tc_id:\tTraffic class selection (0-7)\n+ * @param:\tTraffic class and channel ID.\n+ *\t\tMSB - channel id; used only for DPNI_QUEUE_TX and DPNI_QUEUE_TX_CONFIRM,\n+ *\t\tignored for the rest\n+ *\t\tLSB - traffic class\n+ *\t\tUse macro DPNI_BUILD_PARAM() to build correct value.\n+ *\t\tIf dpni uses a single channel (uses only channel zero) the parameter can receive\n+ *\t\ttraffic class directly.\n  * @early_drop_iova:  I/O virtual address of 256 bytes DMA-able memory filled\n  *\twith the early-drop configuration by calling dpni_prepare_early_drop()\n  *\n@@ -2066,7 +2097,7 @@ int dpni_set_early_drop(struct fsl_mc_io *mc_io,\n \t\t\tuint32_t cmd_flags,\n \t\t\tuint16_t token,\n \t\t\tenum dpni_queue_type qtype,\n-\t\t\tuint8_t tc_id,\n+\t\t\tuint16_t param,\n \t\t\tuint64_t early_drop_iova)\n {\n \tstruct dpni_cmd_early_drop *cmd_params;\n@@ -2078,7 +2109,8 @@ int dpni_set_early_drop(struct fsl_mc_io *mc_io,\n \t\t\t\t\t  token);\n \tcmd_params = (struct dpni_cmd_early_drop *)cmd.params;\n \tcmd_params->qtype = qtype;\n-\tcmd_params->tc = tc_id;\n+\tcmd_params->tc = (uint8_t)(param & 0xff);\n+\tcmd_params->channel_id = (uint8_t)((param >> 8) & 0xff);\n \tcmd_params->early_drop_iova = cpu_to_le64(early_drop_iova);\n \n \t/* send command to mc*/\n@@ -2091,7 +2123,13 @@ int dpni_set_early_drop(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  * @qtype:\tType of queue - only Rx and Tx types are supported\n- * @tc_id:\tTraffic class selection (0-7)\n+ * @param:\tTraffic class and channel ID.\n+ *\t\tMSB - channel id; used only for DPNI_QUEUE_TX and DPNI_QUEUE_TX_CONFIRM,\n+ *\t\tignored for the rest\n+ *\t\tLSB - traffic class\n+ *\t\tUse macro DPNI_BUILD_PARAM() to build correct value.\n+ *\t\tIf dpni uses a single channel (uses only channel zero) the parameter can receive\n+ *\t\ttraffic class directly.\n  * @early_drop_iova:  I/O virtual address of 256 bytes DMA-able memory\n  *\n  * warning: After calling this function, call dpni_extract_early_drop() to\n@@ -2103,7 +2141,7 @@ int dpni_get_early_drop(struct fsl_mc_io *mc_io,\n \t\t\tuint32_t cmd_flags,\n \t\t\tuint16_t token,\n \t\t\tenum dpni_queue_type qtype,\n-\t\t\tuint8_t tc_id,\n+\t\t\tuint16_t param,\n \t\t\tuint64_t early_drop_iova)\n {\n \tstruct dpni_cmd_early_drop *cmd_params;\n@@ -2115,7 +2153,8 @@ int dpni_get_early_drop(struct fsl_mc_io *mc_io,\n \t\t\t\t\t  token);\n \tcmd_params = (struct dpni_cmd_early_drop *)cmd.params;\n \tcmd_params->qtype = qtype;\n-\tcmd_params->tc = tc_id;\n+\tcmd_params->tc = (uint8_t)(param & 0xff);\n+\tcmd_params->channel_id = (uint8_t)((param >> 8) & 0xff);\n \tcmd_params->early_drop_iova = cpu_to_le64(early_drop_iova);\n \n \t/* send command to mc*/\n@@ -2138,8 +2177,8 @@ int dpni_set_congestion_notification(struct fsl_mc_io *mc_io,\n \t\t\t\t     uint32_t cmd_flags,\n \t\t\t\t     uint16_t token,\n \t\t\t\t     enum dpni_queue_type qtype,\n-\t\t\t\t     uint8_t tc_id,\n-\t\t\tconst struct dpni_congestion_notification_cfg *cfg)\n+\t\t\t\t     uint16_t param,\n+\t\t\t\t     const struct dpni_congestion_notification_cfg *cfg)\n {\n \tstruct dpni_cmd_set_congestion_notification *cmd_params;\n \tstruct mc_command cmd = { 0 };\n@@ -2151,7 +2190,8 @@ int dpni_set_congestion_notification(struct fsl_mc_io *mc_io,\n \t\t\t\t\ttoken);\n \tcmd_params = (struct dpni_cmd_set_congestion_notification *)cmd.params;\n \tcmd_params->qtype = qtype;\n-\tcmd_params->tc = tc_id;\n+\tcmd_params->tc = (uint8_t)(param & 0xff);\n+\tcmd_params->channel_id = (uint8_t)((param >> 8) & 0xff);\n \tcmd_params->congestion_point = cfg->cg_point;\n \tcmd_params->cgid = (uint8_t)cfg->cgid;\n \tcmd_params->dest_id = cpu_to_le32(cfg->dest_cfg.dest_id);\n@@ -2179,7 +2219,8 @@ int dpni_set_congestion_notification(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  * @qtype:\tType of queue - Rx, Tx and Tx confirm types are supported\n- * @tc_id:\tTraffic class selection (0-7)\n+ * @param:\tTraffic class and channel. Bits[0-7] contain traaffic class,\n+ *\t\tbyte[8-15] contains channel id\n  * @cfg:\tcongestion notification configuration\n  *\n  * Return:\t'0' on Success; error code otherwise.\n@@ -2188,8 +2229,8 @@ int dpni_get_congestion_notification(struct fsl_mc_io *mc_io,\n \t\t\t\t     uint32_t cmd_flags,\n \t\t\t\t     uint16_t token,\n \t\t\t\t     enum dpni_queue_type qtype,\n-\t\t\t\t     uint8_t tc_id,\n-\t\t\t\tstruct dpni_congestion_notification_cfg *cfg)\n+\t\t\t\t     uint16_t param,\n+\t\t\t\t     struct dpni_congestion_notification_cfg *cfg)\n {\n \tstruct dpni_rsp_get_congestion_notification *rsp_params;\n \tstruct dpni_cmd_get_congestion_notification *cmd_params;\n@@ -2203,7 +2244,8 @@ int dpni_get_congestion_notification(struct fsl_mc_io *mc_io,\n \t\t\t\t\ttoken);\n \tcmd_params = (struct dpni_cmd_get_congestion_notification *)cmd.params;\n \tcmd_params->qtype = qtype;\n-\tcmd_params->tc = tc_id;\n+\tcmd_params->tc = (uint8_t)(param & 0xff);\n+\tcmd_params->channel_id = (uint8_t)((param >> 8) & 0xff);\n \tcmd_params->congestion_point = cfg->cg_point;\n \tcmd_params->cgid = cfg->cgid;\n \n@@ -2280,7 +2322,7 @@ int dpni_set_queue(struct fsl_mc_io *mc_io,\n \t\t   uint32_t cmd_flags,\n \t\t   uint16_t token,\n \t\t   enum dpni_queue_type qtype,\n-\t\t   uint8_t tc,\n+\t\t   uint16_t param,\n \t\t   uint8_t index,\n \t\t   uint8_t options,\n \t\t   const struct dpni_queue *queue)\n@@ -2294,7 +2336,8 @@ int dpni_set_queue(struct fsl_mc_io *mc_io,\n \t\t\t\t\t  token);\n \tcmd_params = (struct dpni_cmd_set_queue *)cmd.params;\n \tcmd_params->qtype = qtype;\n-\tcmd_params->tc = tc;\n+\tcmd_params->tc = (uint8_t)(param & 0xff);\n+\tcmd_params->channel_id = (uint8_t)((param >> 8) & 0xff);\n \tcmd_params->index = index;\n \tcmd_params->options = options;\n \tcmd_params->dest_id = cpu_to_le32(queue->destination.id);\n@@ -2317,7 +2360,13 @@ int dpni_set_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  * @qtype:\tType of queue - all queue types are supported\n- * @tc:\t\tTraffic class, in range 0 to NUM_TCS - 1\n+ * @param:\tTraffic class and channel ID.\n+ *\t\tMSB - channel id; used only for DPNI_QUEUE_TX and DPNI_QUEUE_TX_CONFIRM,\n+ *\t\tignored for the rest\n+ *\t\tLSB - traffic class\n+ *\t\tUse macro DPNI_BUILD_PARAM() to build correct value.\n+ *\t\tIf dpni uses a single channel (uses only channel zero) the parameter can receive\n+ *\t\ttraffic class directly.\n  * @index:\tSelects the specific queue out of the set allocated for the\n  *\t\tsame TC. Value must be in range 0 to NUM_QUEUES - 1\n  * @queue:\tQueue configuration structure\n@@ -2329,7 +2378,7 @@ int dpni_get_queue(struct fsl_mc_io *mc_io,\n \t\t   uint32_t cmd_flags,\n \t\t   uint16_t token,\n \t\t   enum dpni_queue_type qtype,\n-\t\t   uint8_t tc,\n+\t\t   uint16_t param,\n \t\t   uint8_t index,\n \t\t   struct dpni_queue *queue,\n \t\t   struct dpni_queue_id *qid)\n@@ -2345,8 +2394,9 @@ int dpni_get_queue(struct fsl_mc_io *mc_io,\n \t\t\t\t\t  token);\n \tcmd_params = (struct dpni_cmd_get_queue *)cmd.params;\n \tcmd_params->qtype = qtype;\n-\tcmd_params->tc = tc;\n+\tcmd_params->tc = (uint8_t)(param & 0xff);\n \tcmd_params->index = index;\n+\tcmd_params->channel_id = (uint8_t)((param >> 8) & 0xff);\n \n \t/* send command to mc */\n \terr = mc_send_command(mc_io, &cmd);\n@@ -2382,8 +2432,16 @@ int dpni_get_queue(struct fsl_mc_io *mc_io,\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 6.\n- * @param:\tCustom parameter for some pages used to select\n- *\t\ta certain statistic source, for example the TC.\n+ * @param:  Custom parameter for some pages used to select\n+ *\t\t a certain statistic source, for example the TC.\n+ *\t\t - page_0: not used\n+ *\t\t - page_1: not used\n+ *\t\t - page_2: not used\n+ *\t\t - page_3: high_byte - channel_id, low_byte - traffic class\n+ *\t\t - page_4: high_byte - queue_index have meaning only if dpni is\n+ *\t\t created using option DPNI_OPT_CUSTOM_CG, low_byte - traffic class\n+ *\t\t - page_5: not used\n+ *\t\t - page_6: not used\n  * @stat:\tStructure containing the statistics\n  *\n  * Return:\t'0' on Success; Error code otherwise.\n@@ -2471,7 +2529,7 @@ int dpni_set_taildrop(struct fsl_mc_io *mc_io,\n \t\t      uint16_t token,\n \t\t      enum dpni_congestion_point cg_point,\n \t\t      enum dpni_queue_type qtype,\n-\t\t      uint8_t tc,\n+\t\t      uint16_t param,\n \t\t      uint8_t index,\n \t\t      struct dpni_taildrop *taildrop)\n {\n@@ -2485,7 +2543,8 @@ int dpni_set_taildrop(struct fsl_mc_io *mc_io,\n \tcmd_params = (struct dpni_cmd_set_taildrop *)cmd.params;\n \tcmd_params->congestion_point = cg_point;\n \tcmd_params->qtype = qtype;\n-\tcmd_params->tc = tc;\n+\tcmd_params->tc = (uint8_t)(param & 0xff);\n+\tcmd_params->channel_id = (uint8_t)((param >> 8) & 0xff);\n \tcmd_params->index = index;\n \tcmd_params->units = taildrop->units;\n \tcmd_params->threshold = cpu_to_le32(taildrop->threshold);\ndiff --git a/drivers/net/dpaa2/mc/fsl_dpdmux.h b/drivers/net/dpaa2/mc/fsl_dpdmux.h\nindex b01a98eb59..4600ea94d4 100644\n--- a/drivers/net/dpaa2/mc/fsl_dpdmux.h\n+++ b/drivers/net/dpaa2/mc/fsl_dpdmux.h\n@@ -184,6 +184,9 @@ struct dpdmux_attr {\n \tuint16_t num_ifs;\n \tuint16_t mem_size;\n \tuint16_t default_if;\n+\tuint16_t max_dmat_entries;\n+\tuint16_t max_mc_groups;\n+\tuint16_t max_vlan_ids;\n };\n \n int dpdmux_get_attributes(struct fsl_mc_io *mc_io,\ndiff --git a/drivers/net/dpaa2/mc/fsl_dpdmux_cmd.h b/drivers/net/dpaa2/mc/fsl_dpdmux_cmd.h\nindex f8a1b5b1ae..bf6b8a20d1 100644\n--- a/drivers/net/dpaa2/mc/fsl_dpdmux_cmd.h\n+++ b/drivers/net/dpaa2/mc/fsl_dpdmux_cmd.h\n@@ -35,7 +35,7 @@\n \n #define DPDMUX_CMDID_ENABLE\t\t\tDPDMUX_CMD(0x002)\n #define DPDMUX_CMDID_DISABLE\t\t\tDPDMUX_CMD(0x003)\n-#define DPDMUX_CMDID_GET_ATTR\t\t\tDPDMUX_CMD_V2(0x004)\n+#define DPDMUX_CMDID_GET_ATTR\t\t\tDPDMUX_CMD_V3(0x004)\n #define DPDMUX_CMDID_RESET\t\t\tDPDMUX_CMD(0x005)\n #define DPDMUX_CMDID_IS_ENABLED\t\t\tDPDMUX_CMD(0x006)\n #define DPDMUX_CMDID_SET_MAX_FRAME_LENGTH\tDPDMUX_CMD(0x0a1)\n@@ -119,6 +119,9 @@ struct dpdmux_rsp_get_attr {\n \tuint32_t pad2;\n \n \tuint64_t options;\n+\tuint16_t max_dmat_entries;\n+\tuint16_t max_mc_groups;\n+\tuint16_t max_vlan_ids;\n };\n \n struct dpdmux_cmd_set_max_frame_length {\ndiff --git a/drivers/net/dpaa2/mc/fsl_dpni.h b/drivers/net/dpaa2/mc/fsl_dpni.h\nindex 469ab9b3d4..8aead28261 100644\n--- a/drivers/net/dpaa2/mc/fsl_dpni.h\n+++ b/drivers/net/dpaa2/mc/fsl_dpni.h\n@@ -36,6 +36,10 @@ struct fsl_mc_io;\n  * Maximum number of storage-profiles per DPNI\n  */\n #define DPNI_MAX_SP\t\t\t\t2\n+/**\n+ * Maximum number of Tx channels per DPNI\n+ */\n+#define DPNI_MAX_CHANNELS\t\t16\n \n /**\n  * All traffic classes considered; see dpni_set_queue()\n@@ -117,6 +121,13 @@ struct fsl_mc_io;\n  */\n #define DPNI_SW_SEQUENCE_LAYOUT_SIZE 33\n \n+/**\n+ * Build a parameter from dpni channel and trafiic class. This parameter\n+ * will be used to configure / query information from dpni objects created\n+ * to support multiple channels.\n+ */\n+#define DPNI_BUILD_PARAM(channel, tc_id)\t(((channel) << 8) | (tc_id))\n+\n int dpni_open(struct fsl_mc_io *mc_io,\n \t      uint32_t cmd_flags,\n \t      int dpni_id,\n@@ -187,6 +198,8 @@ int dpni_close(struct fsl_mc_io *mc_io,\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+ * @num_channels: Number of egress channels used by this dpni object. If\n+ *\t\tset to zero the dpni object will use a single CEETM channel.\n  */\n struct dpni_cfg {\n \tuint32_t options;\n@@ -200,6 +213,7 @@ struct dpni_cfg {\n \tuint8_t  num_cgs;\n \tuint16_t num_opr;\n \tuint8_t  dist_key_size;\n+\tuint8_t  num_channels;\n };\n \n int dpni_create(struct fsl_mc_io *mc_io,\n@@ -362,6 +376,7 @@ struct dpni_attr {\n \tuint8_t  fs_key_size;\n \tuint16_t wriop_version;\n \tuint8_t  num_cgs;\n+\tuint8_t  num_channels;\n };\n \n int dpni_get_attributes(struct fsl_mc_io *mc_io,\n@@ -779,12 +794,29 @@ struct dpni_tx_shaping_cfg {\n \tuint16_t max_burst_size;\n };\n \n+/**\n+ * Build the parameter for dpni_set_tx_shaping() call\n+ * @oal:\t\tOverhead accounting length. 11bit value added to the size of\n+ *\t\t\teach frame. Used only for LNI shaping. If set to zero, will use default\n+ *\t\t\tvalue of 24. Ignored if shaping_lni is set to zero.\n+ * @shaping_lni:\t1 for LNI shaping (configure whole throughput of the dpni object)\n+ *\t\t\t0 for channel shaping (configure shaping for individual channels)\n+ *\t\t\tSet to one only if dpni is connected to a dpmac object.\n+ * @channel_id:\t\tChannel to be configured. Ignored shaping_lni is set to 1\n+ * @coupled:\t\tCommitted and excess rates are coupled\n+ */\n+#define DPNI_TX_SHAPING_PARAM(oal, shaping_lni, channel_id, coupled)\t( \\\n+\t\t((uint32_t)(((oal) & 0x7ff) << 16)) | \\\n+\t\t((uint32_t)((channel_id) & 0xff) << 8) | \\\n+\t\t((uint32_t)(!!shaping_lni) << 1) | \\\n+\t\t((uint32_t)!!coupled))\n+\n int dpni_set_tx_shaping(struct fsl_mc_io *mc_io,\n \t\t\tuint32_t cmd_flags,\n \t\t\tuint16_t token,\n \t\t\tconst struct dpni_tx_shaping_cfg *tx_cr_shaper,\n \t\t\tconst struct dpni_tx_shaping_cfg *tx_er_shaper,\n-\t\t\tint coupled);\n+\t\t\tuint32_t param);\n \n int dpni_set_max_frame_length(struct fsl_mc_io *mc_io,\n \t\t\t      uint32_t cmd_flags,\n@@ -918,12 +950,14 @@ struct dpni_tx_schedule_cfg {\n /**\n  * struct dpni_tx_priorities_cfg - Structure representing transmission\n  *\t\t\t\t\tpriorities for DPNI TCs\n+ * @channel_idx: channel to perform the configuration\n  * @tc_sched:\tAn array of traffic-classes\n  * @prio_group_A: Priority of group A\n  * @prio_group_B: Priority of group B\n  * @separate_groups: Treat A and B groups as separate\n  */\n struct dpni_tx_priorities_cfg {\n+\tuint8_t channel_idx;\n \tstruct dpni_tx_schedule_cfg tc_sched[DPNI_MAX_TC];\n \tuint32_t prio_group_A;\n \tuint32_t prio_group_B;\n@@ -1155,14 +1189,14 @@ int dpni_set_early_drop(struct fsl_mc_io *mc_io,\n \t\t\tuint32_t cmd_flags,\n \t\t\tuint16_t token,\n \t\t\tenum dpni_queue_type qtype,\n-\t\t\tuint8_t tc_id,\n+\t\t\tuint16_t param,\n \t\t\tuint64_t early_drop_iova);\n \n int dpni_get_early_drop(struct fsl_mc_io *mc_io,\n \t\t\tuint32_t cmd_flags,\n \t\t\tuint16_t token,\n \t\t\tenum dpni_queue_type qtype,\n-\t\t\tuint8_t tc_id,\n+\t\t\tuint16_t param,\n \t\t\tuint64_t early_drop_iova);\n \n /**\n@@ -1290,15 +1324,15 @@ int dpni_set_congestion_notification(struct fsl_mc_io *mc_io,\n \t\t\t\t     uint32_t cmd_flags,\n \t\t\t\t     uint16_t token,\n \t\t\t\t     enum dpni_queue_type qtype,\n-\t\t\t\t     uint8_t tc_id,\n-\t\t\tconst struct dpni_congestion_notification_cfg *cfg);\n+\t\t\t\t     uint16_t param,\n+\t\t\t\t     const struct dpni_congestion_notification_cfg *cfg);\n \n int dpni_get_congestion_notification(struct fsl_mc_io *mc_io,\n \t\t\t\t     uint32_t cmd_flags,\n \t\t\t\t     uint16_t token,\n \t\t\t\t     enum dpni_queue_type qtype,\n-\t\t\t\t     uint8_t tc_id,\n-\t\t\t\tstruct dpni_congestion_notification_cfg *cfg);\n+\t\t\t\t     uint16_t param,\n+\t\t\t\t     struct dpni_congestion_notification_cfg *cfg);\n \n /* DPNI FLC stash options */\n \n@@ -1590,7 +1624,7 @@ int dpni_set_queue(struct fsl_mc_io *mc_io,\n \t\t   uint32_t cmd_flags,\n \t\t   uint16_t token,\n \t\t   enum dpni_queue_type qtype,\n-\t\t   uint8_t tc,\n+\t\t   uint16_t param,\n \t\t   uint8_t index,\n \t\t   uint8_t options,\n \t\t   const struct dpni_queue *queue);\n@@ -1599,7 +1633,7 @@ int dpni_get_queue(struct fsl_mc_io *mc_io,\n \t\t   uint32_t cmd_flags,\n \t\t   uint16_t token,\n \t\t   enum dpni_queue_type qtype,\n-\t\t   uint8_t tc,\n+\t\t   uint16_t param,\n \t\t   uint8_t index,\n \t\t   struct dpni_queue *queue,\n \t\t   struct dpni_queue_id *qid);\n@@ -1643,7 +1677,7 @@ int dpni_set_taildrop(struct fsl_mc_io *mc_io,\n \t\t      uint16_t token,\n \t\t      enum dpni_congestion_point cg_point,\n \t\t      enum dpni_queue_type q_type,\n-\t\t      uint8_t tc,\n+\t\t      uint16_t param,\n \t\t      uint8_t q_index,\n \t\t      struct dpni_taildrop *taildrop);\n \ndiff --git a/drivers/net/dpaa2/mc/fsl_dpni_cmd.h b/drivers/net/dpaa2/mc/fsl_dpni_cmd.h\nindex 6fbd93bb38..8bff2ec9af 100644\n--- a/drivers/net/dpaa2/mc/fsl_dpni_cmd.h\n+++ b/drivers/net/dpaa2/mc/fsl_dpni_cmd.h\n@@ -8,14 +8,15 @@\n #define _FSL_DPNI_CMD_H\n \n /* DPNI Version */\n-#define DPNI_VER_MAJOR\t\t\t\t7\n-#define DPNI_VER_MINOR\t\t\t\t17\n+#define DPNI_VER_MAJOR\t\t\t\t8\n+#define DPNI_VER_MINOR\t\t\t\t0\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_VERSION_4\t\t\t4\n #define DPNI_CMD_VERSION_5\t\t\t5\n+#define DPNI_CMD_VERSION_6\t\t\t6\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@@ -23,17 +24,18 @@\n #define DPNI_CMD_V3(id)\t(((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_VERSION_3)\n #define DPNI_CMD_V4(id)\t(((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_VERSION_4)\n #define DPNI_CMD_V5(id)\t(((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_VERSION_5)\n+#define DPNI_CMD_V6(id)\t(((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_VERSION_6)\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_V5(0x901)\n+#define DPNI_CMDID_CREATE\t\t\tDPNI_CMD_V6(0x901)\n #define DPNI_CMDID_DESTROY\t\t\tDPNI_CMD(0x981)\n #define DPNI_CMDID_GET_API_VERSION\t\tDPNI_CMD(0xa01)\n \n #define DPNI_CMDID_ENABLE\t\t\tDPNI_CMD(0x002)\n #define DPNI_CMDID_DISABLE\t\t\tDPNI_CMD(0x003)\n-#define DPNI_CMDID_GET_ATTR\t\t\tDPNI_CMD_V3(0x004)\n+#define DPNI_CMDID_GET_ATTR\t\t\tDPNI_CMD_V4(0x004)\n #define DPNI_CMDID_RESET\t\t\tDPNI_CMD(0x005)\n #define DPNI_CMDID_IS_ENABLED\t\t\tDPNI_CMD(0x006)\n \n@@ -54,7 +56,7 @@\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_V2(0x21A)\n-#define DPNI_CMDID_SET_TX_SHAPING\t\tDPNI_CMD_V2(0x21B)\n+#define DPNI_CMDID_SET_TX_SHAPING\t\tDPNI_CMD_V3(0x21B)\n \n #define DPNI_CMDID_SET_MCAST_PROMISC\t\tDPNI_CMD(0x220)\n #define DPNI_CMDID_GET_MCAST_PROMISC\t\tDPNI_CMD(0x221)\n@@ -83,25 +85,25 @@\n #define DPNI_CMDID_REMOVE_FS_ENT\t\tDPNI_CMD(0x245)\n #define DPNI_CMDID_CLR_FS_ENT\t\t\tDPNI_CMD(0x246)\n \n-#define DPNI_CMDID_SET_TX_PRIORITIES\t\tDPNI_CMD_V2(0x250)\n+#define DPNI_CMDID_SET_TX_PRIORITIES\t\tDPNI_CMD_V3(0x250)\n #define DPNI_CMDID_GET_RX_TC_POLICING\t\tDPNI_CMD(0x251)\n \n-#define DPNI_CMDID_GET_STATISTICS\t\tDPNI_CMD_V3(0x25D)\n+#define DPNI_CMDID_GET_STATISTICS\t\tDPNI_CMD_V4(0x25D)\n #define DPNI_CMDID_RESET_STATISTICS\t\tDPNI_CMD(0x25E)\n-#define DPNI_CMDID_GET_QUEUE\t\t\tDPNI_CMD_V2(0x25F)\n-#define DPNI_CMDID_SET_QUEUE\t\t\tDPNI_CMD_V2(0x260)\n+#define DPNI_CMDID_GET_QUEUE\t\t\tDPNI_CMD_V3(0x25F)\n+#define DPNI_CMDID_SET_QUEUE\t\t\tDPNI_CMD_V3(0x260)\n #define DPNI_CMDID_GET_TAILDROP\t\t\tDPNI_CMD_V2(0x261)\n-#define DPNI_CMDID_SET_TAILDROP\t\t\tDPNI_CMD_V2(0x262)\n+#define DPNI_CMDID_SET_TAILDROP\t\t\tDPNI_CMD_V3(0x262)\n \n #define DPNI_CMDID_GET_PORT_MAC_ADDR\t\tDPNI_CMD(0x263)\n \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_V2(0x267)\n-#define DPNI_CMDID_GET_CONGESTION_NOTIFICATION\tDPNI_CMD_V2(0x268)\n-#define DPNI_CMDID_SET_EARLY_DROP\t\tDPNI_CMD_V2(0x269)\n-#define DPNI_CMDID_GET_EARLY_DROP\t\tDPNI_CMD_V2(0x26A)\n+#define DPNI_CMDID_SET_CONGESTION_NOTIFICATION\tDPNI_CMD_V3(0x267)\n+#define DPNI_CMDID_GET_CONGESTION_NOTIFICATION\tDPNI_CMD_V3(0x268)\n+#define DPNI_CMDID_SET_EARLY_DROP\t\tDPNI_CMD_V3(0x269)\n+#define DPNI_CMDID_GET_EARLY_DROP\t\tDPNI_CMD_V3(0x26A)\n #define DPNI_CMDID_GET_OFFLOAD\t\t\tDPNI_CMD(0x26B)\n #define DPNI_CMDID_SET_OFFLOAD\t\t\tDPNI_CMD(0x26C)\n #define DPNI_CMDID_SET_TX_CONFIRMATION_MODE\tDPNI_CMD(0x266)\n@@ -136,7 +138,7 @@ struct dpni_cmd_create {\n \tuint8_t num_queues;\n \tuint8_t num_tcs;\n \tuint8_t mac_filter_entries;\n-\tuint8_t pad1;\n+\tuint8_t num_channels;\n \tuint8_t vlan_filter_entries;\n \tuint8_t pad2;\n \tuint8_t qos_entries;\n@@ -230,7 +232,7 @@ struct dpni_rsp_get_attr {\n \tuint8_t num_tx_tcs;\n \t/* response word 1 */\n \tuint8_t vlan_filter_entries;\n-\tuint8_t pad1;\n+\tuint8_t num_channels;\n \tuint8_t qos_entries;\n \tuint8_t pad2;\n \tuint16_t fs_entries;\n@@ -367,6 +369,8 @@ struct dpni_rsp_get_link_state {\n \n #define DPNI_COUPLED_SHIFT\t0\n #define DPNI_COUPLED_SIZE\t1\n+#define DPNI_LNI_SHAPER_SHIFT\t1\n+#define DPNI_LNI_SHAPER_SIZE\t1\n \n struct dpni_cmd_set_tx_shaping {\n \tuint16_t tx_cr_max_burst_size;\n@@ -374,8 +378,10 @@ struct dpni_cmd_set_tx_shaping {\n \tuint32_t pad;\n \tuint32_t tx_cr_rate_limit;\n \tuint32_t tx_er_rate_limit;\n-\t/* from LSB: coupled:1 */\n-\tuint8_t coupled;\n+\t/* from LSB: coupled:1, lni_shaper: 1*/\n+\tuint8_t options;\n+\tuint8_t channel_id;\n+\tuint16_t oal;\n };\n \n struct dpni_cmd_set_max_frame_length {\n@@ -466,7 +472,8 @@ struct dpni_cmd_set_tx_priorities {\n \tuint16_t flags;\n \tuint8_t prio_group_A;\n \tuint8_t prio_group_B;\n-\tuint32_t pad0;\n+\tuint8_t channel_idx;\n+\tuint8_t pad0[3];\n \tuint8_t modes[4];\n \tuint32_t pad1;\n \tuint64_t pad2;\n@@ -499,6 +506,7 @@ struct dpni_cmd_get_queue {\n \tuint8_t qtype;\n \tuint8_t tc;\n \tuint8_t index;\n+\tuint8_t channel_id;\n };\n \n #define DPNI_DEST_TYPE_SHIFT\t\t0\n@@ -551,6 +559,7 @@ struct dpni_cmd_set_queue {\n \tuint64_t user_context;\n \t/* cmd word 4 */\n \tuint8_t cgid;\n+\tuint8_t channel_id;\n };\n \n #define DPNI_DISCARD_ON_MISS_SHIFT\t0\n@@ -683,7 +692,8 @@ struct dpni_early_drop {\n struct dpni_cmd_early_drop {\n \tuint8_t qtype;\n \tuint8_t tc;\n-\tuint8_t pad[6];\n+\tuint8_t channel_id;\n+\tuint8_t pad[5];\n \tuint64_t early_drop_iova;\n };\n \n@@ -723,7 +733,8 @@ struct dpni_cmd_set_taildrop {\n \tuint8_t qtype;\n \tuint8_t tc;\n \tuint8_t index;\n-\tuint32_t pad0;\n+\tuint8_t channel_id;\n+\tuint8_t pad0[3];\n \t/* cmd word 1 */\n \t/* from LSB: enable:1 oal_lo:7 */\n \tuint8_t enable_oal_lo;\n@@ -747,7 +758,7 @@ struct dpni_tx_confirmation_mode {\n struct dpni_cmd_set_congestion_notification {\n \tuint8_t qtype;\n \tuint8_t tc;\n-\tuint8_t pad;\n+\tuint8_t channel_id;\n \tuint8_t congestion_point;\n \tuint8_t cgid;\n \tuint8_t pad2[3];\n@@ -765,7 +776,7 @@ struct dpni_cmd_set_congestion_notification {\n struct dpni_cmd_get_congestion_notification {\n \tuint8_t qtype;\n \tuint8_t tc;\n-\tuint8_t pad;\n+\tuint8_t channel_id;\n \tuint8_t congestion_point;\n \tuint8_t cgid;\n };\n",
    "prefixes": [
        "01/17"
    ]
}