From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by dpdk.space (Postfix) with ESMTP id ABD6DA0679
	for <public@inbox.dpdk.org>; Wed,  3 Apr 2019 16:24:05 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id 8178D1B43B;
	Wed,  3 Apr 2019 16:23:52 +0200 (CEST)
Received: from EUR04-VI1-obe.outbound.protection.outlook.com
 (mail-eopbgr80052.outbound.protection.outlook.com [40.107.8.52])
 by dpdk.org (Postfix) with ESMTP id EC4991B2AE
 for <dev@dpdk.org>; Wed,  3 Apr 2019 16:23:44 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; 
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rd1znLG22qut8gnSnagG59f4CRxyiCO3Wt/73BPX6zQ=;
 b=KeJ63nrsKzkVruNvSbcmjJ3FpxHxPpdOqbZRk7oBXwt82fg4b8Dqu1Gr+xaOjhxsQwuze5mN4BQhEYqtkzcobIZlWH2JZOoWxMHtnCl5ePO7VwuP+zf05Hxbu8uFeT0eXE++hNBrioeSGeRGz9f0DHYib7WnUl675b7bi1sO2PU=
Received: from VI1PR04MB4688.eurprd04.prod.outlook.com (20.177.56.80) by
 VI1PR04MB4960.eurprd04.prod.outlook.com (20.177.49.213) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.1750.19; Wed, 3 Apr 2019 14:23:43 +0000
Received: from VI1PR04MB4688.eurprd04.prod.outlook.com
 ([fe80::f198:d57:e38d:30]) by VI1PR04MB4688.eurprd04.prod.outlook.com
 ([fe80::f198:d57:e38d:30%4]) with mapi id 15.20.1750.017; Wed, 3 Apr 2019
 14:23:43 +0000
From: Shreyansh Jain <shreyansh.jain@nxp.com>
To: "ferruh.yigit@intel.com" <ferruh.yigit@intel.com>
CC: "dev@dpdk.org" <dev@dpdk.org>, Shreyansh Jain <shreyansh.jain@nxp.com>
Thread-Topic: [PATCH 2/3] drivers: update MC firmware version for FSLMC bus
Thread-Index: AQHU6ijX+zwdMW9OREOv+A/4f2X41Q==
Date: Wed, 3 Apr 2019 14:23:43 +0000
Message-ID: <20190403142357.17700-3-shreyansh.jain@nxp.com>
References: <20190403142357.17700-1-shreyansh.jain@nxp.com>
In-Reply-To: <20190403142357.17700-1-shreyansh.jain@nxp.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [92.120.0.8]
x-mailer: git-send-email 2.19.1
x-clientproxiedby: BM1PR01CA0155.INDPRD01.PROD.OUTLOOK.COM
 (2603:1096:b00:68::25) To VI1PR04MB4688.eurprd04.prod.outlook.com
 (2603:10a6:803:71::16)
authentication-results: spf=none (sender IP is )
 smtp.mailfrom=shreyansh.jain@nxp.com; 
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: ccc60a6c-8e4b-41cf-1fae-08d6b83ff993
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: BCL:0; PCL:0;
 RULEID:(2390118)(7020095)(4652040)(8989299)(5600139)(711020)(4605104)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);
 SRVR:VI1PR04MB4960; 
x-ms-traffictypediagnostic: VI1PR04MB4960:
x-microsoft-antispam-prvs: <VI1PR04MB49602484A2FA12AB578A58EB90570@VI1PR04MB4960.eurprd04.prod.outlook.com>
x-forefront-prvs: 0996D1900D
x-forefront-antispam-report: SFV:NSPM;
 SFS:(10009020)(366004)(396003)(136003)(346002)(39860400002)(376002)(51234002)(189003)(199004)(81156014)(14454004)(6486002)(8676002)(478600001)(5640700003)(53936002)(2616005)(6916009)(66066001)(446003)(316002)(11346002)(36756003)(2351001)(81166006)(2501003)(1076003)(6512007)(71200400001)(68736007)(71190400001)(476003)(44832011)(256004)(86362001)(6506007)(5660300002)(76176011)(54906003)(486006)(26005)(15650500001)(30864003)(6436002)(14444005)(8936002)(386003)(186003)(52116002)(50226002)(25786009)(2906002)(106356001)(97736004)(6116002)(305945005)(105586002)(99286004)(4326008)(3846002)(7736002)(102836004);
 DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB4960;
 H:VI1PR04MB4688.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en;
 PTR:InfoNoRecords; MX:1; A:1; 
