From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Santosh.Shukla@cavium.com>
Received: from NAM03-BY2-obe.outbound.protection.outlook.com
 (mail-by2nam03on0058.outbound.protection.outlook.com [104.47.42.58])
 by dpdk.org (Postfix) with ESMTP id 7DCE51B19C
 for <dev@dpdk.org>; Mon, 11 Sep 2017 17:19:22 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version;
 bh=SaMP2fNz/d00/+ShPU5fbTHnwzkM8fzJaAv/nFY93aM=;
 b=b7y+jEo30PibMmHLdMEKF0BQwXI65H7ULh2wIB8Trk1zyDRLQykSbmS8laljPNnnl8nMkPkgFfDSbLd7S8aVZrNy0dRiml+0lgSfompIupHyagVs5JWg4wpVm46J0/2aZ3DQmPC/SXJXzZNiQWXotO/UmMuCIy7nEUAvEn7eBSs=
Authentication-Results: spf=none (sender IP is )
 smtp.mailfrom=Santosh.Shukla@cavium.com; 
Received: from localhost.localdomain (111.93.218.67) by
 DM5PR07MB3100.namprd07.prod.outlook.com (10.172.85.10) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id
 15.20.56.9; Mon, 11 Sep 2017 15:19:17 +0000
From: Santosh Shukla <santosh.shukla@caviumnetworks.com>
To: olivier.matz@6wind.com,
	dev@dpdk.org
Cc: thomas@monjalon.net, jerin.jacob@caviumnetworks.com,
 hemant.agrawal@nxp.com, Santosh Shukla <santosh.shukla@caviumnetworks.com>
Date: Mon, 11 Sep 2017 20:48:36 +0530
Message-Id: <20170911151837.25092-2-santosh.shukla@caviumnetworks.com>
X-Mailer: git-send-email 2.14.1
In-Reply-To: <20170911151837.25092-1-santosh.shukla@caviumnetworks.com>
References: <20170815080717.9413-1-santosh.shukla@caviumnetworks.com>
 <20170911151837.25092-1-santosh.shukla@caviumnetworks.com>
MIME-Version: 1.0
Content-Type: text/plain
X-Originating-IP: [111.93.218.67]
X-ClientProxiedBy: BMXPR01CA0011.INDPRD01.PROD.OUTLOOK.COM (10.174.214.149) To
 DM5PR07MB3100.namprd07.prod.outlook.com (10.172.85.10)
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 2c2b68d3-53d4-4fc2-67dd-08d4f92879ed
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);
 SRVR:DM5PR07MB3100; 
X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3100;
 3:xMmbNsbUlhLnTdXL21wS6i/1DVTuzACjgXUwrATZFqIRTUMutRly5i5WPo44L8XCViMzVG5nhT67f0HNzSo0dQ8r8PqIVT1aDZYkMllFPuMbJ6DKm6vVbaQ0h9Xop6y+bxFflQvnqGlTOPJTFVR6GyTiebWNXvTf/NtHC046px3gztvZNOQWCi4WsNfvNC9qURmNVdDEJlyP9aFSeWq/4d4cKkxzllz0IvGguQORHjLdlXoCA4A1bFVQlV85tF+H;
 25:tY466ovXpLIRWaxfpDxPMQK42hG/Fi76TQpghYjTimARPvVrIj42ADvo8XW1xqkoa5rrt42/XoqKFH+Sgu3AhVOianWe4cxcTKt/Oc/8vB2GUbrMNySfibdSeuQPZlojRoWaZchcYz3PZWIgQGadfRa6VAJPZEF+Ne+s0ny3wAu20bjsWR2osOKbDtusDBaqtDYCYGJxOP8d8JKd0NoakvnhjRsoSTouG4H3UMG2DJmlVLKtghFUQ55nnGmXrkxpmaMbnH95duFTfhdMxHvluNhHbOoile+vlkgTqpGxtsKLxCLdMqbcSIGxgZKwgJsFGi2bSo880dAPiK+/56qMtg==;
 31:xGEuTtXuaRGZHPE7Qq4UXJjBJPAy3N7asl1NCF8OBhW8aU4NYpH5mCzlJydyHogW99EQcIkK9mZIKMWefOdkHh8nwDmIQ0E1SNGMZt9DFnPdV4omoufrdYJyDBqm7jUKTdFb5eDl21HG0JlOZM4EbYc6rcRz6fz6FNierXlx5CwMrcuzkjOlo3tJJdTdaCFusUxym+DXki2Iahyo8AWZg5c9ObrkqJoDKY4IwqYG77s=
