From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <hemant.agrawal@nxp.com>
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02on0056.outbound.protection.outlook.com [104.47.36.56])
 by dpdk.org (Postfix) with ESMTP id F1A1C56A1
 for <dev@dpdk.org>; Sun,  9 Apr 2017 10:09:48 +0200 (CEST)
Received: from BN6PR03CA0007.namprd03.prod.outlook.com (10.168.230.145) by
 BY2PR03MB393.namprd03.prod.outlook.com (10.141.141.12) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id
 15.1.1019.17; Sun, 9 Apr 2017 08:09:45 +0000
Received: from BY2FFO11FD008.protection.gbl (2a01:111:f400:7c0c::128) by
 BN6PR03CA0007.outlook.office365.com (2603:10b6:404:23::17) with Microsoft
 SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1019.17 via
 Frontend Transport; Sun, 9 Apr 2017 08:09:44 +0000
Authentication-Results: spf=fail (sender IP is 192.88.168.50)
 smtp.mailfrom=nxp.com; caviumnetworks.com; dkim=none (message not signed)
 header.d=none; caviumnetworks.com; dmarc=fail action=none header.from=nxp.com; 
Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not
 designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; 
 client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net;
Received: from tx30smr01.am.freescale.net (192.88.168.50) by
 BY2FFO11FD008.mail.protection.outlook.com (10.1.14.159) with Microsoft SMTP
 Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1019.14
 via Frontend Transport; Sun, 9 Apr 2017 08:09:44 +0000
Received: from DTS-02.ap.freescale.net (DTS-02.ap.freescale.net
 [10.232.132.223])
 by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v3989Aom015502;
 Sun, 9 Apr 2017 01:09:41 -0700
From: Hemant Agrawal <hemant.agrawal@nxp.com>
To: <dev@dpdk.org>
CC: <thomas.monjalon@6wind.com>, <bruce.richardson@intel.com>,
 <shreyansh.jain@nxp.com>, <john.mcnamara@intel.com>,
 <ferruh.yigit@intel.com>, <jerin.jacob@caviumnetworks.com>
Date: Sun, 9 Apr 2017 13:41:10 +0530
Message-ID: <1491725483-6619-10-git-send-email-hemant.agrawal@nxp.com>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <1491725483-6619-1-git-send-email-hemant.agrawal@nxp.com>
References: <1490362538-20854-1-git-send-email-hemant.agrawal@nxp.com>
 <1491725483-6619-1-git-send-email-hemant.agrawal@nxp.com>
X-EOPAttributedMessage: 0
X-Matching-Connectors: 131361989844687046;
 (91ab9b29-cfa4-454e-5278-08d120cd25b8); ()
