From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 4588145B36;
	Mon, 14 Oct 2024 11:39:03 +0200 (CEST)
Received: from mails.dpdk.org (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id 96D1B40672;
	Mon, 14 Oct 2024 11:37:44 +0200 (CEST)
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05on2066.outbound.protection.outlook.com [40.107.21.66])
 by mails.dpdk.org (Postfix) with ESMTP id 6C54D40684
 for <dev@dpdk.org>; Mon, 14 Oct 2024 11:37:26 +0200 (CEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=RhOQTPMHEMJPMBqOmR+d78AEAFJf/8ZZPjp/A0Ulth8FsHiPzuS+tGIObGRjDyxVSxMiYWukDqgu6G2dB1ilGD3Kfghb6XSolBnSQvwIvmwqRdoBWvwq1zUAOQxqmpWbf++npsRn0ldyoPORwJmMcpk/32KMrtcZa6nzuM7mjmw7e2+MZsKJba7hTJ4kdNtaY7HWWO1UnCq7v90uGowKtFMl5UxbTF5NuiRQh37DP5HAvAcnKJpsglvtpQMuGXF5Y3jkx+fXOsHRGnFy2dva0dk1ehXffdWHRHCCvIH+CI3LeJG/OTNLvncAmCSG0PM/7Ea2QzLrfQzsBIjLe9/18w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=EjAecn5/DUPxjY7gQRbvaMOoHIML6552Tk+YY3Nljdg=;
 b=I1LA8rnYwPfwjrgokEP4X7/DBSno3TPpBxRIgnUg3TU0spEeHET1bfzfzD91AaDItWGY8ujCSo0TnCrAvECPP7T0nZyZBOr1ROGYWhT2MITc1uVcvFdqvb0QsOizKC5z0SN8McdyiRw7x2tvo5iCRzZT05g2wexypULpI1rhvr4ATp3OLOzDstcZSSwkMFTT5zruVDO41k3MtnpMRSJeI9+94YMtKbE7/k5Ohwras9bjFGE8GVyjo1KOQhDNPDodsyRN7cDVkXXcU3UGtDy4qVt+Nrp5nfLBmc0I3yEFfTMY7aJkyN/MqshUVHP2i1ozQodW72NFqAN59QT8BuEqHg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass
 header.d=nxp.com; arc=none
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=EjAecn5/DUPxjY7gQRbvaMOoHIML6552Tk+YY3Nljdg=;
 b=VdWC2FyArab39JLwxX+TI/2waFVIHBv18EiFQ8SPfHBXDzaXLp/uSjkeAVkyJZLcVJ3yG15ww0VnI/Ll1hm+7dUjc/g7VzXZaKEF0/OLvFDNmy/zW+aolbwqqkplMjmBpr2wUq5p2w1GjPgmxJPaU34vixC+58NWylxEn89F7ggZEh2Ssdzf/lrA28LJ0PXSzhdvRw1d0l8gvYrD51yB1NwuhFfmfMG/fAylqS9NW1zZkzb8NNGD3y6RwUdDlS3bmZC48pZto7O4JfDWp8m4Mgx98dwM+JPHVqsj3UVdP3WjkULOyEJiu1iJv9uyJNMqfBawtdVbMudB8pOfr4oFbQ==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nxp.com;
Received: from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14)
 by DB9PR04MB9500.eurprd04.prod.outlook.com (2603:10a6:10:361::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.25; Mon, 14 Oct
 2024 09:37:24 +0000
Received: from AS8PR04MB8198.eurprd04.prod.outlook.com
 ([fe80::2e32:1a4a:7d29:195]) by AS8PR04MB8198.eurprd04.prod.outlook.com
 ([fe80::2e32:1a4a:7d29:195%4]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024
 09:37:24 +0000
From: Gagandeep Singh <g.singh@nxp.com>
To: dev@dpdk.org, Hemant Agrawal <hemant.agrawal@nxp.com>,
 Sachin Saxena <sachin.saxena@nxp.com>
Subject: [v6 15/15] bus/dpaa: add port bmi stats
Date: Mon, 14 Oct 2024 15:06:39 +0530
Message-Id: <20241014093639.553467-16-g.singh@nxp.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241014093639.553467-1-g.singh@nxp.com>
References: <20241008105810.1454133-2-g.singh@nxp.com>
 <20241014093639.553467-1-g.singh@nxp.com>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: SI2P153CA0033.APCP153.PROD.OUTLOOK.COM
 (2603:1096:4:190::21) To AS8PR04MB8198.eurprd04.prod.outlook.com
 (2603:10a6:20b:3b0::14)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS8PR04MB8198:EE_|DB9PR04MB9500:EE_
X-MS-Office365-Filtering-Correlation-Id: 3417bf05-ec46-44ac-e6e6-08dcec33cef4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
 ARA:13230040|376014|52116014|366016|1800799024|38350700014; 
X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?OrT6eYSQ6NMi9PKpaKpfcLqPh13fJ53ZDXrOfla5kVrwiPKG3Thk0IyOOj+Q?=
 =?us-ascii?Q?7x7SiOZAgs9Vi0caAHg/6fGmy5/lF4OjRKgVeDxU5915tQFPNfVcnDJmN9D8?=
 =?us-ascii?Q?PSj5EXvbnBXohSSDn+IWl0iwE0eHD9Hn2U5sIKVzvGaDOZAAWiUAaiZyxP7M?=
 =?us-ascii?Q?0VhysE9+awBVj/bn95dm+lgk0vsLTHcWIsWOBS07fIjYhv9f9WdNN07Ovcgr?=
 =?us-ascii?Q?ocOUolpsx9oFvGMBTtJ+sqb6WjNKGPnmTIDay84UzCAiSyLyjajuSh3BRN2M?=
 =?us-ascii?Q?n+JakOk51jZ+pgwmdz1tXnK0sGq97IwcJ2cJ7sM6PLXXuXFW0SLqTuNbIKEs?=
 =?us-ascii?Q?98tphjGspm7y436lfcuIkMWolIslVMDsL6xGhpN62lAT6d7JV92VmuAbfzH2?=
 =?us-ascii?Q?hQhKHYz3pRVEd09hkTUQT6yvrjdawz3mznVEPMkcI5R1kevvWairCtDw/Nww?=
 =?us-ascii?Q?rdcTuZHZJmJgnPZmH5nyIf4bF9zuqBuBu1+2A+0BeMY3GuwvItsL25J/zDAC?=
 =?us-ascii?Q?bIGkPGABFTIt7Ltoo80Aoiu/oXAkd/c0BdSw/LjfIFcRiK3rJype6ueNMzf6?=
 =?us-ascii?Q?ZS98kT+X44hEOW08Y+HNdaDxsDYJCPaOYyqDHopSbXtYMZG6QzbxAharqDMl?=
 =?us-ascii?Q?tr/JJgOT/55tEKYmBq/0AiSIxAwKqgDtUgRCyCNPyN8rS3kF2TFEJBIB2V7E?=
 =?us-ascii?Q?Ib8+ATNnyzMPhgGGsFlpcN1JP+9YDWyn+3h8A3+txvAuXq5zDwm8mE0PXrJQ?=
 =?us-ascii?Q?n61cHYjuv0fXwej4B6XdD/NNxLXKPwklk30sTCg+5Ssh/S4IsqAWbjNgCESu?=
 =?us-ascii?Q?RohudekLrHy30vUfAFeMHWS8TS8lkUzb8Mb7fD9beTho14kMdgpoTOD4PqLC?=
 =?us-ascii?Q?5vPHf8eAQwaHDq1379cl/koZyclWXGwih/0G4bCgmWQaafJjzlgAkmiu/ZSH?=
 =?us-ascii?Q?7vvTSSPGDBfy97sHqDxDPiWn6DK8Ajfj5+Q5bxmKct75Mam5Qsxwmw4v2Du+?=
 =?us-ascii?Q?ZWUbzEyw3U2wEDtm24SBZ3xRep22pOwGvb5b3Ih1wGkDIdcSFGoD5iINbOgj?=
 =?us-ascii?Q?fhePWK2F3Di+Cf7lzlWuHtA/vkmBSo/LejHGMqDojjmE+R+lM1JX+pZZ6RI6?=
 =?us-ascii?Q?GJyyuzsqhE+FcBZKiPP7UrGO1BwLqZELmQiRKQTDeTQnM+mx4gFTCpYKzo1V?=
 =?us-ascii?Q?ZcF3jiRkJoD5lbFILBU2mAkoIMIzv0kon1Xq9BJMMVuA7zOh3koxa3/7XN0K?=
 =?us-ascii?Q?+WNfdkSHYuH0xOY0QajUcNKZeUXDvBenoLvlMRRS2VxXFXN8ccJICGGgO9ee?=
 =?us-ascii?Q?7CQkLXpdyw50egykY+JlzyciD55AFDwEG9I0umfcV4qtOQ=3D=3D?=
X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014); DIR:OUT;
 SFP:1101; 
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lj5SMaGgdU98/Ty7ZF+JzDNvAmGJ8DIZg4BuVT5iuRWMpIUFb8VTX+yczh+j?=
 =?us-ascii?Q?kkIRlRLq5wgp+nQK4USm8DIlg9pHpIcBbxjuZqlpEdKqspQLTRnYToVlHrKJ?=
 =?us-ascii?Q?u2KIi4js+/vlJKiepoJERlQX8464isghBd5kyM3qdz9sfG/9QchI8YbgOpeg?=
 =?us-ascii?Q?rxm+F87FLyU04ri4ayp5dyXXRBprqKLW3RQTSrlgNMlAt0jkiKCCmQcHIL54?=
 =?us-ascii?Q?TNBQpuxFyP5JdCg7X5DQUywgDOHmf4Mr2tp3m8TChXX13LnBg31yyXhHY6xz?=
 =?us-ascii?Q?/7gJkNlWpk+fys+VWiDWv+uAUjfz6bcLtlRsvVGCFNKZgurpPVMzJc+EwgPs?=
 =?us-ascii?Q?w2QD8H5hhgPomxLJvpxC88BIxWUtpb2nbfjrinBZvJ4mpL87iEwpi7MeCg5W?=
 =?us-ascii?Q?x7BqvMD7tLcb93yKo4YpaB1lsjaNOHpIb2UkuMqIpDcTgUTAZPPI8nZ9xfaF?=
 =?us-ascii?Q?iFgsA4sdYRQSP4LGk14fq6r198w6sfqUoNpv/FYHBRmKFoBpnWVkG6F/V0re?=
 =?us-ascii?Q?spXKw0pAOuMQIPHXYgKuxxE9RztY1WXzhjqze8kS+5b4X/L5/9jPa3cfOGq9?=
 =?us-ascii?Q?WeF3cdZa6OtdmtbcGGSKLZvrtqo9VVzuRnn1P+rwTNXRGy6jbSvCXFoVV/sN?=
 =?us-ascii?Q?OdIViOaloP7Or6caSgagS+uyHv+WeCvs0PKwLoPct/gyM2T74gh/F4KT9xDd?=
 =?us-ascii?Q?37sKafojqujO/nPEswilN5PgYW6LGk0zHuFJu7UaASlZZzijMqZhb2DLKMir?=
 =?us-ascii?Q?/Qkg+ZO/MZ7JsOZdUPPlnSDQ9F+5auaAgthFNmjYeQrEJiNq0l4k5eARdgvH?=
 =?us-ascii?Q?M9I55x2ffbfyB8LF1KkzMYE35AWQgV6nKVtcuJ4C6drdld/3CD5zsAvlQiYO?=
 =?us-ascii?Q?Wf87knV5PqiO/PxBmTMV8TEFom1LlOWOPy4Kc2huN73Qmv+D1u8lAsDkki1X?=
 =?us-ascii?Q?n2W74ts+n5vZoXKP5/D95/nZPiKy3JawFTeE3oNJMwYQc4Sxy7u7Ouz6Ikeb?=
 =?us-ascii?Q?0dE4BFO4XngH1JVJmtpfDIhL1Vv+DWTkCPTweoEfd6u2FjJQnDSXv1Hf1v7l?=
 =?us-ascii?Q?xR9O+e5agi1R1iG20QPhW7nrkIBPdv0k00QajBojSxozxfDQg1EXoh+8gwsl?=
 =?us-ascii?Q?4Mid3iVGRzGcBeFI9pQbaw7b4Ok30yZpuxRdoyy4zFPGM35G42EhytW0UWWu?=
 =?us-ascii?Q?U6t/A1vNAuQnGD7cmiX+PKqxd8K/zXQ9oo/UpOGX7/Sal3YFqhI0b+hEzwyx?=
 =?us-ascii?Q?UvY+wRZvSBAeUUjX5ljJSlbnc9/uwnSj8tBXrp8na8JfTfuj6a0F1FRwOFv4?=
 =?us-ascii?Q?gVP9qLkvLFOxDKXNnfGUWS94jPH2dlxQzXnf7qnvFecWzJKdD3awsr4BXaFf?=
 =?us-ascii?Q?2mFaL28yzdjtpxe9OcFbobybY0FQOiy4uB6Aoxk50/VUsvUhfA6WITj3dlPR?=
 =?us-ascii?Q?6/xofyFsus/fXIXmJSXioFblZ3Retmied0k/osuOgBWOkY5cFeB0jW1G9GfD?=
 =?us-ascii?Q?dYqEbMgPMcRYwZktFYvmHMUaxHhp0ffp8Nf8R7I1XhxdqFJq5xamcnYD6OJr?=
 =?us-ascii?Q?L68ZihMY/U0snTEFyvE=3D?=
X-OriginatorOrg: nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3417bf05-ec46-44ac-e6e6-08dcec33cef4
X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8198.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 09:37:24.2338 (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-CrossTenant-UserPrincipalName: mgcz+Rx+3+NkgimndEQM6wvPsVGNa7eRdbEe0BW0Qucsw5EVtuveWUwA/aiypHW4
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9500
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>,
 <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

From: Hemant Agrawal <hemant.agrawal@nxp.com>

Add BMI statistics and fixing the existing extended
statistics

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
---
 drivers/bus/dpaa/base/fman/fman_hw.c | 65 +++++++++++++++++++++++++++-
 drivers/bus/dpaa/include/fman.h      |  4 +-
 drivers/bus/dpaa/include/fsl_fman.h  | 12 +++++
 drivers/bus/dpaa/version.map         |  4 ++
 drivers/net/dpaa/dpaa_ethdev.c       | 46 +++++++++++++++++---
 drivers/net/dpaa/dpaa_ethdev.h       | 12 +++++
 6 files changed, 134 insertions(+), 9 deletions(-)

diff --git a/drivers/bus/dpaa/base/fman/fman_hw.c b/drivers/bus/dpaa/base/fman/fman_hw.c
index 24a99f7235..27b39a4975 100644
--- a/drivers/bus/dpaa/base/fman/fman_hw.c
+++ b/drivers/bus/dpaa/base/fman/fman_hw.c
@@ -244,8 +244,8 @@ fman_if_stats_get_all(struct fman_if *p, uint64_t *value, int n)
 	uint64_t base_offset = offsetof(struct memac_regs, reoct_l);
 
 	for (i = 0; i < n; i++)
-		value[i] = (((u64)in_be32((char *)regs + base_offset + 8 * i) |
-				(u64)in_be32((char *)regs + base_offset +
+		value[i] = ((u64)in_be32((char *)regs + base_offset + 8 * i) |
+				((u64)in_be32((char *)regs + base_offset +
 				8 * i + 4)) << 32);
 }
 
@@ -266,6 +266,67 @@ fman_if_stats_reset(struct fman_if *p)
 		;
 }
 
+void
+fman_if_bmi_stats_enable(struct fman_if *p)
+{
+	struct __fman_if *m = container_of(p, struct __fman_if, __if);
+	struct rx_bmi_regs *regs = (struct rx_bmi_regs *)m->bmi_map;
+	uint32_t tmp;
+
+	tmp = in_be32(&regs->fmbm_rstc);
+
+	tmp |= FMAN_BMI_COUNTERS_EN;
+
+	out_be32(&regs->fmbm_rstc, tmp);
+}
+
+void
+fman_if_bmi_stats_disable(struct fman_if *p)
+{
+	struct __fman_if *m = container_of(p, struct __fman_if, __if);
+	struct rx_bmi_regs *regs = (struct rx_bmi_regs *)m->bmi_map;
+	uint32_t tmp;
+
+	tmp = in_be32(&regs->fmbm_rstc);
+
+	tmp &= ~FMAN_BMI_COUNTERS_EN;
+
+	out_be32(&regs->fmbm_rstc, tmp);
+}
+
+void
+fman_if_bmi_stats_get_all(struct fman_if *p, uint64_t *value)
+{
+	struct __fman_if *m = container_of(p, struct __fman_if, __if);
+	struct rx_bmi_regs *regs = (struct rx_bmi_regs *)m->bmi_map;
+	int i = 0;
+
+	value[i++] = (u32)in_be32(&regs->fmbm_rfrc);
+	value[i++] = (u32)in_be32(&regs->fmbm_rfbc);
+	value[i++] = (u32)in_be32(&regs->fmbm_rlfc);
+	value[i++] = (u32)in_be32(&regs->fmbm_rffc);
+	value[i++] = (u32)in_be32(&regs->fmbm_rfdc);
+	value[i++] = (u32)in_be32(&regs->fmbm_rfldec);
+	value[i++] = (u32)in_be32(&regs->fmbm_rodc);
+	value[i++] = (u32)in_be32(&regs->fmbm_rbdc);
+}
+
+void
+fman_if_bmi_stats_reset(struct fman_if *p)
+{
+	struct __fman_if *m = container_of(p, struct __fman_if, __if);
+	struct rx_bmi_regs *regs = (struct rx_bmi_regs *)m->bmi_map;
+
+	out_be32(&regs->fmbm_rfrc, 0);
+	out_be32(&regs->fmbm_rfbc, 0);
+	out_be32(&regs->fmbm_rlfc, 0);
+	out_be32(&regs->fmbm_rffc, 0);
+	out_be32(&regs->fmbm_rfdc, 0);
+	out_be32(&regs->fmbm_rfldec, 0);
+	out_be32(&regs->fmbm_rodc, 0);
+	out_be32(&regs->fmbm_rbdc, 0);
+}
+
 void
 fman_if_promiscuous_enable(struct fman_if *p)
 {
diff --git a/drivers/bus/dpaa/include/fman.h b/drivers/bus/dpaa/include/fman.h
index f918836ec2..1f120b7614 100644
--- a/drivers/bus/dpaa/include/fman.h
+++ b/drivers/bus/dpaa/include/fman.h
@@ -56,6 +56,8 @@
 #define FMAN_PORT_BMI_FIFO_UNITS	0x100
 #define FMAN_PORT_IC_OFFSET_UNITS	0x10
 
+#define FMAN_BMI_COUNTERS_EN 0x80000000
+
 #define FMAN_ENABLE_BPOOL_DEPLETION	0xF00000F0
 
 #define HASH_CTRL_MCAST_EN	0x00000100
@@ -260,7 +262,7 @@ struct rx_bmi_regs {
 					/**< Buffer Manager pool Information-*/
 	uint32_t fmbm_acnt[FMAN_PORT_MAX_EXT_POOLS_NUM];
 					/**< Allocate Counter-*/
-	uint32_t reserved0130[8];
+	uint32_t reserved0120[16];
 					/**< 0x130/0x140 - 0x15F reserved -*/
 	uint32_t fmbm_rcgm[FMAN_PORT_CG_MAP_NUM];
 					/**< Congestion Group Map*/
diff --git a/drivers/bus/dpaa/include/fsl_fman.h b/drivers/bus/dpaa/include/fsl_fman.h
index 20690f8329..5a9750ad0c 100644
--- a/drivers/bus/dpaa/include/fsl_fman.h
+++ b/drivers/bus/dpaa/include/fsl_fman.h
@@ -60,6 +60,18 @@ void fman_if_stats_reset(struct fman_if *p);
 __rte_internal
 void fman_if_stats_get_all(struct fman_if *p, uint64_t *value, int n);
 
+__rte_internal
+void fman_if_bmi_stats_enable(struct fman_if *p);
+
+__rte_internal
+void fman_if_bmi_stats_disable(struct fman_if *p);
+
+__rte_internal
+void fman_if_bmi_stats_get_all(struct fman_if *p, uint64_t *value);
+
+__rte_internal
+void fman_if_bmi_stats_reset(struct fman_if *p);
+
 /* Set ignore pause option for a specific interface */
 void fman_if_set_rx_ignore_pause_frames(struct fman_if *p, bool enable);
 
diff --git a/drivers/bus/dpaa/version.map b/drivers/bus/dpaa/version.map
index 3f547f75cf..a17d57632e 100644
--- a/drivers/bus/dpaa/version.map
+++ b/drivers/bus/dpaa/version.map
@@ -24,6 +24,10 @@ INTERNAL {
 	fman_dealloc_bufs_mask_hi;
 	fman_dealloc_bufs_mask_lo;
 	fman_if_add_mac_addr;
+	fman_if_bmi_stats_enable;
+	fman_if_bmi_stats_disable;
+	fman_if_bmi_stats_get_all;
+	fman_if_bmi_stats_reset;
 	fman_if_clear_mac_addr;
 	fman_if_disable_rx;
 	fman_if_discard_rx_errors;
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index 51f5422e0c..da4a64d99a 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -131,6 +131,22 @@ static const struct rte_dpaa_xstats_name_off dpaa_xstats_strings[] = {
 		offsetof(struct dpaa_if_stats, tvlan)},
 	{"rx_undersized",
 		offsetof(struct dpaa_if_stats, tund)},
+	{"rx_frame_counter",
+		offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfrc)},
+	{"rx_bad_frames_count",
+		offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfbc)},
+	{"rx_large_frames_count",
+		offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rlfc)},
+	{"rx_filter_frames_count",
+		offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rffc)},
+	{"rx_frame_discrad_count",
+		offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfdc)},
+	{"rx_frame_list_dma_err_count",
+		offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rfldec)},
+	{"rx_out_of_buffer_discard ",
+		offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rodc)},
+	{"rx_buf_diallocate",
+		offsetof(struct dpaa_if_rx_bmi_stats, fmbm_rbdc)},
 };
 
 static struct rte_dpaa_driver rte_dpaa_pmd;