X-MS-TrafficTypeDiagnostic: DM5PR07MB3100:
X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3100;
 20:Y2S21q5Cxvkjf/FPSvtZVxCvdJKCeA1rTOCIbXmcCa1tvwjbpLGm1dmNdhzTHXInDxXtRwT4XrmSPAvr8UYl7ag02f8XUsn4PnfoMBghSB0IwF4Mgla1RSI/VgrqqqLRxm0lYkHy+ZJnXe4ckJWnm8BLuGoS1mYz8mjScPBx4gN5STkzpqQvKNmcPfq184Wd+in7+F8ux5MJwsYtyEg93Oi0lrZ4eYuw6qp6nTvGSOZ8kvcmDFtm5LrkYtY4XQEr1t27heh6W/gyhYaHwwwc18YrXklzWW+lzaQXFICvktUCv2SPvuygOgKRd5Z++UCoAZcKPhVCJFxFFrcYvfUJLhfCFqwNYVdA+xIHS23mm7I1dpNZrXqzzyGuL7weuxvRr5xsbkatE8IaUEBygByvypJbzhIudRZsJJFyJ0vQSZY3p6EcjQJOAjP+D5/2EPH+P4PlNCIUWsvMU3oVQ40IIFMFE9VaAZTovGruSH0TmLPD//OAjVf7MUYMXDe61cdsyaac15c7tX9seu85Zs7Y/k3+p7SjmzsFLNESgG6f5Nrk5e2F//5jPPgjLCf9zFwxZW/O+Yp0dspXuG0s1I86TEiAEzw1IclPL+FAzjLhEag=;
 4:lMrwPqUJ6QaUHICxUheSUGdTNGUgDbh/thxE9BNe5jNEIJnSaObFjNJyM2d29GAi64rxyZS398g+6VD3DflMsCBHTnQ1BBEoN/LSIBx2GDi+V9gSyvWPER9lbpcyEEbnIMNec3CvG8sBhvDnz4g6xtszmBn3bt/xyE9UubN7sl0yKdpI0SJY/3bvQjGXGGVlkqpBdnoW+HKBKyGa53m+hNuXoEr1kA/pN+NxjUBdF13ZLub2bPoADg0tU5NvkerfrvUNhN/V5RQ64zlQ1VVaq+tS3paIxVA9HwV6bfcYJ0o=
X-Exchange-Antispam-Report-Test: UriScan:(185117386973197);
X-Microsoft-Antispam-PRVS: <DM5PR07MB3100A0EDF12B14360B546BE1EA680@DM5PR07MB3100.namprd07.prod.outlook.com>
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(10201501046)(100000703101)(100105400095)(93006095)(3002001)(6041248)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(20161123560025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);
 SRVR:DM5PR07MB3100; BCL:0; PCL:0;
 RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);
 SRVR:DM5PR07MB3100; 
X-Forefront-PRVS: 04270EF89C
X-Forefront-Antispam-Report: SFV:NSPM;
 SFS:(10009020)(6069001)(6009001)(189002)(199003)(47776003)(5660300001)(81156014)(81166006)(575784001)(6512007)(7736002)(8936002)(8676002)(50226002)(305945005)(97736004)(66066001)(42186005)(101416001)(76176999)(36756003)(50986999)(6506006)(6486002)(105586002)(106356001)(68736007)(2950100002)(33646002)(42882006)(6666003)(1076002)(5003940100001)(5009440100003)(6116002)(3846002)(50466002)(48376002)(2906002)(8656003)(25786009)(478600001)(72206003)(53936002)(107886003)(189998001)(110136004)(4326008);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3100; H:localhost.localdomain; FPR:;
 SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; 
