From patchwork Sun Oct 8 12:40:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santosh Shukla X-Patchwork-Id: 29889 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B6E061B1C2; Sun, 8 Oct 2017 14:41:16 +0200 (CEST) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0043.outbound.protection.outlook.com [104.47.40.43]) by dpdk.org (Postfix) with ESMTP id 106A71B1A5 for ; Sun, 8 Oct 2017 14:41:14 +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=MZWPn6fVDB8V7Xguut5LA0CDVPoMV3mVELozzhlGi/U=; b=WKEikk95kLRQfi11J10FSlUHTfu66sS+rbJBcfCiuPDoFxU81rfWYK6iq5SP5iAsL+NGHODNHSLCSWpI+0GJgKzBVLO31FWos62pboaOIShLJ2VmHdULrjcmcxvGdHQ6corFsCDtX3kQAY864sC5aa47n6d9X3/bv6PwLpsDXaE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Santosh.Shukla@cavium.com; Received: from localhost.localdomain (14.140.2.178) by MWHPR07MB3103.namprd07.prod.outlook.com (10.172.95.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Sun, 8 Oct 2017 12:41:10 +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: Sun, 8 Oct 2017 18:10:07 +0530 Message-Id: <20171008124011.1577-7-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171008124011.1577-1-santosh.shukla@caviumnetworks.com> References: <20170831063719.19273-1-santosh.shukla@caviumnetworks.com> <20171008124011.1577-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: BMXPR01CA0045.INDPRD01.PROD.OUTLOOK.COM (10.174.214.31) To MWHPR07MB3103.namprd07.prod.outlook.com (10.172.95.9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e204a5fc-8f2f-461a-5605-08d50e49dc40 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:MWHPR07MB3103; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3103; 3:ZWko36kBVNUjDCZHQro4LWZRC+L8qlYtRbzAQlN3zGdNTNvCHIgI+sB7VX3U3OWOUxoRUSgOu9cmIGjbkxEjiUNEyvfZn/IUf0gbujstKgZa8lP/vz78IK7NWOQR5BV0MI9My7tj+7c8RVlkmpckN31/b15ka8URQW3nXvf94Ldb0UQTdCr39qLOT09mTO9aZvwbBZSL88eNm9W7vAECG18FJHEwymK1buebKx71vABH3BGOcPs+HgeBCcnLAI1o; 25:xOWOZut76qfDIWVAb1UsH70P3Noipz1FpYVMEQpRhJclnbrfcTV9hS1QOatJq08T4imGd3giuF0/S8GRqSzZFc7SQKlF+TVx0JxVJX8V12E/zqXaZxyTQc2/JMVD3lxy+Pgs7HUdqJpzKWTNBQJyHg6fPnEPh+bNW4lRb+LHGQD7cw/S52lKSs7kHQVyFlhUt1CjPSUuCOhzefKSHgOSIgugWalwQOw0+PnzLO90w9cI0KNvkvUNGcDENcWPBREOp6OirQZg1/d2WcRUF12QkRkUsGiJgQjk8H/fEAmCp5ccXW0FB8lQoiV+CSTbxDMqP2LUv1Vi+GIHbyY4FTE30g==; 31:BcfQieuztUGuEDp5GgaTutf8kkqSCHCLgXcm4ooTORAzzRbNizyIztHOd1n/3VVR6D7tnk4x2Wd52xYUGnGGMxnVzQYYWFQ92qgweztQLDxhd+CiCVIWKDdmHkVnBSSk7n+7TTTWYryj1AVbsl3MojrBzR9AdDY2wlPNR1rKIVMCPVK+OCuqcy3H65oQ8hZX4dloQcpEZwQbKBFKcmGPetkPF6DIm809dSgaV9Q97mg= X-MS-TrafficTypeDiagnostic: MWHPR07MB3103: X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3103; 20:lSde3NSb/q12jk/cNKTWQBFnnkxu83LPQ3LqX9i9BVpeRNXmgthZqDxd6pJ+7BzaEu7EErMfHc9mkvOLveiyamp1Zo0ZyPKyo5S0vDns4C0YfeYdNaLpnWNjqmhqjr8hj7Ebu0O96Urt8AlhjmXB9jzkzUqKqQ2LuBSjVtIvob0ioeJxILaqgh9wqC/nPClKKxGaF0sviKN8YbBERqDv0IHa6OQZw4PSQeFC02d1mtAWdWLOHB+7BYYfcsr5igkD8CNQpUbhvd4TrPcC151MIWcAPWX6jQKJmPVDvm7gEFiv5LY/OpzH3umJxONkClhGCkfQvk3x3zCT69OTG/wqSbJvf1x54LdrwQA6ZkcK9ZXTEMjVUToQOo1EqkPDQGBYLRv/sAQ7h4JPmOtlOAe5aGleB6jT4RyzpqOyKKJGW62GLIWifOX/Hdnh4xPkWTzAw99a/S6RJLTzUpptJBWtjit1fJtLJO4JM5/gXGTrkWtUpr4pcqQJ4/i417x/8+uZNgIGwfB8Zp96AYzNvuLaRP9lf0R9tT99wDddLkeM58W9V0nVoz01zhzOWZQYOLwsjlhyyceKH6xv8wHWndiN3ZyId/BMlk6o28xBw7v2ZEU=; 4:sUqgr85ciCnWcR/V5lppAJlHI8PEG8ZoASrQYUPKN/BZSxCyJljNyxjdObJtX2MpUZFXMybWtSGzroH/8ALXyvMM+iLDOtoTxHWh1b5Ckj8wiRqyt6tHzvfxODcCOTKFcJGMXDiqulsAEqNiCpIgPWBHqilnI3HI8uulEJqgbBxk92IQ7ysBzfI/fLuhh1oliUu39N+Jz5/tii+FHtuzB/quW9fTc+gitLuWpq6cdC6XBgEgZVnvCIZxA4IKV/HJ 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)(2401047)(5005006)(8121501046)(3002001)(100000703101)(100105400095)(93006095)(10201501046)(6041248)(20161123562025)(20161123560025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR07MB3103; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR07MB3103; X-Forefront-PRVS: 0454444834 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(376002)(346002)(189002)(199003)(3846002)(16526018)(1076002)(6512007)(2950100002)(33646002)(478600001)(97736004)(107886003)(50466002)(25786009)(106356001)(8936002)(48376002)(36756003)(4326008)(5660300001)(50226002)(105586002)(305945005)(5009440100003)(16586007)(6666003)(189998001)(72206003)(66066001)(76176999)(81156014)(6486002)(5003940100001)(8656003)(68736007)(47776003)(316002)(53936002)(7736002)(81166006)(50986999)(2906002)(42882006)(6116002)(8676002)(101416001)(6506006)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3103; 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; MWHPR07MB3103; 23:Co8plgKiUwsZHEKdznz/LHsqZvC11Rg7BwvIfRbhF?= fJGDXTCFw8a/brL+zkDGcvzHJBd4a9YUK1fm0bB3jWDRAyPibdNcBvVMfzw8MbjEnwTWpPJDZWmrkqpXcjinWrWynUJQh8dXHIlaD2cy0OXxBcFj2WKJYADfdhGFS1aPZt8S0TuL0+/qOykHsATRUEBwKe/ElkBwHRN/e4CSu1MZqvMb2GLj23+G/l1nD0zTjDGkvabbISphYW270YfFIDzuwXE+JTQyV0NMzodRDfk1RImhygJq4mLFQCB/jy2gp48UC4Rkbdg3DKCjKhNk1txbFiC6nf/tkYAHGqgQa4q72w1ffhAtoxE9/BfWg57YL4unOSU7RINLFXOPk3Sj3HnZJni8qGjMex3MdBj/oBPn4zzQ9EuiwSVbyN15zlWfwa6NuNABbSoXRmiE5I5cP/LDUui0MXYNL2R2d5kY1LvotUNXh/hEcUnvrDsigNN4zIrVMtmume1NPKN2hkdoW854Zi6nQc+NStuIJR0CsUoHpo1Z2cICVh8RyPMdL4JaCBam+lg0jOiZ3wnrXBEEHC6fgb5L4YR2uueeMm+IayluhiEsG/+pwVYEdnyE3q1GFueN1J2sAOyLWaJ6//5KtJ0/kX+4clYwG757XfnQJwZnXBipkR+LjEL/03toPyBj1ZZLx60uNOyFNUIaibHaROEmzTOqRyatme4hlsTo1eODRPQJBVZjndBvXrWBONTzUrsKFPYlrQDjJ56iKODvrl8+qfF/dS9R7WXhC9Pm7pg3JabbB5zaBrc9VSmHd8eK/0c1VvQQ+EKUtIqQUmWBHcWBfaLhpeKg0y9WKXpInjumAvDuhd2EOtrQZSp/w+RySlACYWDPuYrqvmGXqYau25O+Kj60gbHFoVUiytQMDTV8RAGi42PeOa30sPF8btSZNUhf3e8J/ot+SUk9e8EHH730in+SPsMy7F3GnFgniiDLHSMJk9Z9ZFxUpcJQKXc4FOPLEmMO8b82VmswLoJ9UtewjUr34g6+om7XmeRfrpXOvO+oSjMQvl5W+GMNvJStiDoJLmNQQDb3OSul1Ds2NVlveuKV+V7K9bopB3NPM3CO0GS0IPlWoxh/DH73hC7l3X3d43yCLCM+9eissjRPSRR4aVAHQsqYsqsHD+DL+KUmDytqrBT3soBKTjk0vFBnaV2rTvxv3h3i9ITWQYgu3vs X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3103; 6:KyoLfS9FjhZf6tZQoPhZWbcgIA5JkVTiZ30ISNvs3t5ZZYFnOHwWBUZbvgE9znXpPVuI43V071u9TGxz1X4feI4pa9hZHqqflC2ADKU4wNBkiYcMMKb1XUzGA23KvfLRlWweSrZHPrfopPM/8jkepRWzAuWSESB/wzUP1ljXETtydH6jvgqfP1yP7yXdKBjz7BYW6qjii02/vGfQsL7lf0PPWdeIbS2NlIndSgpnDIvbion9m6NcUCH2wOlScDDRxeZT1MaFJ9q+MSbTbUbxhExwmRjqXFHGTAU1uX4uOiDNTanVo18YZnZTcrdtOsDCeDFyAqFNXRxjaN28bT5iow==; 5:gezebegd8TZpa5GcNACjfoqgmLr+z/gndj3n/l1+BBc/JeeyKs+5SF+DxBPMO2ikdZ+WDCctdQNaj1HKlb1edXzFOdmLeACkOImmXmGqKgvLgEaNaI790DHT0OswKOzCIbPrEI5IHmSZ133/8+Vztg==; 24:YJezDHr1OsXbfxrY4Oyb6N1Cw2eM1j0SlKY4HbV+tWME+VJGNk7LbosWihmRejDj4DWesMe2dWa+gbzeVX5qE9ujpZEYRrnfmw+jkWQouIU=; 7:IKg6pSla/dm+H2RpSaZEoEHRMvcx/Y5d8fDIoyZ5XOD32Ie7MuLIerLnmMQAUQKzaVmUF1jy/Bh608b/isBsSl+vWgTiFHCJwm0D7uR+UX5UUBPSKFGMxtj9+kYpAniqwmIKuEEHXqFCUt9sv9wSbNytYrdlvb24B8Ur+ewg973aCDdbnLWlVaNjYyIeU2FTkjWEgI52X9iPRwJyK7I+TNgRYK3Vyy8rTfj8eNo/fTw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2017 12:41:10.8710 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3103 Subject: [dpdk-dev] [PATCH v3 06/10] mempool/octeontx: add support for 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob --- 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 6ac4b7dc0..10264a6bf 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, .register_memory_area = NULL,