X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(6009001)(336005)(39450400003)(39380400002)(39850400002)(39860400002)(39840400002)(39400400002)(39410400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(54906002)(575784001)(86362001)(5890100001)(53936002)(77096006)(4326008)(2950100002)(6666003)(6916009)(47776003)(8656002)(50986999)(76176999)(305945005)(5003940100001)(48376002)(50466002)(356003)(36756003)(2906002)(5660300001)(33646002)(104016004)(2351001)(189998001)(81166006)(8936002)(50226002)(8676002)(85426001)(38730400002)(105606002)(110136004)(106466001)(473944003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR03MB393; H:tx30smr01.am.freescale.net;
 FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD008;
 1:DEG0SNrGXEILz5bB/7ag4K7uynjuCCjdv8w7tKF/N0Qg4SRxztr1XvhDRfJDGEX+I7D8OIfPsEYGcTtJayAa0iPPevP1DhiZ0QEnHHgk++la4JdN8tJGRXMgVxdRHHipBnuC2+qmhdJ4xXhksSf8T1tWV2emkveP5MMQb2sTlN9b9rvwXutYQVGttG816+Gvbb3tQJLEaKR3wllt7pZusY3UCL4MmxlplmD5QdKsVPcRZtO/Fw5LREn8p95hOle0Alsw6QNe8mQCqzzCwznTpJCJjbp9p2nx+pfoQ2nQCuLxfULRqXUF2QNBCPNFkr0zM8PuAmLe4Il+TRprmz7dvB4UZMd0kgNmyZGwxKJTVp2NXlkoj63dxVha+LyjSKPzKWiJmtum7fNMSm4dEydCDIC8ZMTHpSDDI+2nThcB3s2eLiTtc4ByxkOPWR81KgLjbOVTXifg/C4htiGiKurxKydEaLdZWUG4i6mbnzZqChEg8P9O5TFrUXqu1Vy2BPxU8lQQrdrcPVksUjI+2kD5UEnzdSKrRYNxDScZ+xtgLWb3H+FetiL55fOTYxat6lSLXJW/yr7UwqDv6Jz1h/WnOf+aqY8OuYZOLIcUx+3uVP9af5gVytJZiTBWb0SUo45rMRfqYhkB5/Td07WZrxoPDSX6iHh0XiDJZMbjz07xMbs=
MIME-Version: 1.0
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 423260af-07d4-499c-58c6-08d47f1fc825
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(22001)(201703131430075)(201703131517081); SRVR:BY2PR03MB393; 
X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB393;
 3:AlA6IyXGliK5EMv4jJ8IiWov6zqhxl7YS0nIx+EM4nLUsDswFas9vbssvy9e9LRIdXQ1kHpQY/+VSZ0TOUr4MxWgDdZ38GUAclXFRKFcLPsRPK7SRU88ecVhi0NhqOr2ONCSRXeIg62JHrxzRSX3+ccGlR4Gh0EEQg9PRxjGz8+cHmoK7Gjn4yG9NAfYL5HZGz0cA+ssR0ESFrWTagoHJ4ykBCaMFE5K6wdvmF3zSdH4IW6SXSx8u/MOOvuWr/ipsIA4eYQXgvLKnyTiF55qYdZ7zhW2DZteLMH90cgSiKGpsips6cDmANe1+metc+aSi0h5WguKUT7IwdI2oeASXjUkbqHibKq+l66m6XPzd8pXZ6C+UyiPTWWuXkxYKJKo4FBIjB+xp2MatLmlrmtkan4R2U1ND6JpQPIriZz79cK22Pf49PGWMLzNv7imZ5wu;
 25:RQfPRteNY2t+z7KUK7ATEQgfSUfkUIzZ2a2R7FKMF1jaC2c1Jon92r38QRkHgapyONDcSZumEc+yRO+IkwxjgFAl2VlHJRhadbsZlvS14qR5tw6oYk1lr3mxp1i4WhtjeoFUwq4v9XTuU6xeHBHBrg+/dHVuRRO5W4XVvGjx/tYi79SqSW9CEl4lojXKoK6e2RiVbr1HHDiX29XvEfm6rzE16a5OqcSSTUz+BsMHsqGM66kChNhGs10Kjt9YihYk/DnZUCvJLR2BSexhTVRFR0c9M3popqxKa2nbZ/1PHCEozkmBDizzaVN2g5xt6G9TTipAwqP/MnVft4l3Khv85xSI4XYjHxR1m5rbFG822RufqMx3Ae8gN87AcegtqCk7vcBj/bBBQpdaLznbGK0IOaiQIC8bBfLpxEGpfEyashSw8ABz3ToKbOwylel5pF6u0iEaQZW/dIvqa9eH7ArU7g==
X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB393;
 31:SXwQZYKenqBgbUD8uDGM7PfLVCXz/Ur36YGKfZrMeiS6BmV5f3KKY9rI5eZMqEI5HyYQ2oXb3JrKeUeB2uNwrG5Lqv9z62LVuQLeTWfbdYuL9FMSxyKnXGJYU6hQCMbyIhWr00TwlCV3JjlEoelq5In0UjjjN3j9Ca4tL7kzwrEbrztl0oeQA29BWJqctuTKanWbNi2N4JOfWzCDRvjWC7YcGV6GELscsmaWtoCwYCdknaZqwtd2krvLd+kWEyabRn0VbJtYkxMQdUJo/aeu+p0qZk6kgewTVdzBPK2Na4s=
X-Microsoft-Antispam-PRVS: <BY2PR03MB3930B965084FF3923E7DB06890E0@BY2PR03MB393.namprd03.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684);
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(6095135)(601004)(2401047)(8121501046)(5005006)(13017025)(13015025)(13018025)(13024025)(13023025)(93006095)(93001095)(10201501046)(3002001)(6055026)(6096035)(20161123563025)(20161123556025)(201703131430075)(201703131448075)(201703131433075)(201703161259075)(20161123561025)(20161123565025);
 SRVR:BY2PR03MB393; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR03MB393; 
X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB393;
 4:wJimX8XN36osvb7zoSqvsGqBzv9gg3mDr/orOeCw/UGnsVtu2eTnqOsFPIkjWl6JhpwSrgpInDSclC5hbBCZhz3IpkDRT3g34xaRC9UJFFsbrnxbciRmdbqvhAzwOqbfAT1oayoUhatFJZZrrJpvekGZgDsgI2/BYA0NA0YGUTIc7lfO+9rq+jaxLBgIJt6BAofDR5tyArzGhnzBALMJakR+Cywy9vNgUNFHEm3wE9eIZ8+GzQyOz6xUaNXFZPSFKrth2h994IOO2B+aRnZJwbd3sEoTKBPtSYVFlscjYDLqTd6W+L5EJomTtbXRRfrCPCtC1TZlz7a8GSg9hSh46qbb5V8S/U6EtZVknjyg+Ukoo5lfb9s814fR+V+E/mde330v3psS90dkJEKtrq4yWoQ/ygOrbSDpJgj7PikF/KXYaof0W9mohDoT1G6wzByYpCh4oDRLb9ooh/h/uiAWwIzCgRUbh6luzDptxCYi2qhq6c5S4pSLYW+v5yPB0ajSf3Q9WpGQRD3byIN9SSAWz5iZn9aUMSiD6JMmZsnm+nIvIk67PY76LycNZe3OB58GsM5/RqBySpvUor4xqh/3W+CmElVblf0FDDHB45uSwQAr8I3m9kthtxTxgpYnRLWGmFVaV6k5UWDXA5B/eBZGwVwcrwwvH1YdPVjMeKqFZth5sSjN/twgwl8C4qbUWjTgjm3HGKqZQsWVvq3rDUUOh1MR7nU6r2dhMqLFMLJOfwWxjOR2Iag5V9+1wRClq8p2XJL/aRoGEstHE7KMNhMF5ETUreuy9L/bApdnXu2A58jBtdmry9BfPynMthibyVsR34/lRVqpJ8poPA9Orou66G1OCkAJoVd1ENkzhNxKAhuvacupTcJVCuWBRFe+85K8lRn3T6rWt4wwn0wrN33NwKewfcRn4KFnpf3ZfkAOrJA=
X-Forefront-PRVS: 02723F29C4
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR03MB393;
 23:0jBoORkKOrEIO4wT/eOVxNI8/FiQ5CX9kl52K2kDzH?=
 =?us-ascii?Q?VSTLLZutQ3x/FUg5ZiQZNv0bbCj5Y1RovPnOHwWpZTnzzXaKAWurUAt0z5lS?=
 =?us-ascii?Q?bo/7/C3bNBl9RxJ2lxzKotRqD482l2Aa7CxUitOWrAAHKKaJNOvYSQFAfR8r?=
 =?us-ascii?Q?agQmj9h9HzWyGWJeZLUR780NmYoQr2EHKmQInMu6arAQ+lXyWTkO4G+ydBtg?=
 =?us-ascii?Q?QWgj43tqbOKfDB5/wv0H+0GujxRJOxkFYnKUa9fav4YjV+5+7Zgl42voJYSQ?=
 =?us-ascii?Q?1mlyOOrmSHbS18i5azLAzTguR5FomreadXAh30wrv2uqCDsQI+4+xeB8u+kp?=
 =?us-ascii?Q?Ei02eA27iuquNrz/lZNnFOgOYmfrPHqYpxebaiRPWWlYNJ++ocuo3iMeutG7?=
 =?us-ascii?Q?61F+uh+IMUTpTefXiCkOecJUAQg6c4746LEZ0aKoxnmEQ+BZWxf9ok7MdfjX?=
 =?us-ascii?Q?b+4R2aDzBsO+0GQNrVcIy+JEq/W1F+Yr9tWf/nOWr7fw51kDaAKTFCfm0Eod?=
 =?us-ascii?Q?aHbJo1RrQPn59snf0gngvzVQvPeJxbQ9DwPg4uQ0W52ayp0UgO26cwcYgHoy?=
 =?us-ascii?Q?w0zMyCbFIj04QOSs4ez85pSCH+tzWW6fqxZGF/qliFoMICRkmeiH961d1Ftl?=
 =?us-ascii?Q?E3wgwt5T4A00eqKpt5MqA2DAZtdGxoztS7S/ps6l98+CW7HCquHkEYcAjJwK?=
 =?us-ascii?Q?sy9jPg587yUYPR7P5J9kS0/gvxm9Y0c2qI3JDFCOrNwENN1gL9sTFXwxjhiy?=
 =?us-ascii?Q?4zgfrXRfN4Zd48rPvTpntQ6LFv9G0QchPyDkYa4nUnBTukVOZkoUw4heGOry?=
 =?us-ascii?Q?rPZKIxM0qZb8VnG9jWP+846GFHCiGQy48KFwwa0IhU8xHtQz83X8fkZpACtQ?=
 =?us-ascii?Q?w36ZA5oHtSywH1wqkk6MWpU/bnMQF4vBSxTY5WzrH6wEElQhJL9eBj876sA9?=
 =?us-ascii?Q?BVbOZayZL/NC45QVVTLz6HExFCI5Yuhvw49LClBRjJ4fU09d7GLlEsqXwexc?=
 =?us-ascii?Q?S0yXmi3zGMIud6WUddT0cq+ea8YgF16Pw3Ce/NQmU1phnFhL4zjSzFbOehkt?=
 =?us-ascii?Q?+pce/gNqRhN4JUjRvah50ZS1gs++CnGg5DVobCqqb7OIPxy0O7OVF0Wh1Ajh?=
 =?us-ascii?Q?iQhmPuT2v126eZuf9o+e7zkJwyQvXP0vfiTWdQaGhbmrV3vQAi81b7RafNL2?=
 =?us-ascii?Q?zXAEIEqraU/SbqaK252ZQ6l/L68mScKr+Wr0gJwH56Ngk1c77QURmS3sW2sD?=
 =?us-ascii?Q?SacBWe58WPW7nTsukjRtHnJt4vv8Db3ZJDymZhXXffhLGTlWYbAaIqoRTRUg?=
 =?us-ascii?Q?=3D=3D?=
X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB393;
 6:0ZHt9uq7tizJ2WJshnDS5fCB1G6wq5RJwpXO2LTwW8xBkHgCKWjzs0abAGsbYTIHrQpa5gRwoyswL9B07uWweIUI0t2YbxWHIGztfrilsxSPWUCkaM/MJksyNrjYpBiKgVivk8LBVct38Gc1jQ3WIpVKk86OYbR5LiGnyy3RG61YAkVLC+Cpqdc4BxpeVLCb4XkA9MpkgePD3SAFHC77QQ1hwXY+Vz2cHP3M8DXimLkuYVDSEmqiiAXVtiDyKBYriJ0sEwXTyDapZmMVj5f6WLVvAKIYHqtbFrQaruBJjWRdx2ltIf9P9u0cpO8PRRnuaeb7FcuxdyEcHu1nHnyY8EC1LctWiOZMcNzRLNqkNco/v5Aoag8h7wBtJH/xGwC1y3wQ8Tu2UKtfWhdNP/OtRxn20kekpFkd1QV/VezgCw2+K7UMsax5RTGKSp2akpAvzeDJCyOKzFQMQn/29BhSmg==;
 5:AOmrtjLVX9w/m5RYEJV0iteWI4Cvy6jWMHsUdp7GP2xRyeSfQeIcH0XCiUDThOQ4HQlW6KBUfRyn1cBgCVOTLbvat7eRWWewdlS0DbIL3GEk9CN1zMR8BLdaufdzKKCTiVaau9HY0C3TkTmqXYB9R9hz6yIcGsqbCuJYWS+XhWsl22DUcVT4zC+vSY6sIcBu;
 24:4WCfoPem9bMOd+zXcQ6eOKlLdMyMgj/bNZB5evNo7/vGEvMtSKyhC4zVL8XiKeXneZIE0Vf4my+fSDpWO72e+uoUhi42579MrhvGjGnSUQ0=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB393;
 7:Snha3DBkXYGS10JrG9v0ipinfrAgiMoXxRcV0dEXm8OBLQLtLkYoIKM91GVnl/60xQuYD85t261pQV6zmn4qACu9flRCqDaKEATEdG9fHgPyUh37V/QwcO4MQac+ZtEXo3glCqm2MyuUImWUun4x4xEvKJPgwQzPbOPhavRQXcEsOlI0pbDTz69pzt07vekByIqkH+a64fu0dsNLVNBkQ9cWm0G8IGAlu6iY5plp+ZL6rT3/TLGG6Gc70YmLXjnW5hYFk1PTp6nLNRBobWCjellfbrLFB0fIKujuLIWSKcMc8XI8BZnP3Zptn8YRbTUuvPSUDNnGEq4Lhs8u9A64RQ==
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2017 08:09:44.2815 (UTC)
X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50];
 Helo=[tx30smr01.am.freescale.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB393
Subject: [dpdk-dev] [PATCH v11 09/22] net/dpaa2: attach the buffer pool to
	dpni
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Sun, 09 Apr 2017 08:09:49 -0000

This patch configures a MC-DPNI based DPAA2 PMD network
port with a DPBP based buffer pool.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/net/dpaa2/Makefile             |  2 ++
 drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 57 +++++++++++++++++++++++++++++++
 drivers/net/dpaa2/dpaa2_ethdev.c       | 62 ++++++++++++++++++++++++++++++++++
 drivers/net/dpaa2/dpaa2_ethdev.h       |  6 ++++
 4 files changed, 127 insertions(+)

diff --git a/drivers/net/dpaa2/Makefile b/drivers/net/dpaa2/Makefile
index 7f88e9b..1f66c0b 100644
--- a/drivers/net/dpaa2/Makefile
+++ b/drivers/net/dpaa2/Makefile
@@ -50,6 +50,7 @@ CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc
 CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/qbman/include
 CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/mc
 CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/portal
+CFLAGS += -I$(RTE_SDK)/drivers/mempool/dpaa2
 CFLAGS += -I$(RTE_SDK)/lib/librte_eal/linuxapp/eal
 
 # versioning export map
@@ -63,5 +64,6 @@ SRCS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += dpaa2_ethdev.c
 SRCS-$(CONFIG_RTE_LIBRTE_DPAA2_PMD) += mc/dpni.c
 
 LDLIBS += -lrte_bus_fslmc
+LDLIBS += -lrte_mempool_dpaa2
 
 include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
index c95c083..08f53b3 100644
--- a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
@@ -46,6 +46,7 @@
 
 #include <fslmc_logs.h>
 #include <dpaa2_hw_pvt.h>
+#include <dpaa2_hw_mempool.h>
 
 #include "../dpaa2_ethdev.h"
 
@@ -285,3 +286,59 @@ dpaa2_distset_to_dpkg_profile_cfg(
 	}
 	kg_cfg->num_extracts = i;
 }