Received-SPF: None (protection.outlook.com: cavium.com does not designate
 permitted sender hosts)
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3100;
 23:fjfgZcwp6rspYdjNuQgOCyPx+hSrATUwJwo+bpS11?=
 =?us-ascii?Q?pXmplcfE/ncv6/p4hrBoUHAJjvlEonVWakwjrHkgWopdSOZU1zhx10Kdh6P+?=
 =?us-ascii?Q?I9tupf22E1X6pHAB0XPFVeQhPe3hAj9nMhvhf97qNYHuLt8nM33EajL12Mr3?=
 =?us-ascii?Q?Ak2HWjgI0BHjn3MvcYqG8wyV/u+iCEO50hSGe2Wlxyif0ZK3YOV+IiGbbbR9?=
 =?us-ascii?Q?Md3KPIY+oSJ4nSXojyLlLt4Rv1FWxKg4ofC60Rso3ZnS71/9/GNK9lvBfOaa?=
 =?us-ascii?Q?2M+eTa7doObReKvHDcbIlOog3h6R9J+A2mGszJysvMoA7Vjl7/uj9d5Sn9vY?=
 =?us-ascii?Q?6zHJs20OP9oay2dM9nKXDM7kCmY790Pr646RzChe7Bh+wAu706A8/NbeCES0?=
 =?us-ascii?Q?tlcLY4ltdFnQGDFETAiObQVAQuQo/jHWn3w5Hc6U+Jd+kdjpzl8CuSGhh4ij?=
 =?us-ascii?Q?ZOV5S3RwmuhPB+9qVL3jYN0wDW+Pwe4p0bFJ/7ICLip+U1/jd/zsNwXn4HMB?=
 =?us-ascii?Q?7+VGlTCSL69eM1o/adcmiCfRSIKX9ZvcS8OVJDXH2TmWi09uCcT2j/z3eUQu?=
 =?us-ascii?Q?W3H9KeeB42hzDBr5o+Z6XcLpWeNBHojfHz0nIDvzPNu5E0tqodGG44ZLCujt?=
 =?us-ascii?Q?HjlV1jBA5wHYNyyizEblm5qcTwjYXYWIVOCZI5/T6WQlTqC9Nua34Ct4p4Z4?=
 =?us-ascii?Q?Nh9ZBvRt6GKbx9S/AOktcAc3S4o1LL1XYieymQq4l/XY6EYTTt8Mb4TcffzZ?=
 =?us-ascii?Q?F6SUHKqtfRUq5irvPoOJVzsL6tf9XDP8JJeYjtOin7B1ub/CyyA7Y6FCXk/Z?=
 =?us-ascii?Q?eefoeX837/+FzxSd2NnS+qFsJ/3nQIrRa/UQqDreRU/0O/VIUxM5aMNpOrUJ?=
 =?us-ascii?Q?gxFvi2z7vRExJv8pY7gXogFXRhRV9xtZJDaeoxeEi3ocq1V4tmcvr1A+RnVF?=
 =?us-ascii?Q?KTfIS2PSpBxUfm+5b2y8HSMPQAEd4jHBZ4GQJYMPn0GE2nTlyAXmtozPtYlT?=
 =?us-ascii?Q?g3AxkuwL2xheHeYf2zIw9fm5qXauVUpGbkHE+7xFW4XCHQdv/vv3z1LpmKGx?=
 =?us-ascii?Q?v5iSEZotRESX5XRIDTjH7Tz9la+08DXt1eSChrmJhHH3cAsgflIewgC5um1E?=
 =?us-ascii?Q?TrQKGqnm0XDVjwMycYEFW9gwQsknQtTpEz3EsfXD+lrrXx5KfNAkw=3D=3D?=