@@ -430,6 +446,7 @@ static void dpaa_interrupt_handler(void *param)
 static int dpaa_eth_dev_start(struct rte_eth_dev *dev)
 {
 	struct dpaa_if *dpaa_intf = dev->data->dev_private;
+	struct fman_if *fif = dev->process_private;
 	uint16_t i;
 
 	PMD_INIT_FUNC_TRACE();
@@ -443,7 +460,9 @@ static int dpaa_eth_dev_start(struct rte_eth_dev *dev)
 	else
 		dev->tx_pkt_burst = dpaa_eth_queue_tx;
 
-	fman_if_enable_rx(dev->process_private);
+	fman_if_bmi_stats_enable(fif);
+	fman_if_bmi_stats_reset(fif);
+	fman_if_enable_rx(fif);
 
 	for (i = 0; i < dev->data->nb_rx_queues; i++)
 		dev->data->rx_queue_state[i] = RTE_ETH_QUEUE_STATE_STARTED;
@@ -461,8 +480,10 @@ static int dpaa_eth_dev_stop(struct rte_eth_dev *dev)
 	PMD_INIT_FUNC_TRACE();
 	dev->data->dev_started = 0;
 
-	if (!fif->is_shared_mac)
+	if (!fif->is_shared_mac) {
+		fman_if_bmi_stats_disable(fif);
 		fman_if_disable_rx(fif);
+	}
 	dev->tx_pkt_burst = dpaa_eth_tx_drop_all;
 
 	for (i = 0; i < dev->data->nb_rx_queues; i++)
@@ -769,6 +790,7 @@ static int dpaa_eth_stats_reset(struct rte_eth_dev *dev)
 	PMD_INIT_FUNC_TRACE();
 
 	fman_if_stats_reset(dev->process_private);
+	fman_if_bmi_stats_reset(dev->process_private);
 
 	return 0;
 }