received-spf: None (protection.outlook.com: nxp.com does not designate
 permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: frDg9wX4wcuTWNX2Q4FdZc+HUDML+pr4h8AG1ooZlN6MUFn40IJuVk2lzqbSD430H5YXc80ABUo0CEqrVSLDZkrx7lXCZJoAQD6r6X0KkCF4RsSocbZ5Y5Ke9p7yOI5QXCzskxKeWU1Gv47ULvmv+5qc+dREuLQm95aQAt+rFW06zo0eLIFjTRpXmcqO1oNxQSvLAMis1cn0lQ8jJQibPJk3nRm28+5yEtAZItuozh57dxXowHdfAnkkBLI0uBWDcG6pODZN0XR4k6CDX3Y3XXrBlQM/haDcwxBkMc+vrSRtl4EGD+ze3NYPcImNJ6HWcHaZ4gzQOIthKLDX7mCeC8ASko5RYxCDWPZX3HwJDIf7I7ksBHzDvWUKZbX+XwxRhI3Y+BHW7qE8F2i+AuB+Qpb3XZeqIM1vZjm+DeXX61I=
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ccc60a6c-8e4b-41cf-1fae-08d6b83ff993
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Apr 2019 14:23:43.3366 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB4960
Subject: [dpdk-dev] [PATCH 2/3] drivers: update MC firmware version for
	FSLMC bus
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>,
 <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>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>
Message-ID: <20190403142343.kzpT8_7UaCmGCIjTs6Cjzfsu3hR_XNXWsEJFgDnFcKA@z>

MC firmware is the core component of FSLMC bus and DPAA2 devices.
Prior to this patch, MC firmware supported 10.10.x version. This
patch bumps the min supported version to 10.14.x.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/bus/fslmc/mc/fsl_dpmng.h    |  2 +-
 drivers/net/dpaa2/dpaa2_ethdev.c    |  1 +
 drivers/net/dpaa2/mc/dpni.c         | 15 +++++-
 drivers/net/dpaa2/mc/fsl_dpni.h     | 84 ++++++++++++++++++++++-------
 drivers/net/dpaa2/mc/fsl_dpni_cmd.h | 40 ++++++++++----
 5 files changed, 110 insertions(+), 32 deletions(-)

diff --git a/drivers/bus/fslmc/mc/fsl_dpmng.h b/drivers/bus/fslmc/mc/fsl_dp=
mng.h
index 8559bef87..bef2ef095 100644
--- a/drivers/bus/fslmc/mc/fsl_dpmng.h
+++ b/drivers/bus/fslmc/mc/fsl_dpmng.h
@@ -18,7 +18,7 @@ struct fsl_mc_io;
  * Management Complex firmware version information
  */
 #define MC_VER_MAJOR 10
-#define MC_VER_MINOR 10
+#define MC_VER_MINOR 14
=20
 /**
  * struct mc_version
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_eth=
dev.c
index 3fbc82977..98ef8a5f5 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -665,6 +665,7 @@ dpaa2_dev_tx_queue_setup(struct rte_eth_dev *dev,
 					 DPNI_CONG_OPT_WRITE_MEM_ON_ENTER |
 					 DPNI_CONG_OPT_WRITE_MEM_ON_EXIT |
 					 DPNI_CONG_OPT_COHERENT_WRITE;
+		cong_notif_cfg.cg_point =3D DPNI_CP_QUEUE;
=20
 		ret =3D dpni_set_congestion_notification(dpni, CMD_PRI_LOW,
 						       priv->token,
diff --git a/drivers/net/dpaa2/mc/dpni.c b/drivers/net/dpaa2/mc/dpni.c
index 6c12a0ae1..d9feb1427 100644
--- a/drivers/net/dpaa2/mc/dpni.c
+++ b/drivers/net/dpaa2/mc/dpni.c
@@ -125,6 +125,7 @@ int dpni_create(struct fsl_mc_io *mc_io,
 	cmd_params->vlan_filter_entries =3D  cfg->vlan_filter_entries;
 	cmd_params->qos_entries =3D cfg->qos_entries;
 	cmd_params->fs_entries =3D cpu_to_le16(cfg->fs_entries);
+	cmd_params->num_cgs =3D cfg->num_cgs;
=20
 	/* send command to mc*/
 	err =3D mc_send_command(mc_io, &cmd);
@@ -199,7 +200,7 @@ int dpni_set_pools(struct fsl_mc_io *mc_io,
 					  token);
 	cmd_params =3D (struct dpni_cmd_set_pools *)cmd.params;
 	cmd_params->num_dpbp =3D cfg->num_dpbp;
-	for (i =3D 0; i < cmd_params->num_dpbp; i++) {
+	for (i =3D 0; i < DPNI_MAX_DPBP; i++) {
 		cmd_params->pool[i].dpbp_id =3D
 			cpu_to_le16(cfg->pools[i].dpbp_id);
 		cmd_params->pool[i].priority_mask =3D
@@ -593,6 +594,7 @@ int dpni_get_attributes(struct fsl_mc_io *mc_io,
 	attr->qos_key_size =3D rsp_params->qos_key_size;
 	attr->fs_key_size =3D rsp_params->fs_key_size;
 	attr->wriop_version =3D le16_to_cpu(rsp_params->wriop_version);
+	attr->num_cgs =3D rsp_params->num_cgs;
=20
 	return 0;
 }
@@ -1800,6 +1802,8 @@ int dpni_set_congestion_notification(struct fsl_mc_io=
 *mc_io,
 	cmd_params =3D (struct dpni_cmd_set_congestion_notification *)cmd.params;
 	cmd_params->qtype =3D qtype;
 	cmd_params->tc =3D tc_id;
+	cmd_params->congestion_point =3D cfg->cg_point;
+	cmd_params->cgid =3D (uint8_t)cfg->cgid;
 	cmd_params->dest_id =3D cpu_to_le32(cfg->dest_cfg.dest_id);
 	cmd_params->notification_mode =3D cpu_to_le16(cfg->notification_mode);
 	cmd_params->dest_priority =3D cfg->dest_cfg.priority;
@@ -1850,6 +1854,8 @@ int dpni_get_congestion_notification(struct fsl_mc_io=
 *mc_io,
 	cmd_params =3D (struct dpni_cmd_get_congestion_notification *)cmd.params;
 	cmd_params->qtype =3D qtype;
 	cmd_params->tc =3D tc_id;
+	cmd_params->congestion_point =3D cfg->cg_point;
+	cmd_params->cgid =3D cfg->cgid;
=20
 	/* send command to mc*/
 	err =3D mc_send_command(mc_io, &cmd);
@@ -1949,6 +1955,7 @@ int dpni_set_queue(struct fsl_mc_io *mc_io,
 		       queue->destination.hold_active);
 	cmd_params->flc =3D cpu_to_le64(queue->flc.value);
 	cmd_params->user_context =3D cpu_to_le64(queue->user_context);
+	cmd_params->cgid =3D queue->cgid;
=20
 	/* send command to mc */
 	return mc_send_command(mc_io, &cmd);
@@ -2010,6 +2017,10 @@ int dpni_get_queue(struct fsl_mc_io *mc_io,
 	queue->user_context =3D le64_to_cpu(rsp_params->user_context);
 	qid->fqid =3D le32_to_cpu(rsp_params->fqid);
 	qid->qdbin =3D le16_to_cpu(rsp_params->qdbin);
+	if (dpni_get_field(rsp_params->flags, CGID_VALID))
+		queue->cgid =3D rsp_params->cgid;
+	else
+		queue->cgid =3D -1;
=20
 	return 0;
 }
@@ -2031,7 +2042,7 @@ int dpni_get_statistics(struct fsl_mc_io *mc_io,
 			uint32_t cmd_flags,
 			uint16_t token,
 			uint8_t page,
-			uint8_t param,
+			uint16_t param,
 			union dpni_statistics *stat)
 {
 	struct mc_command cmd =3D { 0 };
diff --git a/drivers/net/dpaa2/mc/fsl_dpni.h b/drivers/net/dpaa2/mc/fsl_dpn=
i.h
index aecdc8d1f..8b1cfbac7 100644
--- a/drivers/net/dpaa2/mc/fsl_dpni.h
+++ b/drivers/net/dpaa2/mc/fsl_dpni.h
@@ -91,6 +91,10 @@ struct fsl_mc_io;
  * All Tx traffic classes will use a single sender (ignore num_queueus for=
 tx)
  */
 #define DPNI_OPT_SINGLE_SENDER			0x000100
+/**
+ * Define a custom number of congestion groups
+ */
+#define DPNI_OPT_CUSTOM_CG				0x000200
=20
 int dpni_open(struct fsl_mc_io *mc_io,
 	      uint32_t cmd_flags,
@@ -172,6 +176,7 @@ struct dpni_cfg {
 	uint8_t  num_tcs;
 	uint8_t  num_rx_tcs;
 	uint8_t  qos_entries;
+	uint8_t  num_cgs;
 };
=20
 int dpni_create(struct fsl_mc_io *mc_io,
@@ -326,6 +331,7 @@ struct dpni_attr {
 	uint8_t  qos_key_size;
 	uint8_t  fs_key_size;
 	uint16_t wriop_version;
+	uint8_t  num_cgs;
 };
=20
 int dpni_get_attributes(struct fsl_mc_io *mc_io,
@@ -638,6 +644,36 @@ union dpni_statistics {
  */
 #define DPNI_LINK_OPT_PFC_PAUSE	0x0000000000000010ULL
=20
+/**
+ * Advertise 10MB full duplex
+ */
+#define DPNI_ADVERTISED_10BASET_FULL           0x0000000000000001ULL
+/**
+ * Advertise 100MB full duplex
+ */
+#define DPNI_ADVERTISED_100BASET_FULL          0x0000000000000002ULL
+/**
+ * Advertise 1GB full duplex
+ */
+#define DPNI_ADVERTISED_1000BASET_FULL         0x0000000000000004ULL
+/**
+ * Advertise auto-negotiation enable
+ */
+#define DPNI_ADVERTISED_AUTONEG                0x0000000000000008ULL
+/**
+ * Advertise 10GB full duplex
+ */
+#define DPNI_ADVERTISED_10000BASET_FULL        0x0000000000000010ULL
+/**
+ * Advertise 2.5GB full duplex
+ */
+#define DPNI_ADVERTISED_2500BASEX_FULL         0x0000000000000020ULL
+/**
+ * Advertise 5GB full duplex
+ */
+#define DPNI_ADVERTISED_5000BASET_FULL         0x0000000000000040ULL
+
+
 /**
  * struct - Structure representing DPNI link configuration
  * @rate: Rate
@@ -668,7 +704,7 @@ struct dpni_link_state {
 	uint32_t rate;
 	uint64_t options;
 	int up;
-	int     state_valid;
+	int state_valid;
 	uint64_t supported;
 	uint64_t advertising;
 };
@@ -850,7 +886,6 @@ enum dpni_congestion_unit {
 	DPNI_CONGESTION_UNIT_FRAMES
 };
=20
-
 /**
  * enum dpni_dest - DPNI destination types
  * @DPNI_DEST_NONE: Unassigned destination; The queue is set in parked mod=
e and
@@ -924,6 +959,25 @@ struct dpni_dest_cfg {
  */
 #define DPNI_CONG_OPT_FLOW_CONTROL	0x00000040
=20
+/**
+ * enum dpni_congestion_point - Structure representing congestion point
+ * @DPNI_CP_QUEUE:	Set congestion per queue, identified by QUEUE_TYPE, TC
+ *			and QUEUE_INDEX
+ * @DPNI_CP_GROUP:	Set congestion per queue group. Depending on options
+ *			used to define the DPNI this can be either per
+ *			TC (default) or per interface
+ *			(DPNI_OPT_SHARED_CONGESTION set at DPNI create).
+ *			QUEUE_INDEX is ignored if this type is used.
+ * @DPNI_CP_CONGESTION_GROUP: Set per congestion group id. This will work
+ *		only if the DPNI is created with  DPNI_OPT_CUSTOM_CG option
+ */
+
+enum dpni_congestion_point {
+	DPNI_CP_QUEUE,
+	DPNI_CP_GROUP,
+	DPNI_CP_CONGESTION_GROUP,
+};
+
 /**
  * struct dpni_congestion_notification_cfg - congestion notification
  *		configuration
@@ -937,6 +991,8 @@ struct dpni_dest_cfg {
  *	contained in 'options'
  * @dest_cfg: CSCN can be send to either DPIO or DPCON WQ channel
  * @notification_mode: Mask of available options; use 'DPNI_CONG_OPT_<X>' =
values
+ * @cg_point: Congestion point settings
+ * @cgid: id of the congestion group. The index is relative to dpni.
  */
=20
 struct dpni_congestion_notification_cfg {
@@ -947,6 +1003,8 @@ struct dpni_congestion_notification_cfg {
 	uint64_t message_iova;
 	struct dpni_dest_cfg dest_cfg;
 	uint16_t notification_mode;
+	enum dpni_congestion_point cg_point;
+	int cgid;
 };
=20
 int dpni_set_congestion_notification(struct fsl_mc_io *mc_io,
@@ -1016,6 +1074,7 @@ int dpni_get_congestion_notification(struct fsl_mc_io=
 *mc_io,
  *      FD[OFFSET].
  *      For more details check the Frame Descriptor section in the
  *      hardware documentation.
+ *@cgid :indicate the cgid to set relative to dpni
  */
 struct dpni_queue {
 	struct {
@@ -1029,6 +1088,7 @@ struct dpni_queue {
 		uint64_t value;
 		char stash_control;
 	} flc;
+	int cgid;
 };
=20
 /**
@@ -1218,6 +1278,9 @@ int dpni_get_api_version(struct fsl_mc_io *mc_io,
  */
 #define DPNI_QUEUE_OPT_HOLD_ACTIVE	0x00000008
=20
+#define DPNI_QUEUE_OPT_SET_CGID				0x00000040
+#define DPNI_QUEUE_OPT_CLEAR_CGID			0x00000080
+
 int dpni_set_queue(struct fsl_mc_io *mc_io,
 		   uint32_t cmd_flags,
 		   uint16_t token,
@@ -1240,28 +1303,13 @@ int dpni_get_statistics(struct fsl_mc_io *mc_io,
 			uint32_t cmd_flags,
 			uint16_t token,
 			uint8_t page,
-			uint8_t param,
+			uint16_t param,
 			union dpni_statistics *stat);
=20
 int dpni_reset_statistics(struct fsl_mc_io *mc_io,
 			  uint32_t cmd_flags,
 			  uint16_t token);
=20
-/**
- * enum dpni_congestion_point - Structure representing congestion point
- * @DPNI_CP_QUEUE:	Set taildrop per queue, identified by QUEUE_TYPE, TC an=
d
- *				QUEUE_INDEX
- * @DPNI_CP_GROUP:	Set taildrop per queue group. Depending on options used
- *				to define the DPNI this can be either per
- *				TC (default) or per interface
- *				(DPNI_OPT_SHARED_CONGESTION set at DPNI create).
- *				QUEUE_INDEX is ignored if this type is used.
- */
-enum dpni_congestion_point {
-	DPNI_CP_QUEUE,
-	DPNI_CP_GROUP,
-};
-
 /**
  * struct dpni_taildrop - Structure representing the taildrop
  * @enable:	Indicates whether the taildrop is active or not.
diff --git a/drivers/net/dpaa2/mc/fsl_dpni_cmd.h b/drivers/net/dpaa2/mc/fsl=
_dpni_cmd.h
index 9116e417e..5effbb300 100644
--- a/drivers/net/dpaa2/mc/fsl_dpni_cmd.h
+++ b/drivers/net/dpaa2/mc/fsl_dpni_cmd.h
@@ -9,7 +9,7 @@
=20
 /* DPNI Version */
 #define DPNI_VER_MAJOR				7
-#define DPNI_VER_MINOR				8
+#define DPNI_VER_MINOR				9
=20
 #define DPNI_CMD_BASE_VERSION			1
 #define DPNI_CMD_VERSION_2			2
@@ -23,13 +23,13 @@
 /* Command IDs */
 #define DPNI_CMDID_OPEN				DPNI_CMD(0x801)
 #define DPNI_CMDID_CLOSE			DPNI_CMD(0x800)
-#define DPNI_CMDID_CREATE			DPNI_CMD_V2(0x901)
+#define DPNI_CMDID_CREATE			DPNI_CMD_V3(0x901)
 #define DPNI_CMDID_DESTROY			DPNI_CMD(0x981)
 #define DPNI_CMDID_GET_API_VERSION		DPNI_CMD(0xa01)
=20
 #define DPNI_CMDID_ENABLE			DPNI_CMD(0x002)
 #define DPNI_CMDID_DISABLE			DPNI_CMD(0x003)
-#define DPNI_CMDID_GET_ATTR			DPNI_CMD_V2(0x004)
+#define DPNI_CMDID_GET_ATTR			DPNI_CMD_V3(0x004)
 #define DPNI_CMDID_RESET			DPNI_CMD(0x005)
 #define DPNI_CMDID_IS_ENABLED			DPNI_CMD(0x006)
=20
@@ -77,10 +77,10 @@
 #define DPNI_CMDID_REMOVE_FS_ENT		DPNI_CMD(0x245)
 #define DPNI_CMDID_CLR_FS_ENT			DPNI_CMD(0x246)
=20
-#define DPNI_CMDID_GET_STATISTICS		DPNI_CMD_V2(0x25D)
+#define DPNI_CMDID_GET_STATISTICS		DPNI_CMD_V3(0x25D)
 #define DPNI_CMDID_RESET_STATISTICS		DPNI_CMD(0x25E)
-#define DPNI_CMDID_GET_QUEUE			DPNI_CMD(0x25F)
-#define DPNI_CMDID_SET_QUEUE			DPNI_CMD(0x260)
+#define DPNI_CMDID_GET_QUEUE			DPNI_CMD_V2(0x25F)
+#define DPNI_CMDID_SET_QUEUE			DPNI_CMD_V2(0x260)
 #define DPNI_CMDID_GET_TAILDROP			DPNI_CMD_V2(0x261)
 #define DPNI_CMDID_SET_TAILDROP			DPNI_CMD_V2(0x262)
=20
@@ -89,8 +89,8 @@
 #define DPNI_CMDID_GET_BUFFER_LAYOUT		DPNI_CMD_V2(0x264)
 #define DPNI_CMDID_SET_BUFFER_LAYOUT		DPNI_CMD_V2(0x265)
=20
-#define DPNI_CMDID_SET_CONGESTION_NOTIFICATION	DPNI_CMD(0x267)
-#define DPNI_CMDID_GET_CONGESTION_NOTIFICATION	DPNI_CMD(0x268)
+#define DPNI_CMDID_SET_CONGESTION_NOTIFICATION	DPNI_CMD_V2(0x267)
+#define DPNI_CMDID_GET_CONGESTION_NOTIFICATION	DPNI_CMD_V2(0x268)
 #define DPNI_CMDID_SET_EARLY_DROP		DPNI_CMD_V2(0x269)
 #define DPNI_CMDID_GET_EARLY_DROP		DPNI_CMD_V2(0x26A)
 #define DPNI_CMDID_GET_OFFLOAD			DPNI_CMD(0x26B)
@@ -131,6 +131,8 @@ struct dpni_cmd_create {
 	uint8_t pad3;
 	uint16_t fs_entries;
 	uint8_t num_rx_tcs;
+	uint8_t pad4;
+	uint8_t num_cgs;
 };
=20
 struct dpni_cmd_destroy {
@@ -222,6 +224,7 @@ struct dpni_rsp_get_attr {
 	uint8_t qos_key_size;
 	uint8_t fs_key_size;
 	uint16_t wriop_version;
+	uint8_t num_cgs;
 };
=20
 #define DPNI_ERROR_ACTION_SHIFT		0
@@ -315,7 +318,7 @@ struct dpni_rsp_get_tx_data_offset {
=20
 struct dpni_cmd_get_statistics {
 	uint8_t page_number;
-	uint8_t param;
+	uint16_t param;
 };
=20
 struct dpni_rsp_get_statistics {
@@ -464,6 +467,8 @@ struct dpni_cmd_get_queue {
=20
 #define DPNI_DEST_TYPE_SHIFT		0
 #define DPNI_DEST_TYPE_SIZE		4
+#define DPNI_CGID_VALID_SHIFT		5
+#define DPNI_CGID_VALID_SIZE		1
 #define DPNI_STASH_CTRL_SHIFT		6
 #define DPNI_STASH_CTRL_SIZE		1
 #define DPNI_HOLD_ACTIVE_SHIFT		7
@@ -476,7 +481,9 @@ struct dpni_rsp_get_queue {
 	uint32_t dest_id;
 	uint16_t pad1;
 	uint8_t dest_prio;
-	/* From LSB: dest_type:4, pad:2, flc_stash_ctrl:1, hold_active:1 */
+	/* From LSB:
+	 * dest_type:4, pad:1, cgid_valid:1, flc_stash_ctrl:1, hold_active:1
+	 */
 	uint8_t flags;
 	/* response word 2 */
 	uint64_t flc;
@@ -485,6 +492,9 @@ struct dpni_rsp_get_queue {
 	/* response word 4 */
 	uint32_t fqid;
 	uint16_t qdbin;
+	uint16_t pad2;
+	/* response word 5*/
+	uint8_t cgid;
 };
=20
 struct dpni_cmd_set_queue {
@@ -503,6 +513,8 @@ struct dpni_cmd_set_queue {
 	uint64_t flc;
 	/* cmd word 3 */
 	uint64_t user_context;
+	/* cmd word 4 */
+	uint8_t cgid;
 };
=20
 #define DPNI_DISCARD_ON_MISS_SHIFT	0
@@ -655,7 +667,10 @@ struct dpni_tx_confirmation_mode {
 struct dpni_cmd_set_congestion_notification {
 	uint8_t qtype;
 	uint8_t tc;
-	uint8_t pad[6];
+	uint8_t pad;
+	uint8_t congestion_point;
+	uint8_t cgid;
+	uint8_t pad2[3];
 	uint32_t dest_id;
 	uint16_t notification_mode;
 	uint8_t dest_priority;
@@ -670,6 +685,9 @@ struct dpni_cmd_set_congestion_notification {
 struct dpni_cmd_get_congestion_notification {
 	uint8_t qtype;
 	uint8_t tc;
+	uint8_t pad;
+	uint8_t congestion_point;
+	uint8_t cgid;
 };
=20
 struct dpni_rsp_get_congestion_notification {
--=20
2.19.1