X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3100;
 6:XX+bDaIg6CDACc193a/mOOa3CU7BK+R4TLBpU/PoRjVbvlEdr2Laq0ZTtT0lHVfhHXeqqdla/2atO1UeGG5cskDDbf38+UlQl/7SJ8AFgvQvRhEP6jbGlCMEpSYdTh0mkT9PV+615hjzNZf3EPPCZWwGmtkG3Fif4oaHUm00CMZs5caQYqZWtYttthvIdGrcfV5Ez8peHoUE3vq6DJSHMn/TBivgLAq/QGAq22b0UuUYnPK7c2wzRxhAKxGVyvDuQNrfDKRSd87TJetSaeg8EjPXB54rBj+o5Xc/nx/WPNS2CM/Ix+vTfj3DKmYM4D6FxcGYAE2/I8tIy23nApWrOQ==;
 5:NYV1WmtOOwtwCtqZdQIzWTnaUjVfq7FY2lUrN5YbU0RNv/Fd2tBEVqgXHaSoUjVjI5V8VkPUEQ4n+Re1smHX1q56lI+eBT6pn8Xokq5kk29rgGbqzuZZNhg1KTROmnRr/PRra2lRI5Gdc/WFfkDzvg==;
 24:63cyUd4JTMkB5K+fFtxqQRQdD71Zx+GXX3iR9b83LZ4w8Ni9Ikr4bpSf8MCHwScdt7YV4p+eN1K3K7AW+KeoK2wgO+jU6VGKRhjJhlezPis=;
 7:co4MVOrdLza569GGGui9fncyrfLlZERrBnNn3WCcxyaEJmR7B9slSnQaNviWDjdKXyvrvtaXoWiJ3jPnyEnN3uj/9PM0vaduu7nETZXnEIoa+I0WF4mO8s9pwnAQf/+n6PSfwzEwtfjcWz8l21m1NMUpQwyNN7hBd18qXjVTvJRpRgA1loDg0OymnK469eJ089e9sXxgjOmt2KDUASC75u62/iD8sBPCZHuS2gQFGOQ=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-OriginatorOrg: caviumnetworks.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Sep 2017 15:19:17.8817 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB3100
Subject: [dpdk-dev] [PATCH v4 1/2] eal: allow user to override default pool
	handle
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: Mon, 11 Sep 2017 15:19:23 -0000

DPDK has support for both sw and hw mempool and
currently user is limited to use ring_mp_mc pool.
In case user want to use other pool handle,
need to update config RTE_MEMPOOL_OPS_DEFAULT, then
build and run with desired pool handle.

Introducing eal option to override default pool handle.

Now user can override the RTE_MEMPOOL_OPS_DEFAULT by passing
pool handle to eal `--mbuf-pool-ops=""`.

Signed-off-by: Santosh Shukla <santosh.shukla@caviumnetworks.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
v3 --> v4:
- Removed RTE_MBUF_XX_POOL_NAMESIZE macro. (Suggested by Olivier)
- Replaced char *  with const char * for 'mbuf_pool_name' var. (Olivier)
- Added eal arg info in release guide.

 doc/guides/freebsd_gsg/build_sample_apps.rst    |  3 +++
 doc/guides/linux_gsg/build_sample_apps.rst      |  3 +++
 doc/guides/testpmd_app_ug/run_app.rst           |  4 ++++
 lib/librte_eal/bsdapp/eal/eal.c                 | 10 ++++++++++
 lib/librte_eal/bsdapp/eal/rte_eal_version.map   |  7 +++++++
 lib/librte_eal/common/eal_common_options.c      |  3 +++
 lib/librte_eal/common/eal_internal_cfg.h        |  2 +-
 lib/librte_eal/common/eal_options.h             |  2 ++
 lib/librte_eal/common/include/rte_eal.h         |  9 +++++++++
 lib/librte_eal/linuxapp/eal/eal.c               | 11 +++++++++++
 lib/librte_eal/linuxapp/eal/rte_eal_version.map |  7 +++++++
 lib/librte_mbuf/rte_mbuf.c                      |  5 +++--
 12 files changed, 63 insertions(+), 3 deletions(-)

diff --git a/doc/guides/freebsd_gsg/build_sample_apps.rst b/doc/guides/freebsd_gsg/build_sample_apps.rst
index 9faa0e6e5..bd69aa9f5 100644
--- a/doc/guides/freebsd_gsg/build_sample_apps.rst
+++ b/doc/guides/freebsd_gsg/build_sample_apps.rst
@@ -163,6 +163,9 @@ Other options, specific to Linux and are not supported under FreeBSD are as foll
 *   ``--huge-dir``:
     The directory where hugetlbfs is mounted.
 
+*   ``mbuf-pool-ops``:
+    Pool ops name for mbuf to use.
+
 *   ``--file-prefix``:
     The prefix text used for hugepage filenames.
 
diff --git a/doc/guides/linux_gsg/build_sample_apps.rst b/doc/guides/linux_gsg/build_sample_apps.rst
index 0cc5fd173..7cba22e2a 100644
--- a/doc/guides/linux_gsg/build_sample_apps.rst
+++ b/doc/guides/linux_gsg/build_sample_apps.rst
@@ -157,6 +157,9 @@ The EAL options are as follows:
 * ``--huge-dir``:
   The directory where hugetlbfs is mounted.
 
