From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0079.outbound.protection.outlook.com [104.47.32.79]) by dpdk.org (Postfix) with ESMTP id 9270290F1 for ; Thu, 24 Aug 2017 15:30:09 +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=vEUXt0SSYWJUsSfwzrN/aZ6REXrE+foOYPyHze3Ql+8=; b=nAZ5APYV1o6sgb1Kynp85hvQ3Y0/TKX0eounXi0WWGjyPxK2my0mZUzvbIM7jmEkyPW67SD9XnSIwWvObJaHbAHLnPXdOCkGvJYHPVv1x0VyBmTKCrGElOeJSVPeFNgLEjxlFSuqV9lckn2WuBPMcpFLC2HADuI2Tfb4vdWZdU4= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Santosh.Shukla@cavium.com; Received: from localhost.localdomain (14.140.2.178) by CY4PR07MB3093.namprd07.prod.outlook.com (10.172.115.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1362.18; Thu, 24 Aug 2017 13:30:05 +0000 From: Santosh Shukla To: olivier.matz@6wind.com, dev@dpdk.org Cc: thomas@monjalon.net, jerin.jacob@caviumnetworks.com, hemant.agrawal@nxp.com, Santosh Shukla Date: Thu, 24 Aug 2017 18:58:58 +0530 Message-Id: <20170824132903.32057-7-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170824132903.32057-1-santosh.shukla@caviumnetworks.com> References: <20170824132903.32057-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: BM1PR01CA0071.INDPRD01.PROD.OUTLOOK.COM (10.174.208.139) To CY4PR07MB3093.namprd07.prod.outlook.com (10.172.115.7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: adb77a86-759c-4d52-4427-08d4eaf43d2b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY4PR07MB3093; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3093; 3:UqXCZD3N0U3dS+v/aPKWbrA0sXyAbSM7W6FAD90pBlOOATuuNrotN+6HB0uc0moQWyGW88gaFg0Xx2yoFEVgjdURhZgaW1Z+9Xzxxy37a3bL/sdGDPMiQjPg5X/8h5orM18gpUcxO9blRUhOPZrshtV0C2kDzvH2EVgZRqLnitBrkuJYZm6NI9WHT4BfkcI0xCqkZ5ibCTEmVFQqJmOMlEJiMYDMRa5LSKUdwowIwTZlPtPwdeBm/sqRd7iXXtqR; 25:AMFv3srQp60B3/dT9o1gtgIGS10PCDfJ9CBzup6f/LesvwskFYediomGCpl4UTUvBe8nL8zGRCTlcQiiTr4+gbsZe97fumMKoK+TCARH81vNKUoAnb6n1OIj+S+n12rubMm3x2Gga3osuYIkau5xWi7vbfPDOaeT5MBmNChsYHdizP5wk3ocFsWvqdCfjp83YEprbzib5bzxQJiOHZrvvTLoRweQfM61PKA2uLmfh3Ev0lJyJ5iOFDKhkjfmMJ9Yh6jg083/+cADlf78BVLNrdD3SkNjaWxEMh7+yU4CWrr4gCMLdtm5D+RFhfwz4P8Xznto/XgWOhq+X8wqIi7/pA==; 31:nRP1SJ5sX114kP7Gmg/iSEiI6F2krd49QIlIFNH3wMp6o8kyuU5sBocuNCBr8L75zaflrUmVbfU7p/nDsVbU5yQ4qmv1BeghvMwVMwQJejPelLf99R8z+oTjb0kQHVThOowB7vg2sqqTi9YhcIO7b00MgGqqaCqmnKfBeHKcp2BLzQjXoNL52KZr1XKGgG7rtW+IXhSHIrB8EnH0lUTsUoFzFEMGCT6sKXZi5/uEOAM= X-MS-TrafficTypeDiagnostic: CY4PR07MB3093: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3093; 20:zO10udn2Tgpatmiz/X2qbw3xEby4vfvwdG3tIfZRl+rVjl3KrTK5su42YRfJAwfPCbZoki68MllIHPFxdjFCQokLre2amVMP1g0fWAy6reXy53/2R/2M4g9maXw6+gCxarCYmmF5gq3iIM0Rzk908ABqHJNWCYBlLNKkHemeGCn0eF5xh9+GqBQtbTAc+zhTksVm3YsIAU16FCvCySrtTyqLTSVEvjl/56sZfvHjSJviHx06QaXSxu00byA1VuaaP3pLTkWKbiHYYsOnCa1R6nNn/g5cJ9bmCD/9sQ5+ixUDvUGNaz4O5OFd+WhMAbf/ZXn63erJikcUZjmXzETRSdUB2XUOZ+o3Nn9P81+f/KiCyLzD15CZVbQcXTMEBd4Gwy2uT8TMjwFPZYr4K7gQnTQI0JeQ/dRZE1LTf+T/wy4G0vyX/L1/v1WNBR0ZOrsCJiTqdlPk1ntAawGVkyMitmmksyCL0nM4QPTJdBb7uezQyK+bHrxmgbKJBwomFrINpPGVC1AV1N5MIURxlPrUVy1kbUdbEIzC4K5CCbXkKXd9h3vudERoiWmRjSXLWzWc3mDygzStGGnMbmgROr97r8hagEzpazryUKoqHtJb5Ng=; 4:Gfytd/VhAIUqXbiMUQnVrvIOuJflx0dECir07smhTJp3KWGiRo+QmTBWNHB2ZMK18U7HF5caogu0L+SYv7fTtPjPnUrgmLDEnWDGKSe3RK+QcI0DfhomlWwjM61ZgEiWzigjwyOThcotibQTGZiU5CkaPrT3qwTydgHqWHhOaPdIW9YoRAH3BHCu8bxAuuGddfFuAhFezJQQsTBcciYWnXnqJQyNluCehRa4tGu7Mw3/Wicd4WEq/F60GQtBcDRk X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(10201501046)(3002001)(93006095)(6041248)(20161123560025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY4PR07MB3093; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY4PR07MB3093; X-Forefront-PRVS: 04097B7F7F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(7370300001)(4630300001)(6069001)(6009001)(189002)(199003)(110136004)(107886003)(53936002)(105586002)(101416001)(7736002)(50226002)(76176999)(42186005)(68736007)(6486002)(33646002)(50986999)(6512007)(106356001)(1076002)(2906002)(6506006)(3846002)(6116002)(478600001)(97736004)(4326008)(5660300001)(7350300001)(47776003)(5009440100003)(72206003)(50466002)(8656003)(48376002)(25786009)(81156014)(81166006)(66066001)(305945005)(6666003)(5003940100001)(42882006)(36756003)(8676002)(189998001)(2950100002)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3093; 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; CY4PR07MB3093; 23:Bn/4kbEINg3jxMDWfiMGPxmMIGvgEwv8Ljk3v7+F/?= =?us-ascii?Q?H6QEzZKhdsgXfurBYtRTl6noxN8+BRYBub20wZ/KOrPTxrMkh4mnQlT98wsK?= =?us-ascii?Q?REu3IHa47a/odPDbSZy1/IZqd51X9SOtJuELNjHTlLVu9irmSSWYX8rUCx7h?= =?us-ascii?Q?BtJ71bWwRm3tfasKiarzgamE0Cj9vWm6KHywHjrJ+TmtIkZDsPytx+Ykwsfo?= =?us-ascii?Q?RZa1Q46Df/H0Qoo3hi0LBGWg0uIPfwi8hJ2gB5C3fL1gCSEHXJFLedq6Efez?= =?us-ascii?Q?znkTbto3R1q7AWcDSl4G9sRdLM5tKtC2IGloFBZqG/3SeI3+lFFB/nFDFPGw?= =?us-ascii?Q?qbspSL1dluXc2eOBT5M4lQ7E6d8qd5G6uj3b7YjLDvFfwyRInjmGX67zYjZo?= =?us-ascii?Q?GzdoPI4+87XJemtql1va+GI6p7QqpXe/++sTAtRS29JcPZCXZmsf+cWA4fPN?= =?us-ascii?Q?z3QnHvwNUHWhOix+4vBbl7d+A7Qu7VHkz7OQOkaN6MpOIZcpkKspIXj+rsr4?= =?us-ascii?Q?aHG6Aqsu5SANSttxEE2NVgqtcfA7c3M1iUOFewl4UWqtDqSbKsKH9JJaqQdR?= =?us-ascii?Q?7iIDpYHDtl3An5mp8xZhMrqEZRnoKjKh2Ug5dRl4gnRzhtKkZBcuovLZcUDb?= =?us-ascii?Q?560hGdElVEvFxjjdylr4S82CR7L/YAvxxSfFK4XEvJPR2Mdyoi5Qb+YtIiO2?= =?us-ascii?Q?XU5CWipnxP4w9uFNUmcxMxp+xmPbl119UonzoEQFc1f1WKghxtlE/4TT/eAb?= =?us-ascii?Q?z8o2MGELLYQHD95E5sPW7KB8Kic2176qAKWsUUpbb3YNx6xRaK/fR8wXtvLu?= =?us-ascii?Q?wsC6/bC9CD8iagpeO6gUdYGtoN2n1oKnq6Y06bZV5Yj0ifIxFjzM17F61bqu?= =?us-ascii?Q?LdUiI8WL588dAUFtHXQb3qtbpdZ0GhKJY3pJIQioV94RGkFz3u5GV28aw+8x?= =?us-ascii?Q?ZCdXt3QIMIsDOi/6Z9t+HOoUelHewBpEtkfdIfVjzHzcez/jVfdeDOi3v1i1?= =?us-ascii?Q?EL/vFsZPdyroOpq+kHvVNWizD42GTwOJWAO2qGnOXTnnjDWF2O/DtsW9UCLP?= =?us-ascii?Q?ttbwm3RCyRJcyFG1BgvdLbbVwLyU72syKWzIU2720vd7PgQb0Gm0A9wh1hbN?= =?us-ascii?Q?F+UELm9hxxNZu/3eTCqSh9K136cp6lhSs1/Yn85jpJcPeE8r5GsWz9Fe0OkJ?= =?us-ascii?Q?/BW8dt2O5GHzHb6A/chrQlrgOLdZ6cBEZHtdTjsuL2s4U7bGHL2hlq4TA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB3093; 6:Tvx+dN2HE5ZOsNS8GQ8i4OZ8746tZWR8gd65wRlEfrauyt6k4yhGoDNatKzw1Mjb07MQtYYRNGT7Wztw6TBVvVe//nYCy7z/2S91KAg/SoN2uuXsQtLncU/XuRnr5yJYXbi7hbsYftc0zX72rRtInS6lbrfwHtPxSZQ9xYmuCQPnS+NPu9RXMZem7hDuIWt6Ubuzlx+Khhj+/wMhRn8xUbr5T3Pj6+lq8QyOwkgYE14GmdGVuREg03eY5cpRuYC+mQxOaH2yEdeAzGnPxicvIZPwtMHXju22JzZIy1BolCCEnyVJ6aca0Q7bEW2IDudIregg+AhRd2TkZFiBeaqzWQ==; 5:xjalFRituWPAs/PXXLZXVh8vlqX2lQgn7yyjHqjGNTVeN+o/FLlq/p42TRL+YIPpdeacUbdnBxRMok84B0cGQRIMSNsX7Sx31V0sZkfrOg11aTXKTebz4xG+JGuzbFv3jPRDuUkhHo+kPdtIxsK6VJz99z7JuMVHfZUmpUx9Sko=; 24:BzfSofhDr/BB23D/sst6HGzX7W/84N8AlRsRkckvHbZVFAU9ofliPHUX+8ZVng34ybo6OYsmjRTbYt984bAEiZ690T3uon/YEHf6IaTLI8c=; 7:51CXAp4nfpoKFoZFTYnzFWr30FXsVuxxAKsHjWR4Tmm9AcLEtJAbTJNCXvj+G2cdyXnX6+MZ71SUwWpX9xrEswNtCl4/jzNaMnrIjGIGEq8FafAQgxousEcAdlWRwln0hmXud1mqlWFxxFlKFYfdN41l9yyQ2Hau85txWxn2awIHQ4E8d2cFW0ZKK0k7tOaEO3vUKLgnCXmY9nVkFEx0e7LeKoYIZXyv8bvRvjvoIOc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Aug 2017 13:30:05.8841 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3093 Subject: [dpdk-dev] [PATCH v1 06/11] mempool/octeontx: implement pool enq and deq 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: Thu, 24 Aug 2017 13:30:10 -0000 Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob --- drivers/mempool/octeontx/Makefile | 13 +++++ drivers/mempool/octeontx/rte_mempool_octeontx.c | 65 ++++++++++++++++++++++++- 2 files changed, 76 insertions(+), 2 deletions(-) diff --git a/drivers/mempool/octeontx/Makefile b/drivers/mempool/octeontx/Makefile index 9c3389608..0b2043842 100644 --- a/drivers/mempool/octeontx/Makefile +++ b/drivers/mempool/octeontx/Makefile @@ -53,6 +53,19 @@ LIBABIVER := 1 SRCS-$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL) += octeontx_fpavf.c SRCS-$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL) += rte_mempool_octeontx.c +ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y) +CFLAGS_rte_mempool_octeontx.o += -fno-prefetch-loop-arrays + +ifeq ($(shell test $(GCC_VERSION) -ge 46 && echo 1), 1) +CFLAGS_rte_mempool_octeontx.o += -Ofast +else +CFLAGS_rte_mempool_octeontx.o += -O3 -ffast-math +endif + +else +CFLAGS_rte_mempool_octeontx.o += -Ofast +endif + # this lib depends upon: DEPDIRS-$(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL) += lib/librte_mbuf diff --git a/drivers/mempool/octeontx/rte_mempool_octeontx.c b/drivers/mempool/octeontx/rte_mempool_octeontx.c index 6754a78c0..47d16cb8f 100644 --- a/drivers/mempool/octeontx/rte_mempool_octeontx.c +++ b/drivers/mempool/octeontx/rte_mempool_octeontx.c @@ -84,12 +84,73 @@ octeontx_fpavf_free(struct rte_mempool *mp) octeontx_fpa_bufpool_destroy(pool, mp->socket_id); } +static __rte_always_inline void * +octeontx_fpa_bufpool_alloc(uintptr_t handle) +{ + return (void *)fpavf_read64((void *)(handle + + FPA_VF_VHAURA_OP_ALLOC(0))); +} + +static __rte_always_inline void +octeontx_fpa_bufpool_free(uintptr_t handle, void *buf) +{ + uint64_t free_addr = FPA_VF_FREE_ADDRS_S(FPA_VF_VHAURA_OP_FREE(0), + 0 /* DWB */, 1 /* FABS */); + + fpavf_write64((uintptr_t)buf, (void *)(handle + free_addr)); +} + +static int +octeontx_fpavf_enqueue(struct rte_mempool *mp, void * const *obj_table, + unsigned int n) +{ + uintptr_t pool; + unsigned int index; + + pool = (uintptr_t)mp->pool_id; + for (index = 0; index < n; index++, obj_table++) + octeontx_fpa_bufpool_free(pool, *obj_table); + + return 0; +} + +static int +octeontx_fpavf_dequeue(struct rte_mempool *mp, void **obj_table, + unsigned int n) +{ + unsigned int index; + uintptr_t pool; + void *obj; + + pool = (uintptr_t)mp->pool_id; + for (index = 0; index < n; index++, obj_table++) { + obj = octeontx_fpa_bufpool_alloc(pool); + if (obj == NULL) { + /* + * Failed to allocate the requested number of objects + * from the pool. Current pool implementation requires + * completing the entire request or returning error + * otherwise. + * Free already allocated buffers to the pool. + */ + for (; index > 0; index--) { + obj_table--; + octeontx_fpa_bufpool_free(pool, *obj_table); + } + return -ENOMEM; + } + *obj_table = obj; + } + + return 0; +} + static struct rte_mempool_ops octeontx_fpavf_ops = { .name = "octeontx_fpavf", .alloc = octeontx_fpavf_alloc, .free = octeontx_fpavf_free, - .enqueue = NULL, - .dequeue = NULL, + .enqueue = octeontx_fpavf_enqueue, + .dequeue = octeontx_fpavf_dequeue, .get_count = NULL, .get_capabilities = NULL, .update_range = NULL, -- 2.11.0