+
+int
+dpaa2_attach_bp_list(struct dpaa2_dev_priv *priv,
+		     void *blist)
+{
+	/* Function to attach a DPNI with a buffer pool list. Buffer pool list
+	 * handle is passed in blist.
+	 */
+	int32_t retcode;
+	struct fsl_mc_io *dpni = priv->hw;
+	struct dpni_pools_cfg bpool_cfg;
+	struct dpaa2_bp_list *bp_list = (struct dpaa2_bp_list *)blist;
+	struct dpni_buffer_layout layout;
+	int tot_size;
+
+	/* ... rx buffer layout .
+	 * Check alignment for buffer layouts first
+	 */
+
+	/* ... rx buffer layout ... */
+	tot_size = DPAA2_HW_BUF_RESERVE + RTE_PKTMBUF_HEADROOM;
+	tot_size = RTE_ALIGN_CEIL(tot_size,
+				  DPAA2_PACKET_LAYOUT_ALIGN);
+
+	memset(&layout, 0, sizeof(struct dpni_buffer_layout));
+	layout.options = DPNI_BUF_LAYOUT_OPT_DATA_HEAD_ROOM;
+
+	layout.data_head_room =
+		tot_size - DPAA2_FD_PTA_SIZE - DPAA2_MBUF_HW_ANNOTATION;
+	retcode = dpni_set_buffer_layout(dpni, CMD_PRI_LOW, priv->token,
+					 DPNI_QUEUE_RX, &layout);
+	if (retcode) {
+		PMD_INIT_LOG(ERR, "Err(%d) in setting rx buffer layout\n",
+			     retcode);
+		return retcode;
+	}
+
+	/*Attach buffer pool to the network interface as described by the user*/
+	bpool_cfg.num_dpbp = 1;
+	bpool_cfg.pools[0].dpbp_id = bp_list->buf_pool.dpbp_node->dpbp_id;
+	bpool_cfg.pools[0].backup_pool = 0;
+	bpool_cfg.pools[0].buffer_size =
+		RTE_ALIGN_CEIL(bp_list->buf_pool.size,
+			       256 /*DPAA2_PACKET_LAYOUT_ALIGN*/);
+
+	retcode = dpni_set_pools(dpni, CMD_PRI_LOW, priv->token, &bpool_cfg);
+	if (retcode != 0) {
+		PMD_INIT_LOG(ERR, "Error in attaching the buffer pool list"
+				" bpid = %d Error code = %d\n",
+				bpool_cfg.pools[0].dpbp_id, retcode);
+		return retcode;
+	}
+
+	priv->bp_list = bp_list;
+	return 0;
+}
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 6462e0b..e1bdeef 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -48,6 +48,7 @@
 #include <fslmc_logs.h>
 #include <fslmc_vfio.h>
 #include <dpaa2_hw_pvt.h>