+* ``mbuf-pool-ops``:
+  Pool ops name for mbuf to use.
+
 * ``--file-prefix``:
   The prefix text used for hugepage filenames.
 
diff --git a/doc/guides/testpmd_app_ug/run_app.rst b/doc/guides/testpmd_app_ug/run_app.rst
index e8303f3ba..61138957c 100644
--- a/doc/guides/testpmd_app_ug/run_app.rst
+++ b/doc/guides/testpmd_app_ug/run_app.rst
@@ -110,6 +110,10 @@ See the DPDK Getting Started Guides for more information on these options.
 
     Specify the directory where the hugetlbfs is mounted.
 
+*   ``mbuf-pool-ops``:
+
+    Pool ops name for mbuf to use.
+
 *   ``--proc-type``
 
     Set the type of the current process.
diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
index 5fa598842..150d3ccc4 100644
--- a/lib/librte_eal/bsdapp/eal/eal.c
+++ b/lib/librte_eal/bsdapp/eal/eal.c
@@ -112,6 +112,13 @@ struct internal_config internal_config;
 /* used by rte_rdtsc() */
 int rte_cycles_vmware_tsc_map;
 
+/* Return mbuf pool name */
+const char *
+rte_eal_mbuf_default_mempool_ops(void)
+{
+	return internal_config.mbuf_pool_name;
+}
+
 /* Return a pointer to the configuration structure */
 struct rte_config *
 rte_eal_get_configuration(void)
@@ -385,6 +392,9 @@ eal_parse_args(int argc, char **argv)
 			continue;
 
 		switch (opt) {
+		case OPT_MBUF_POOL_OPS_NUM:
+			internal_config.mbuf_pool_name = optarg;
+			break;
 		case 'h':
 			eal_usage(prgname);
 			exit(EXIT_SUCCESS);
diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map
index aac6fd776..172a28bbf 100644
--- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map
+++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map
@@ -237,3 +237,10 @@ EXPERIMENTAL {
 	rte_service_unregister;
 
 } DPDK_17.08;
+
+DPDK_17.11 {
+	global:
+
+	rte_eal_mbuf_default_mempool_ops;
+
+} DPDK_17.08;
diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
index 1da185e59..cf49db990 100644
--- a/lib/librte_eal/common/eal_common_options.c
+++ b/lib/librte_eal/common/eal_common_options.c
@@ -98,6 +98,7 @@ eal_long_options[] = {
 	{OPT_VFIO_INTR,         1, NULL, OPT_VFIO_INTR_NUM        },
 	{OPT_VMWARE_TSC_MAP,    0, NULL, OPT_VMWARE_TSC_MAP_NUM   },
 	{OPT_XEN_DOM0,          0, NULL, OPT_XEN_DOM0_NUM         },
+	{OPT_MBUF_POOL_OPS,     1, NULL, OPT_MBUF_POOL_OPS_NUM},
 	{0,                     0, NULL, 0                        }
 };
 
@@ -220,6 +221,7 @@ eal_reset_internal_config(struct internal_config *internal_cfg)
 #endif
 	internal_cfg->vmware_tsc_map = 0;
 	internal_cfg->create_uio_dev = 0;
+	internal_cfg->mbuf_pool_name = RTE_MBUF_DEFAULT_MEMPOOL_OPS;
 }
 
 static int
@@ -1309,5 +1311,6 @@ eal_common_usage(void)
 	       "  --"OPT_NO_PCI"            Disable PCI\n"
 	       "  --"OPT_NO_HPET"           Disable HPET\n"
 	       "  --"OPT_NO_SHCONF"         No shared config (mmap'd files)\n"
+	       "  --"OPT_MBUF_POOL_OPS"     Pool ops name for mbuf to use\n"
 	       "\n", RTE_MAX_LCORE);
 }