@@ -777,8 +799,9 @@ static int
 dpaa_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
 		    unsigned int n)
 {
-	unsigned int i = 0, num = RTE_DIM(dpaa_xstats_strings);
+	unsigned int i = 0, j, num = RTE_DIM(dpaa_xstats_strings);
 	uint64_t values[sizeof(struct dpaa_if_stats) / 8];
+	unsigned int bmi_count = sizeof(struct dpaa_if_rx_bmi_stats) / 4;
 
 	if (n < num)
 		return num;
@@ -789,10 +812,16 @@ dpaa_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
 	fman_if_stats_get_all(dev->process_private, values,
 			      sizeof(struct dpaa_if_stats) / 8);
 
-	for (i = 0; i < num; i++) {
+	for (i = 0; i < num - (bmi_count - 1); i++) {
 		xstats[i].id = i;
 		xstats[i].value = values[dpaa_xstats_strings[i].offset / 8];
 	}
+	fman_if_bmi_stats_get_all(dev->process_private, values);
+	for (j = 0; i < num; i++, j++) {
+		xstats[i].id = i;
+		xstats[i].value = values[j];
+	}
+
 	return i;
 }
 
@@ -819,8 +848,9 @@ static int
 dpaa_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
 		      uint64_t *values, unsigned int n)
 {
-	unsigned int i, stat_cnt = RTE_DIM(dpaa_xstats_strings);
+	unsigned int i, j, stat_cnt = RTE_DIM(dpaa_xstats_strings);
 	uint64_t values_copy[sizeof(struct dpaa_if_stats) / 8];
+	unsigned int bmi_count = sizeof(struct dpaa_if_rx_bmi_stats) / 4;
 
 	if (!ids) {
 		if (n < stat_cnt)
@@ -832,10 +862,14 @@ dpaa_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
 		fman_if_stats_get_all(dev->process_private, values_copy,
 				      sizeof(struct dpaa_if_stats) / 8);
 
-		for (i = 0; i < stat_cnt; i++)
+		for (i = 0; i < stat_cnt - (bmi_count - 1); i++)
 			values[i] =
 				values_copy[dpaa_xstats_strings[i].offset / 8];
 
+		fman_if_bmi_stats_get_all(dev->process_private, values);
+		for (j = 0; i < stat_cnt; i++, j++)
+			values[i] = values_copy[j];
+
 		return stat_cnt;
 	}
 
diff --git a/drivers/net/dpaa/dpaa_ethdev.h b/drivers/net/dpaa/dpaa_ethdev.h
index 0006bd33d4..1278623e7b 100644
--- a/drivers/net/dpaa/dpaa_ethdev.h
+++ b/drivers/net/dpaa/dpaa_ethdev.h
@@ -212,6 +212,18 @@ dpaa_rx_cb_atomic(void *event,
 		  const struct qm_dqrr_entry *dqrr,
 		  void **bufs);
 
+struct dpaa_if_rx_bmi_stats {
+	uint32_t fmbm_rstc;		/**< Rx Statistics Counters*/
+	uint32_t fmbm_rfrc;		/**< Rx Frame Counter*/
+	uint32_t fmbm_rfbc;		/**< Rx Bad Frames Counter*/
+	uint32_t fmbm_rlfc;		/**< Rx Large Frames Counter*/
+	uint32_t fmbm_rffc;		/**< Rx Filter Frames Counter*/
+	uint32_t fmbm_rfdc;		/**< Rx Frame Discard Counter*/
+	uint32_t fmbm_rfldec;		/**< Rx Frames List DMA Error Counter*/
+	uint32_t fmbm_rodc;		/**< Rx Out of Buffers Discard nntr*/
+	uint32_t fmbm_rbdc;		/**< Rx Buffers Deallocate Counter*/
+};
+
 /* PMD related logs */
 extern int dpaa_logtype_pmd;
 #define RTE_LOGTYPE_DPAA_PMD dpaa_logtype_pmd
-- 
2.25.1