From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0064.outbound.protection.outlook.com [104.47.40.64]) by dpdk.org (Postfix) with ESMTP id F3A24A498 for ; Mon, 15 Jan 2018 07:12:35 +0100 (CET) Received: from BLUPR0301CA0034.namprd03.prod.outlook.com (10.162.113.172) by DM5PR03MB2697.namprd03.prod.outlook.com (10.168.197.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.407.7; Mon, 15 Jan 2018 06:12:34 +0000 Received: from BY2FFO11FD024.protection.gbl (2a01:111:f400:7c0c::186) by BLUPR0301CA0034.outlook.office365.com (2a01:111:e400:5259::44) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.407.7 via Frontend Transport; Mon, 15 Jan 2018 06:12:34 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; NXP1.onmicrosoft.com; dkim=none (message not signed) header.d=none;NXP1.onmicrosoft.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 BY2FFO11FD024.mail.protection.outlook.com (10.1.15.213) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.345.12 via Frontend Transport; Mon, 15 Jan 2018 06:12:33 +0000 Received: from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net [10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id w0F6CKAI011776; Sun, 14 Jan 2018 23:12:31 -0700 From: Hemant Agrawal To: CC: , , Date: Mon, 15 Jan 2018 11:41:13 +0530 Message-ID: <1515996674-26338-5-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515996674-26338-1-git-send-email-hemant.agrawal@nxp.com> References: <1513333483-4372-1-git-send-email-hemant.agrawal@nxp.com> <1515996674-26338-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131604703537009293; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(396003)(39860400002)(39380400002)(346002)(376002)(2980300002)(1110001)(1109001)(339900001)(199004)(189003)(85426001)(36756003)(8936002)(86362001)(498600001)(97736004)(77096006)(50226002)(81166006)(81156014)(104016004)(68736007)(8676002)(2950100002)(356003)(53936002)(76176011)(305945005)(316002)(296002)(2351001)(6916009)(48376002)(5660300001)(106466001)(54906003)(105606002)(51416003)(47776003)(4326008)(2906002)(16586007)(50466002)(6666003); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB2697; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD024; 1:iCs5LI/dGU0Xs2yPj84z6PfcFc2p5GK0hdha4sf5ydztOKi6cFBpjwEo1Sz4PzIgnpDtTPURtTXzWxpljnfcKJ+AMd0O5UOIbfKIr7yrdaj46cxo2pl/ciDo6xtUVDas MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fffc6136-2571-4df6-128d-08d55bdef78f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(5600026)(4604075)(2017052603307); SRVR:DM5PR03MB2697; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2697; 3:wIDpJf1L7wyr+lPjMUyyWgHNwmHSjw4apTxUs+79Sme7x6/+GuBtdScxYOmYXvpqUu+ABsRtqaEzqgPWG555yWXVUm0Y+XoJcdWPYsKfH1T0WcLR0mKfAPhBU7spwiSZX5r5/7qW/cGzm8CsylyUSG9kU7hnLUqMSl3N8ZVxkOV+tNcZ73neQRVPH60muuz+TabABvG5nHvmrRGRh1bwLXAa1vdve2d+3Mtxfn7iIMLZ6DK15nI3OPc57w939EaArKjA7pxOQMWLwdr52sVwJq7PQuTRSVclYNGbrHauPXmMBtbaPpJlF+hLzDlBcCL1Eb+YwkRVrxEt0xo0kVHZ58AiKZUdfspgATyjiLbiv8A=; 25:rBduJW22NauWMNiUL0EzSCj+04gSvQMmoLSwU4t6UOV6BaXdrnhMvsmNrY1etFm0e1WH9ZX3mBciuHoMrrhFOpmVcQTh6Ymp/EaKKZMG5EeWGOvJBnHuXChkFapaDcW2ZdMxmSfULcTJA25qElT/GWJXltfC4cXfPOxl0f4GV02wTJ7s+N7nRF7NJR0xFWQ3jaZvWvCWJi2EDn7AJ/Tsg9KMbPj0TbUqyWNYLKLtlEvsU1F7S3ojJp+WbzUGMDU5/e993yt3guZDoKdv+NbOE3cg+nt/WfUDwhN6rBh4r4l03/K2Bb7pCnplzMgMyyMd3I7W7nW6fWECpSCy4mCwHA== X-MS-TrafficTypeDiagnostic: DM5PR03MB2697: X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2697; 31:wBp5vuouCbArcvu0l0An6fvhWFMjiqrsRknHUYXhbReclIm9pFbHlxPmkemyZc1vanIAeoSacS8i1EufQbfrDbK8jGcwUiRcDIgsI10kURJ0sZmTupxYP0ExY39ZwxGJro/4HcE16aWfftVhl+oBlr57Tx40fHe9K8oFqr5hHvOIptpO21Y56DId+wC0riUHvJmulldPhwjM5B7WIA7u2C5jLxhFYYPkri57Bl9Lelc=; 4:HlH/468XhKW/GQjBJa2r4gmaU5OAoOkSP/MkVxAxlfGc1lCU29RzoTn0o0WNOuvVRdxA85Kc786TLF/J9hxp/acYfmoECHZ0T5yHGivudS1Ou570U2FxSfcJu5RLX8hQST9OdkEXG/TWYyZ1K9hZNG67LOEoKk1MiXHpJurWhAGEcDfDzIo2LnfqpmzX5iaWtucPtVjWu2d4XOvaqKcsHxjo4EhYt7kuoeYatDvGOtSSJEubF3ZLQpOijLtAa3gwDFh5IJ2V8lWY8VQ2uebkF5JPzClVbLrKG/z7QMAROxKV4khXHnH6dc0INSVfIJ44wTC+YDl+5GXvxaudT/LXc4ks74xWaXNU8wsrKoJ8S5c= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(131327999870524)(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(8121501046)(5005006)(3002001)(3231023)(944501161)(93006095)(93001095)(10201501046)(6055026)(6096035)(20161123563025)(20161123561025)(20161123559100)(201703131430075)(201703131520075)(201703131448075)(201703131433075)(201703151042153)(20161123556025)(20161123565025)(201708071742011); SRVR:DM5PR03MB2697; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:DM5PR03MB2697; X-Forefront-PRVS: 0553CBB77A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB2697; 23:blWj0yIlOZ5vS/ohphAEhMM0SJZdI0XHeg6CRkF4/?= =?us-ascii?Q?odL06DP1BW2IeTsvasF1S/gI+xfwj64dV0Itj8uMHyPjfGwdg6NJcEKLWI74?= =?us-ascii?Q?Jf0gA46REP/Py6uiInAbDclv4Ezk/FF3I/O4hg2IhoGeukt9PivcHrT/CpaS?= =?us-ascii?Q?n7FvZcFXgptHQM79RyyIBm1dml/IbQ/uEoWAFHLkKougdwGJ/U6OYBGM/jTJ?= =?us-ascii?Q?lLTp13dIk+Xgf5gljOnwhDDVspv5X/pJDzGea+zwySiDa6PShCDdF4n0rgP+?= =?us-ascii?Q?9uGUDri7Njc3vPpfuhj7qHjeV/3ZVHSZPy/rfTM0e/8KdUQ+fuJ/NXaxguO0?= =?us-ascii?Q?f+MkoCmTZ//7bV9nPyw+1ndhhWQ2C8MOis1/Vc/vxU04afUhyUf3P0RHYYHa?= =?us-ascii?Q?rfcLHpw3Nw0FFvnjT3j3TJMUlMRUT709TyQCylcHe0Kx2xiWV66DO6C6i7yd?= =?us-ascii?Q?4CdEf42iTQO+uUjsZC8a/rLz8Ap4Oun3v7CaziyQGW+My9NzgL3U/G8TATIa?= =?us-ascii?Q?2aIPCvgmm6iDCIffUKJaKdoKmnS0idqgYjrJ46N41cVcPgqhVolDcPjwrds6?= =?us-ascii?Q?B78rkOgAm07zqE3AClhjGJQZSxPZQrzGbk1cYWkbd00GZW6HL3nkXoQ5JEFF?= =?us-ascii?Q?9emDus/tuQGyEOLpMhhgwLg61ILGOnzQgYELV4cWtspmT/FYX8Lmh2FSWNHJ?= =?us-ascii?Q?AhsotxEGOVgMT4ZJqRU+AtExXAK105IVgV+EX3P3oT3s18nYsn1UaCoPqcuo?= =?us-ascii?Q?4lIkWBAbV5UzZzI5NJ59p6Wgvs8dgFBZrRWPaxDrX7C1d59A8otWcvlCahpj?= =?us-ascii?Q?HhCE0212ypL2X/L0Xq+xOeUHZczK8nE/j0FCkNBv8pEoy/GgrSORlw/BY907?= =?us-ascii?Q?E166KiSmi75S07rVm8YdjnCLWKOWoctjFRTeRET/ULAd3j9CdY9OcvwBOEbj?= =?us-ascii?Q?JghFgvUQzebPhoMZqCtVajbDtCugw2tiC2NGXh60INVdZMifKcoxgIMDQjGq?= =?us-ascii?Q?AIeBRXVHiPkg1tzCWXwzwplJ0EOWqxvmIOt5rsXSmDvN9luna/G/XWjxx9eC?= =?us-ascii?Q?J1CJrg=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2697; 6:lZcZ8LlKtO/1B+evjDzuRwR3CM7ck8146rjBUVhXENK767yuRJ13DK7bz7FrQi0KrKr55DS2H5c9nTPyeUp0L4C11217kBQz1Ee8PWa7UeyMKIbo2ZsUKssCef1DOZwUG8PoSt/AuqTjBhw/EswSs2a3PqX6ONFsvkMn/7ocavDVnyQ2GSFCs3QeOEGDZiebhpEXCwu26d3Edt/Q26NddrBSuV5UGG3swFoVlSCbqUj+JYgOeWH5D838HFsG/ZaxlvgGDlK1lKKjX9AA8wy+PD9RdWRR3STyJfu6DP/HbvjqWyVjr47dTr9QV9xqDhDyPmmMFqVKVEfQKRxsQs1orALHzMUQa/8j5rZpXGE/UVM=; 5:GU0MemS+mHIdiYfwqC58e8jsqeg70n4hXPjlEkAYvaMVGgdUzw/NwtNxivZ7/S3TXHVktdydSA9zkfTXYp0Wk+BN09AojJLO8fai7A+DuoAPOslsW8P6tjm1Pc3dOPPvuLxQNbleoqIdYpWcXrShn8pqnW1maMeX6Kb3rpN1aUY=; 24:tSgKBABr+0ArQdWDzYaRl028sBKN7K4zuu3QSbMeSEBDOUZdFi+IRTzoGLNBAguBie4WPICZokLrRQ8vgFhtW7TNQ9bhggkLd8JQPgwYGHg=; 7:6ryvmC4HRtjHtsiHz3DLGIqCXoXyedBxWBPtoPjUyiJJK6VmYx25qA1LJTxEmoHV/KdgE6WiNQft/Z7BOFYS2eEK3pBNHB/ejh3E0R8ZRDUIsGZssHyHnCj3nc8L4Yu4OHpH5hXaw460CcOarv5r91Kcl36lGs6tIlh3ft1fFa5hgrSzeGaEjCfSXkHG+2V0/2+3CvgR9Kgn4k6tTKmh2AYnA0Oo4vnaXHFI6tkuKKbNcTybn1kuJxeunaPnvrC5 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2018 06:12:33.4981 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fffc6136-2571-4df6-128d-08d55bdef78f 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: DM5PR03MB2697 Subject: [dpdk-dev] [PATCH v2 4/5] mbuf: pktmbuf pool create helper for specific mempool ops X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Jan 2018 06:12:36 -0000 Introduce a new helper for pktmbuf pool, which will allow the application to optionally specify the mempool ops name as well. Signed-off-by: Hemant Agrawal --- lib/librte_mbuf/rte_mbuf.c | 23 ++++++++++++++------ lib/librte_mbuf/rte_mbuf.h | 42 ++++++++++++++++++++++++++++++++++++ lib/librte_mbuf/rte_mbuf_version.map | 1 + 3 files changed, 60 insertions(+), 6 deletions(-) diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c index fd3b6f5..482676c 100644 --- a/lib/librte_mbuf/rte_mbuf.c +++ b/lib/librte_mbuf/rte_mbuf.c @@ -186,15 +186,15 @@ rte_mbuf_best_mempool_ops(void) return RTE_MBUF_DEFAULT_MEMPOOL_OPS; } -/* helper to create a mbuf pool */ +/* helper to create a mbuf pool with given mempool ops*/ struct rte_mempool * -rte_pktmbuf_pool_create(const char *name, unsigned n, - unsigned cache_size, uint16_t priv_size, uint16_t data_room_size, - int socket_id) +rte_pktmbuf_pool_create_specific(const char *name, unsigned int n, + unsigned int cache_size, uint16_t priv_size, uint16_t data_room_size, + int socket_id, const char *ops_name) { struct rte_mempool *mp; struct rte_pktmbuf_pool_private mbp_priv; - const char *mp_ops_name; + const char *mp_ops_name = ops_name; unsigned elt_size; int ret; @@ -214,7 +214,8 @@ rte_pktmbuf_pool_create(const char *name, unsigned n, if (mp == NULL) return NULL; - mp_ops_name = rte_mbuf_best_mempool_ops(); + if (mp_ops_name == NULL) + mp_ops_name = rte_mbuf_best_mempool_ops(); ret = rte_mempool_set_ops_byname(mp, mp_ops_name, NULL); if (ret != 0) { RTE_LOG(ERR, MBUF, "error setting mempool handler\n"); @@ -236,6 +237,16 @@ rte_pktmbuf_pool_create(const char *name, unsigned n, return mp; } +/* helper to create a mbuf pool */ +struct rte_mempool * +rte_pktmbuf_pool_create(const char *name, unsigned int n, + unsigned int cache_size, uint16_t priv_size, uint16_t data_room_size, + int socket_id) +{ + return rte_pktmbuf_pool_create_specific(name, n, cache_size, priv_size, + data_room_size, socket_id, NULL); +} + /* do some sanity checks on a mbuf: panic if it fails */ void rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header) diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index d26e8cd..f958e3c 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -1081,6 +1081,48 @@ rte_pktmbuf_pool_create(const char *name, unsigned n, int socket_id); /** + * Create a mbuf pool with specific mempool ops + * + * This function creates and initializes a packet mbuf pool. It is + * a wrapper to rte_mempool functions. + * + * @param name + * The name of the mbuf pool. + * @param n + * The number of elements in the mbuf pool. The optimum size (in terms + * of memory usage) for a mempool is when n is a power of two minus one: + * n = (2^q - 1). + * @param cache_size + * Size of the per-core object cache. See rte_mempool_create() for + * details. + * @param priv_size + * Size of application private are between the rte_mbuf structure + * and the data buffer. This value must be aligned to RTE_MBUF_PRIV_ALIGN. + * @param data_room_size + * Size of data buffer in each mbuf, including RTE_PKTMBUF_HEADROOM. + * @param socket_id + * The socket identifier where the memory should be allocated. The + * value can be *SOCKET_ID_ANY* if there is no NUMA constraint for the + * reserved zone. + * @param ops_name + * The mempool ops name to be used for this mempool instead of + * default mempool. The value can be *NULL* to use default mempool. + * @return + * The pointer to the new allocated mempool, on success. NULL on error + * with rte_errno set appropriately. Possible rte_errno values include: + * - E_RTE_NO_CONFIG - function could not get pointer to rte_config structure + * - E_RTE_SECONDARY - function was called from a secondary process instance + * - EINVAL - cache size provided is too large, or priv_size is not aligned. + * - ENOSPC - the maximum number of memzones has already been allocated + * - EEXIST - a memzone with the same name already exists + * - ENOMEM - no appropriate memory area found in which to create memzone + */ +struct rte_mempool * +rte_pktmbuf_pool_create_specific(const char *name, unsigned int n, + unsigned int cache_size, uint16_t priv_size, uint16_t data_room_size, + int socket_id, const char *ops_name); + +/** * Register the platform supported pktmbuf HW pool * * @param pool ops name diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map index b8e258f..9b53502 100644 --- a/lib/librte_mbuf/rte_mbuf_version.map +++ b/lib/librte_mbuf/rte_mbuf_version.map @@ -41,5 +41,6 @@ DPDK_18.02 { rte_mbuf_platform_mempool_ops; rte_mbuf_register_platform_mempool_ops; + rte_pktmbuf_pool_create_specific; } DPDK_16.11; -- 2.7.4