diff --git a/lib/librte_eal/common/eal_internal_cfg.h b/lib/librte_eal/common/eal_internal_cfg.h
index 7b7e8c887..00c3bd227 100644
--- a/lib/librte_eal/common/eal_internal_cfg.h
+++ b/lib/librte_eal/common/eal_internal_cfg.h
@@ -82,7 +82,7 @@ struct internal_config {
 	volatile enum rte_intr_mode vfio_intr_mode;
 	const char *hugefile_prefix;      /**< the base filename of hugetlbfs files */
 	const char *hugepage_dir;         /**< specific hugetlbfs directory to use */
-
+	const char *mbuf_pool_name;       /**< mbuf pool name */
 	unsigned num_hugepage_sizes;      /**< how many sizes on this system */
 	struct hugepage_info hugepage_info[MAX_HUGEPAGE_SIZES];
 };
diff --git a/lib/librte_eal/common/eal_options.h b/lib/librte_eal/common/eal_options.h
index 439a26104..9c893aa2d 100644
--- a/lib/librte_eal/common/eal_options.h
+++ b/lib/librte_eal/common/eal_options.h
@@ -83,6 +83,8 @@ enum {
 	OPT_VMWARE_TSC_MAP_NUM,
 #define OPT_XEN_DOM0          "xen-dom0"
 	OPT_XEN_DOM0_NUM,
+#define OPT_MBUF_POOL_OPS       "mbuf-pool-ops"
+	OPT_MBUF_POOL_OPS_NUM,
 	OPT_LONG_MAX_NUM
 };
 
diff --git a/lib/librte_eal/common/include/rte_eal.h b/lib/librte_eal/common/include/rte_eal.h
index 0e7363d77..1a719cc6b 100644
--- a/lib/librte_eal/common/include/rte_eal.h
+++ b/lib/librte_eal/common/include/rte_eal.h
@@ -287,6 +287,15 @@ static inline int rte_gettid(void)
 	return RTE_PER_LCORE(_thread_id);
 }
 
+/**
+ * Get default pool name for mbuf
+ *
+ * @return
+ *   returns default pool name.
+ */
+const char *
+rte_eal_mbuf_default_mempool_ops(void);
+
 #define RTE_INIT(func) \
 static void __attribute__((constructor, used)) func(void)
 
diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
index 48f12f44c..a44454129 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -121,6 +121,13 @@ struct internal_config internal_config;
 /* used by rte_rdtsc() */
 int rte_cycles_vmware_tsc_map;
 
+/* Return mbuf pool name */
+const char *
+rte_eal_mbuf_default_mempool_ops(void)
+{
+	return internal_config.mbuf_pool_name;
+}
+
 /* Return a pointer to the configuration structure */
 struct rte_config *
 rte_eal_get_configuration(void)
@@ -610,6 +617,10 @@ eal_parse_args(int argc, char **argv)
 			internal_config.create_uio_dev = 1;
 			break;
 
+		case OPT_MBUF_POOL_OPS_NUM:
+			internal_config.mbuf_pool_name = optarg;
+			break;
+
 		default:
 			if (opt < OPT_LONG_MIN_NUM && isprint(opt)) {
 				RTE_LOG(ERR, EAL, "Option %c is not supported "
diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map
index 3a8f15406..5b48fcd37 100644
--- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map
+++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map
@@ -242,3 +242,10 @@ EXPERIMENTAL {
 	rte_service_unregister;
 
 } DPDK_17.08;
+
+DPDK_17.11 {
+	global:
+
+	rte_eal_mbuf_default_mempool_ops;
+
+} DPDK_17.08;
diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c
index 26a62b8e1..e1fc90ef3 100644
--- a/lib/librte_mbuf/rte_mbuf.c
+++ b/lib/librte_mbuf/rte_mbuf.c
@@ -157,6 +157,7 @@ rte_pktmbuf_pool_create(const char *name, unsigned n,
 {
 	struct rte_mempool *mp;
 	struct rte_pktmbuf_pool_private mbp_priv;
+	const char *mp_name;
 	unsigned elt_size;
 	int ret;
 
@@ -176,8 +177,8 @@ rte_pktmbuf_pool_create(const char *name, unsigned n,
 	if (mp == NULL)
 		return NULL;
 
-	ret = rte_mempool_set_ops_byname(mp,
-		RTE_MBUF_DEFAULT_MEMPOOL_OPS, NULL);
+	mp_name = rte_eal_mbuf_default_mempool_ops();
+	ret = rte_mempool_set_ops_byname(mp, mp_name, NULL);
 	if (ret != 0) {
 		RTE_LOG(ERR, MBUF, "error setting mempool handler\n");
 		rte_mempool_free(mp);
-- 
2.14.1