From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0057.outbound.protection.outlook.com [104.47.32.57]) by dpdk.org (Postfix) with ESMTP id 7528C7CA9 for ; Thu, 31 Aug 2017 08:38:16 +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=lJh3SXNRGbWTdaCy6nWe92CQCDBxjd6x3klpppC215U=; b=ScKB3B8kxX0DkHndS59z96c47n9rS2qUDbLst4FmuS9tWOYbhbbpH3z+bkDtRtnJICZkvs4+ie/ga3gX2Y9Pp4CliN4yfraMZxNLgY8h1WSb3wTUYsmS5eY8tUtqMzixn0ku4yuuMl65HpNaSivrHX4PMNkrMDuLWipTNob+vkU= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Santosh.Shukla@cavium.com; Received: from localhost.localdomain (111.93.218.67) by MWHPR07MB3104.namprd07.prod.outlook.com (10.172.95.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10; Thu, 31 Aug 2017 06:38:11 +0000 From: Santosh Shukla To: dev@dpdk.org, olivier.matz@6wind.com Cc: jerin.jacob@caviumnetworks.com, john.mcnamara@intel.com, thomas@monjalon.net, hemant.agrawal@nxp.com, Santosh Shukla Date: Thu, 31 Aug 2017 12:07:15 +0530 Message-Id: <20170831063719.19273-7-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170831063719.19273-1-santosh.shukla@caviumnetworks.com> References: <20170824132903.32057-1-santosh.shukla@caviumnetworks.com> <20170831063719.19273-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: PN1PR01CA0089.INDPRD01.PROD.OUTLOOK.COM (10.174.144.157) To MWHPR07MB3104.namprd07.prod.outlook.com (10.172.95.10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a72e9a91-2e25-40f7-9c7c-08d4f03adb5e 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:MWHPR07MB3104; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3104; 3:HB5fdkM0YmYCiIENyaHL5mLrtYvyNsdZIiu2LTKDHHyyKw5bpni6Nf/cu8kWcGmGeBsAWBz2mP22w7jRqG5ngpNIPtvElED7ZnVMAAubIGJHNWUkX9tYvCE1ixxpzNRlj+NOuR0GcnZU9eAW4rHKtGy+IBBfIEfxS27xMQau5Q1aeEWQm50wYcoUT0I7ukL/yJk49VIzcDnIb5ShhOkN5WJEJrRJjBLun4r1O+uRg/ErwdtnoXePIbfRbIvuifSB; 25:ar23dIf2id0ixe/UFuTZCZSHZsr8x3eVGbiGDiA0MUhqsgetHB4nM4o3alLVrqgKgIHBV5tudAJgsr8aKTIRFGZS+uIi90czsPBS7C/R0FIiF5Nb+EJA9SHRY0COqlVpfWqIiOgxkuEfzQ4ituYt8E9nyPBFsCMvEHrVLOZzl4HFhKbHPOrmHo3J7KsaiZu2Z+/Dt1RNko2OSICvp126nos0wUSG71A4oOt/zkp8Wy+3ReHlPm5zcNv2ZJYxyLd+1nRBm/vIdjjzoyefmt6w4ByD1kHvJTRn98ry664WFwa/Aj0eonUOlZzb386RJQnRtDCGMKGM4YSyRtv+Y6rmiQ==; 31:Op4e8tBjqWXtvuMvdnJ+fszFiw88Dj4Mm6NAhwJhGi+aXLqxFMStPtMiHGMlF/L7ijD8dQ3S3CifDz8Fkjx5YeI6YwOF1AY5weYUIkc10XmOwmiM37IZmWfKXkwcziUtYXf2ZDvWe6DzCQzyfTIbmPQAdgW76KGxw+Z3QdlBsw3o4SheLDp9wDUvsbpiXw+dxgRQKT+82NEDCXjSUVg7BLI/COgTRnBT0xRdauScCVU= X-MS-TrafficTypeDiagnostic: MWHPR07MB3104: X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3104; 20:/Zs0jFj3hiNytQLn8G5GD3pcvMxYYQ6ZJJ0UCBAQa2tohx8N5SJUXiKhMu5/uGMDpEYHdiJVsMT7MIVazjS5T/DzvL8T0NPBWh6iy/10CNnWC9zsxjKatVX2spQDsA8YTBer17Ku5/uYMaDl84qhhzxHzz9bl1so5gYIy6gBbBMfQk7Z7J16Gym58hKBAAMrXC/rOxW8/Ti2/6ZG5XykrcQyqNT2HqwWtuQseyuEL3XQA3NF63y8Xmo7mB5QHT8Dg4GC5Y/35L+9vSVAtlefyRhEgR+7Id8ADSzdTcMBT+b2G9SHPawczWfMGVidSSmIe69o9uLBpoS7xIiZuVkIcVJGOKwSb7cGRu7I6R0tjR+XjOkXvdX5GCHVD6zZqvXPl2V3KeIoqgaov/UxXbs2vbG8tEYF/6wchuAeznCWLvwWV1a/2oRGd5PlV//AR1qe910fBqOEY5Nb1Li4An/u/7TkWMBhHh+JZo/gZ+Tg9TICvSces4jgatyQ4NJZfD1OEt4zrHWjkR7o/21j02j/qUQ9rBGd6ia7Jqd/jakHKBBwnhQecdmKmEwLVuA4P+K198WInc6bXwqdiMmeHHEW7262ulADo586ffzmmcly9SQ=; 4:zbnugk8raqXSjjEG94eCj3jC0CBBovFOl4AdO9eYCnZlOTH4WlG/csQmhvk1FHuYAWwo4h+d4ATXrjfFYkRRlT6aWQMOAkZRRCZpVV9J9Z3Hw7z9+RNBSeKZZVRnD+t3aAzWQmYmhE/vxbLFdSFpVEoWoqU0WA2Ajim9vxR9BSUWwoyl0lxIYbmnsJ/4EURXc6tWiLf/RBzTI8fRnerPZzTAtok00LC8ozvh4JBBa0tFYPV/L9rXHMqV4OEOGJo5 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)(10201501046)(100000703101)(100105400095)(93006095)(3002001)(6041248)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123562025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR07MB3104; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR07MB3104; X-Forefront-PRVS: 04163EF38A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(199003)(189002)(66066001)(6486002)(33646002)(50226002)(47776003)(6506006)(68736007)(36756003)(50986999)(101416001)(4326008)(76176999)(189998001)(25786009)(50466002)(48376002)(7736002)(5003940100001)(6512007)(105586002)(8656003)(478600001)(2906002)(110136004)(107886003)(305945005)(53936002)(8676002)(42186005)(5009440100003)(72206003)(42882006)(2950100002)(1076002)(97736004)(81166006)(81156014)(8936002)(3846002)(6116002)(5660300001)(106356001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3104; H:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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; MWHPR07MB3104; 23:FdNvQ78xmEBB5mAkZUQo2QTkS0x9gpVbGNewSG1qx?= =?us-ascii?Q?FwY8D9CHQa5kSi5AfwI81S9hEBjI/yFA9uDieKRRXcmBt2XEq3aJx1Q9HuM2?= =?us-ascii?Q?wCNdx6CI8cBoratRwNpXE4T7vmoOEEzjwTMJbvVRILb0qJoLxgNcYQSOJiRY?= =?us-ascii?Q?K8FqwQMNjkLZLQf8Kc26YLaKPb26YEoqCxvzgYxxf5CkXiJiowAMT5ZtTAcY?= =?us-ascii?Q?hS1BRoDzQQe7q92vP/8FCDERSLI1SQs6Ln4r04GctPpneUHfjpljQ10AXfZw?= =?us-ascii?Q?Xb2EUIHP0xUVsTkt8wQPPSbZnFI9MUOnmY1vA6riHPqN+Ie7kZc2N/GbWYeM?= =?us-ascii?Q?rpCaHcXPeFwHZkDQxto8sLQzIEEpC2OnvmUH3JeYC3J++0T0l65WCEL2irYd?= =?us-ascii?Q?7b53DLD1ykbjuUmrrHxhrvG8diNMPYNLQjRP+StnrlUsYyOzzJUl1Brkb/ws?= =?us-ascii?Q?uRXTWHp1VFEkkueIESz0YO0+BQ8/FNutzNYrEV048dSs0HssZT0dz+op/Iwy?= =?us-ascii?Q?2GcgLJ4hs5JQcACGrqBkb3gM1fV8KApUQgudxiA1qujG4N5dW/Np/qCEvqAV?= =?us-ascii?Q?qulUrEQcgiFStawQpDhtATBEN+Jb2hbKaOb6UpsrSqRrg9C8T3Oq9kHDuWUM?= =?us-ascii?Q?fqxP+MZQwwLgcxQLWrbN6Egq/OLTN+VfQl/His6WHbAIkeTcXw4OXV30tAOe?= =?us-ascii?Q?AEdtxAzsUqAf3hB2gyloK43NtY/wz24XtApbXrsp/y8vQWegoXHuRos7dyJe?= =?us-ascii?Q?mfKekcZikY4rDf9wQScKm/AlofurDzzYByVtC5/+B2mtxAg/ecgMS8fDncJ7?= =?us-ascii?Q?UnMRDhkJpZQ+iXFXBO3RgPc8v/qV4v1rcOHOtVsYGkxh4zAHvUUBOd5mACTz?= =?us-ascii?Q?t3uo3BjWciJWp5BnNBCY7PufS3yM496/ihaEEL2K4Muyf/pd211P7g5Dku1F?= =?us-ascii?Q?hGPF4azUzJMf7o1jeyWnFr73CXxuXy5ygjgMAJUCieNFHbCnC5W/6GMchtAH?= =?us-ascii?Q?Gj5KYBMgZV2G7nK3AjcqDWJu3bZDcJaq9g7kJ0SC7JX7phEeQTbCMqEhn30Y?= =?us-ascii?Q?gl0Ad9VzirxSD1wjrXdTRne62jN1iNbF3jP6VZi6+hPp+wBuzPKsbki0WZ/e?= =?us-ascii?Q?cDhWP0uveo=3D?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3104; 6:oRiL9KzAAXw4eq+laZOsJVGhdJgSFMtw+Lbm4nt3KcZMSPIUqXnGMBE/NKWltD/RF2E0x5dXB40W7405PAds6PVk69wpM+wwraEtaA1lK5sI5qn0FQ0eoOUafBFmtjcZo6jhhV+y4i+HZKCaeZizxKwlbFqUswES2WPaAOofRYC3xwZYx11onN5w6oPgRaEbiyJS0ioCsLg02bBL2A+GQcxI0I0PQCry3wBBBBXT4v8x7FrZI8wgI1+kkSczgserjxjrmfyUS0CTcaemKsNfofy3FgJh1eIGUo1+78mhlvkESoE6G1xmFn369HEwAMW6kVbrFjGpJBSti4RGdZvpnA==; 5:DbEGnLIO+FID4vclECQjffIq1grtbfYq5xOcNxs0Wva+VZDclT7EaNpO1wgw51/WO8XTjI0Yhj2eBIC+MAPQPBvDAAF2nBeR8cANfDb/K3o+fK35V8YmMLvqGlk4wXFMjipZZiygjXXUSaH0IG7hxA==; 24:3uPP/ftzUWOOe/497ItTfNBCwz5/fV1vl6NarbniUVDM9BBAi+R4YlI2jt+r3mkSb1K4IvEY1G6AGQ7vi9qTikG2gHSK4bvFZUYUGpmP7qk=; 7:6dklBAppvjimfCn8iqiwCLH3lkwkV8vRX6/xl0bpMTgj8nSUaumZa6+vvbREWwYfYqOVcPM6Kpms7YJbqa4mhkC4odIzUSdlbZ3TUM3IoKt+j6nDoghIh8Sd0qMHMg4Qa+bSD4rV4tIK8R7ybMMyt44fuv6D4yCdo2IlJdakCSVqhm0fSDkRP6pfhB0Pl3qcDeJjTxLbA7XllpBwlHd9y88WosovvYxBT+xp7TAFy0g= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2017 06:38:11.9012 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3104 Subject: [dpdk-dev] [PATCH v2 06/10] 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, 31 Aug 2017 06:38:17 -0000 Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob --- v1 --> v2: - Mask the gpool-id from pool handle and pass pool bar to pool enq and deq ops. drivers/mempool/octeontx/Makefile | 13 +++++ drivers/mempool/octeontx/rte_mempool_octeontx.c | 69 ++++++++++++++++++++++++- 2 files changed, 80 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..9477469f0 100644 --- a/drivers/mempool/octeontx/rte_mempool_octeontx.c +++ b/drivers/mempool/octeontx/rte_mempool_octeontx.c @@ -84,12 +84,77 @@ 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 *)(uintptr_t)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 *)(uintptr_t)(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; + /* Get pool bar address from handle */ + pool &= ~(uint64_t)FPA_GPOOL_MASK; + 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; + /* Get pool bar address from handle */ + pool &= ~(uint64_t)FPA_GPOOL_MASK; + 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