+#include <dpaa2_hw_mempool.h>
 
 #include "dpaa2_ethdev.h"
 
@@ -63,6 +64,8 @@ dpaa2_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	dev_info->if_index = priv->hw_id;
 
 	dev_info->max_mac_addrs = priv->max_mac_filters;
+	dev_info->max_rx_pktlen = DPAA2_MAX_RX_PKT_LEN;
+	dev_info->min_rx_bufsize = DPAA2_MIN_RX_BUF_SIZE;
 	dev_info->max_rx_queues = (uint16_t)priv->nb_rx_queues;
 	dev_info->max_tx_queues = (uint16_t)priv->nb_tx_queues;
 
@@ -187,6 +190,7 @@ dpaa2_dev_rx_queue_setup(struct rte_eth_dev *dev,
 	struct dpni_queue cfg;
 	uint8_t options = 0;
 	uint8_t flow_id;
+	uint32_t bpid;
 	int ret;
 
 	PMD_INIT_FUNC_TRACE();
@@ -194,6 +198,13 @@ dpaa2_dev_rx_queue_setup(struct rte_eth_dev *dev,
 	PMD_INIT_LOG(DEBUG, "dev =%p, queue =%d, pool = %p, conf =%p",
 		     dev, rx_queue_id, mb_pool, rx_conf);
 
+	if (!priv->bp_list || priv->bp_list->mp != mb_pool) {
+		bpid = mempool_to_bpid(mb_pool);
+		ret = dpaa2_attach_bp_list(priv,
+					   rte_dpaa2_bpid_info[bpid].bp_list);
+		if (ret)
+			return ret;
+	}
 	dpaa2_q = (struct dpaa2_queue *)priv->rx_vq[rx_queue_id];
 	dpaa2_q->mb_pool = mb_pool; /**< mbuf pool to populate RX ring. */
 
@@ -388,7 +399,9 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
 	struct fsl_mc_io *dpni_dev;
 	struct dpni_attr attr;
 	struct dpaa2_dev_priv *priv = eth_dev->data->dev_private;
+	struct dpni_buffer_layout layout;
 	int i, ret, hw_id;
+	int tot_size;
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -475,6 +488,55 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
 		return -ret;
 	}
 
+	/* ... rx buffer layout ... */
+	tot_size = DPAA2_HW_BUF_RESERVE + RTE_PKTMBUF_HEADROOM;
+	tot_size = RTE_ALIGN_CEIL(tot_size,
+				  DPAA2_PACKET_LAYOUT_ALIGN);
+
+	memset(&layout, 0, sizeof(struct dpni_buffer_layout));
+	layout.options = DPNI_BUF_LAYOUT_OPT_FRAME_STATUS |
+				DPNI_BUF_LAYOUT_OPT_PARSER_RESULT |
+				DPNI_BUF_LAYOUT_OPT_DATA_HEAD_ROOM |
+				DPNI_BUF_LAYOUT_OPT_PRIVATE_DATA_SIZE;
+
+	layout.pass_frame_status = 1;
+	layout.data_head_room = tot_size
+		- DPAA2_FD_PTA_SIZE - DPAA2_MBUF_HW_ANNOTATION;
+	layout.private_data_size = DPAA2_FD_PTA_SIZE;
+	layout.pass_parser_result = 1;
+	PMD_INIT_LOG(DEBUG, "Tot_size = %d, head room = %d, private = %d",
+		     tot_size, layout.data_head_room, layout.private_data_size);
+	ret = dpni_set_buffer_layout(dpni_dev, CMD_PRI_LOW, priv->token,
+				     DPNI_QUEUE_RX, &layout);
+	if (ret) {
+		PMD_INIT_LOG(ERR, "Err(%d) in setting rx buffer layout", ret);
+		return -1;
+	}
+
+	/* ... tx buffer layout ... */
+	memset(&layout, 0, sizeof(struct dpni_buffer_layout));
+	layout.options = DPNI_BUF_LAYOUT_OPT_FRAME_STATUS;
+	layout.pass_frame_status = 1;
+	ret = dpni_set_buffer_layout(dpni_dev, CMD_PRI_LOW, priv->token,
+				     DPNI_QUEUE_TX, &layout);
+	if (ret) {
+		PMD_INIT_LOG(ERR, "Error (%d) in setting tx buffer"
+				  " layout", ret);
+		return -1;
+	}
+
+	/* ... tx-conf and error buffer layout ... */
+	memset(&layout, 0, sizeof(struct dpni_buffer_layout));
+	layout.options = DPNI_BUF_LAYOUT_OPT_FRAME_STATUS;
+	layout.pass_frame_status = 1;
+	ret = dpni_set_buffer_layout(dpni_dev, CMD_PRI_LOW, priv->token,
+				     DPNI_QUEUE_TX_CONFIRM, &layout);
+	if (ret) {
+		PMD_INIT_LOG(ERR, "Error (%d) in setting tx-conf buffer"
+				  " layout", ret);
+		return -1;
+	}
+
 	eth_dev->dev_ops = &dpaa2_ethdev_ops;
 	eth_dev->data->drv_name = rte_dpaa2_pmd.driver.name;
 
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h
index 2d13137..a56b525 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.h
+++ b/drivers/net/dpaa2/dpaa2_ethdev.h
@@ -37,6 +37,9 @@
 #include <mc/fsl_dpni.h>
 #include <mc/fsl_mc_sys.h>
 
+#define DPAA2_MIN_RX_BUF_SIZE 512
+#define DPAA2_MAX_RX_PKT_LEN  10240 /*WRIOP support*/
+
 #define MAX_TCS			DPNI_MAX_TC
 #define MAX_RX_QUEUES		16
 #define MAX_TX_QUEUES		16
@@ -57,6 +60,7 @@ struct dpaa2_dev_priv {
 	void *rx_vq[MAX_RX_QUEUES];
 	void *tx_vq[MAX_TX_QUEUES];
 
+	struct dpaa2_bp_list *bp_list; /**<Attached buffer pool list */
 	uint32_t options;
 	uint16_t num_dist_per_tc[MAX_TCS];
 	uint8_t max_mac_filters;
@@ -71,4 +75,6 @@ int dpaa2_setup_flow_dist(struct rte_eth_dev *eth_dev,
 int dpaa2_remove_flow_dist(struct rte_eth_dev *eth_dev,
 			   uint8_t tc_index);
 
+int dpaa2_attach_bp_list(struct dpaa2_dev_priv *priv, void *blist);
+
 #endif /* _DPAA2_ETHDEV_H */
-- 
2.1.4