From patchwork Fri Jun 17 13:29:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 13964 X-Patchwork-Delegate: bruce.richardson@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 08F5ACF5D; Fri, 17 Jun 2016 15:30:47 +0200 (CEST) Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1bon0061.outbound.protection.outlook.com [157.56.111.61]) by dpdk.org (Postfix) with ESMTP id 3C9ACCFFF for ; Fri, 17 Jun 2016 15:30:45 +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=O6Ix1MZL977q2zO1EU4KnA8TVGckDwbVJXLEQccKxXQ=; b=Ng6QtaV1jSS3BSUj1LdyBMphH+8fBDUVy7lIq0eKZHXPck8PMurt/l9bivUmX8mtbOjasMH2aQRTKB8tL6LrnY9Shm7WokNpjEObhMwPsi+yQeESKSADiqd1TS35dE6/Y46PtIDXJvxD8Qh3QitLPqMtOp13qK1VD8IAE46A+qA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.localdomain.localdomain (171.48.17.70) by BN3PR0701MB1718.namprd07.prod.outlook.com (10.163.39.17) with Microsoft SMTP Server (TLS) id 15.1.517.8; Fri, 17 Jun 2016 13:30:39 +0000 From: Jerin Jacob To: CC: , , , Jerin Jacob , Maciej Czekaj , Kamil Rytarowski , Zyta Szpak , Slawomir Rosek , Radoslaw Biernacki Date: Fri, 17 Jun 2016 18:59:30 +0530 Message-ID: <1466170194-28393-4-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1466170194-28393-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1465931200-23912-1-git-send-email-jerin.jacob@caviumnetworks.com> <1466170194-28393-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [171.48.17.70] X-ClientProxiedBy: BM1PR01CA0028.INDPRD01.PROD.OUTLOOK.COM (10.163.198.163) To BN3PR0701MB1718.namprd07.prod.outlook.com (10.163.39.17) X-MS-Office365-Filtering-Correlation-Id: d5de8836-9267-4565-5018-08d396b39565 X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1718; 2:nuvEUv9fxhN//6KuMPh51Zck32iPs/mIrovmLbEEti29ABWlIudiir0+iFN+VMrL+haMo/wbZ6y6F+F55/EXd3q0hqOTv4osaouocg5TZxyJzKSPQ0yupW8OGw3Et/Mp4eWscPNo2UaCf++5Yey3ONnacMnumN4UzEUqQVIUx4zBlWgC27ffMoQT/Lbp8Upx; 3:6Npy+LKTBF398zL1OhmkbUwCq52UBXloAawhLmJs+P1NvS4izULuYN20+e2Gy2d8sALK63Cs6/HSMrbBUEe6yOqq9KYJhn6MmAZLKuJa92opA4bYQXTe5ORUdRCXvCWO; 25:YQu68MeOT7TlzNyGcvMPMdXj9Lz2WO1/miXQGZs7aj2FR8vu8NaBhF2kHNMtIU6IVSdiNxzk3gZoFSmIJTU+jou2M4RskpJBcaV0fhcCYrJRJOlcibAI5CsJ7kDPuPw26Lglt3gcpzm0uRo49CNALQy79/O9pg/ZK+1Qctk9mDPNqOa8sh44hEMgsLzkGDWuI/zv+HACDikE6A5GXwB+TYEuOQBwnmu7aDASOuGm0cFVHRXuIt+m8V5Ci/UUycCZkzhy5yYDsdEQ9sBGaU0Wym8oGc75pEYpROMmyVHtoaveZ00zD7WqU2Q3rfiH8UZcG+yQxlUnc7E1zgbTL26dmX0r8+VgrBadcQd53EqB0K2vXnhe8V5P7N918zf5wRznNAw9/NAcDKOUE1vTOhyS8XHx3uhD4+cA3mFUW7FeZNg= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0701MB1718; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1718; 20:BvKkyY32oovaKZGJaTPjCDGAob1LYNNnwBIJ8vtCpsN+D2DYs9iJ+CX1kIU3ynGxlaZ9VOStNXuLyftND0coBiwDt811K97rkUO3hIG19jsA0yHd24elAw2dJXphLblcWtiWsCaYcaDvBNNeNn98qlur4e6lE5Za+A0da1wj4zU+4OmNEOEneoWpmioWQg8hITggtXVNkepCZEcFIGiDCASEU9eFwUZmrl71YQOkJwePOZYCnVGFY8d/ZiCUfUkG/p9tEfhmnXSbguKxrvHBRN3WAs/sLPjCB0Yofcf4Yk3lMb8n2y9roLpvQMs/CsS3tBBSWvP6LmmuHI2LbIMpHJS4BILuUWz+vikXvDAAvNYT61TrhcSNB67OcMyrxibVBXA649BGIFqS4Sw+fjqH+wcrwub009JIvp0bvi14wxslvgb71sdPYurRzXuFAMdvGVldP1Pu0o/YKTCX8+LsbaaP+v5HPjjoloKTAOyGXPd8Vjkqhhe9/JJ+usLeQiS0z9ojOCgihOwYB1vRqbM1alECUBnRidC3fmN1Z4TQQsNT3sqwr6VZ2BcN3zqar1qXxeTddlxFInWynkx3o7rx2JWusUYh2ucNW3Vl928EWfA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046); SRVR:BN3PR0701MB1718; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0701MB1718; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1718; 4:OCW5gnHXQxOQ9txrsu5PH/iQVQtX5gi8/RH/bwjdm8jAyIoVmguf1dXpfeLeR/RCFU/heIN/JFsDJwMbTpFjxqHY3D7Ja52wpBhx/ADtb/xbYGFiK9QQImXnmq9EJNb4b4Agi8iluunl2gjX9JHxCh89pB5xPE8eeuoAen/5/q33FJ0ld5YqybRrlCiOva625fdaQyMOLLIo8sYd1Hz6b3OR2uG/rA1fwl4zZjByYfQJj1sPtwAo+53utUrad7XNNbtDPLrd5jiR6gyTeC55BNK0wHo90SSDgoh6+kLEb9oTI0m6IlvvkdwCtW0Ejjn5A+GFy7Qhrbimn6Jpkrgjig1lo+OcVFAW56VQmM2/Juu5+cIIpEtRHj7mqhQB7J2c X-Forefront-PRVS: 09760A0505 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(199003)(189002)(48376002)(19580395003)(68736007)(2351001)(47776003)(229853001)(97736004)(19580405001)(586003)(50986999)(110136002)(36756003)(3846002)(66066001)(92566002)(105586002)(189998001)(76176999)(33646002)(42186005)(81156014)(5004730100002)(101416001)(50466002)(2950100001)(5003940100001)(4326007)(5008740100001)(50226002)(2906002)(6116002)(77096005)(81166006)(8676002)(106356001)(473944003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0701MB1718; H:localhost.localdomain.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; CAT:NONE; LANG:en; CAT:NONE; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR0701MB1718; 23:sdCgCv+pe0kGRWShg8uO7FN8igZi65FLu/zU7N9?= =?us-ascii?Q?BqoLqcllgjt+hONgSy1cSf8Mm9/ljfVe1E65AVicFhlbX1DcQJENQo+FWgWi?= =?us-ascii?Q?3Xj+unyNHoYsWRfYNujJgxPYDM6aOQHPhGoMZSFoCDiAA7Qv7vBm+C+fDW0G?= =?us-ascii?Q?kteR0TRh2RnhmqaCKYmyvObrh22OQX40lgWbm1Myo4mgt+KBprNVsa3tQ+lf?= =?us-ascii?Q?Cb22qyzd24GWamedBfG5Fv0AHBDX0QI1Pm8VRUl6OaVtbY6aT8usUFemtYnx?= =?us-ascii?Q?DXUFvohv+tUuLAlLYgNpFq5YKbayJiPXZXB2nPWG500GLMdLYZPrrhh+xKSi?= =?us-ascii?Q?s9NhDJEMKNKsNoqX4d6ajOb+OjeoJYnJXePMBun+JJuH6GGJPtlXFvIZBihW?= =?us-ascii?Q?CPuQ7qv02fCmGnIvx7o4G26FeO/Iwi2yobz9VmnIXglYrKACj2a5YaZS7Hio?= =?us-ascii?Q?FaZ9oDKMmA0eslaS8/3pvy6egFOCFeiV35L+ERC5MLRL1xZ6Atj5TFDl4hXO?= =?us-ascii?Q?vX70tEAJ14a5SGtoaUGP8hAS7495llKzIkuVHGcOjaw5MX2BaIzSeUpcq2j8?= =?us-ascii?Q?o/qqxBI3Ni5PjWuFQsa/L1HL/qwMQoltWJtSS2j6SHTj0WNIzqoA0c4ZerQn?= =?us-ascii?Q?6YK7iYgrVZPHKaB4gZAq9LKiFb1pnPlhYYYyOZ7BzCV6PLknMNWHksfnvx1c?= =?us-ascii?Q?JLtd1tujrsscATCt4QH9zplHgv7KlIEjEDJTFrF5kmxfaubicR3tA2ZD7/PC?= =?us-ascii?Q?hWucCEbwoH3oLJLgAcdFls7JmjZ+Mt0+CkddEEBb+o2/F6J4nPPK459vOUKr?= =?us-ascii?Q?kZxTb3czsfma95YskBXlQgMhRHjAgN66zPJX1OvBGAc1HjuKcrNpEOfT8FGr?= =?us-ascii?Q?0P5sLyZAcpcxQHSBGI6Detoxa9dtPf8189xLrHrdkwZ2sQOAilub8cAtnZz9?= =?us-ascii?Q?i052Lw11D2v8qKWbWaJgMqruWooqSVQEmVFnWddMtXXubM9LIj5yQk7iZFHp?= =?us-ascii?Q?4VRjEhrFfCM6fMk6i4FKHcQYi+bTc5o+2465tepgzdYVxawUniH1xoWqq7Ee?= =?us-ascii?Q?jqtsx0hiS1PoWT+CGS7KKAGbfDu86HKbfLVDaG0Aydih7P9JkFw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1718; 6:SWuPMwWeKYb9ykWRVM7AfUXDo8m1frvO7K/BqCVXsmVmzq6q+xgbC7VPLnFw2kBHMK2495x1dVA+pN1FDD7tCpFkR8UzvRGFjaqKKS6gKvX7YBggDvvHaIwrCoH7HU/nhelbM9n+uwU3lj5b/1aLk+CgLYQPi8yz1WyoFLLapr26tzIxrkzoobPGkUYRLaR5xXe0GezV+jDWTFHdZiWl+gggPY1fKTU+B0zTkn2rnDAWO+5QYrkzJRRES9YmyS3n7/hw8+JlOHUckzAujDO/AwIOjmzGO55iv60IMWYq5R0=; 5:FtIDx/lmNN1tjPVCHeIOR6wMdwiczWNDCkQCKSJCGkLd37/uPbn90KN/AXnrHRC+0fh3UPy3SHV37vHRBLD3AbdOOHGI/7cmqOCFTa08glbRebX4O2TqV6Z8XAFsQCtLJxCBvaR45jFjujE0fUzLMQ==; 24:1RyiRLan9gBtJwNpfCvFdtSHjCxg34XVWPG4FLY+53xEDLXyjjNkgGW+UMt5lUN31648xyXVrRAXMRQuYuOZlom202Nj3cNB3V4vdcwrr+c=; 7:zTatpxBKTQwZsTTc71EK7giP1LE/OL3dK/vR5vpoOQpns6/xYKNu94fIG+rI46nBTtLroL9ryM0b0OGkd204bYr10PRUkOWvVCx1C7ZXyTydKzNMe3b7UQ7ZcGTzizcjqKdis/918/Nvv4BWY6QtXIuJNFxLJQ+oo8KBjvnUzuhfKCvLmY7GWmiU8AOsjA62Sok5YkeF9ufaR4yLBtemIA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jun 2016 13:30:39.9752 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0701MB1718 Subject: [dpdk-dev] [PATCH v6 03/27] net/thunderx/base: implement DPDK based platform abstraction X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" implement DPDK based platform abstraction for base code Signed-off-by: Jerin Jacob Signed-off-by: Maciej Czekaj Signed-off-by: Kamil Rytarowski Signed-off-by: Zyta Szpak Signed-off-by: Slawomir Rosek Signed-off-by: Radoslaw Biernacki --- drivers/net/thunderx/base/nicvf_plat.h | 129 +++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 drivers/net/thunderx/base/nicvf_plat.h diff --git a/drivers/net/thunderx/base/nicvf_plat.h b/drivers/net/thunderx/base/nicvf_plat.h new file mode 100644 index 0000000..33fef08 --- /dev/null +++ b/drivers/net/thunderx/base/nicvf_plat.h @@ -0,0 +1,129 @@ +/* + * BSD LICENSE + * + * Copyright (C) Cavium networks Ltd. 2016. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Cavium networks nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _THUNDERX_NICVF_H +#define _THUNDERX_NICVF_H + +/* Platform/OS/arch specific abstractions */ + +/* log */ +#include +#include "../nicvf_logs.h" + +#define nicvf_log_error(s, ...) PMD_DRV_LOG(ERR, s, ##__VA_ARGS__) + +#define nicvf_log_debug(s, ...) PMD_DRV_LOG(DEBUG, s, ##__VA_ARGS__) + +#define nicvf_mbox_log(s, ...) PMD_MBOX_LOG(DEBUG, s, ##__VA_ARGS__) + +#define nicvf_log(s, ...) fprintf(stderr, s, ##__VA_ARGS__) + +/* delay */ +#include +#define nicvf_delay_us(x) rte_delay_us(x) + +/* barrier */ +#include +#define nicvf_smp_wmb() rte_smp_wmb() +#define nicvf_smp_rmb() rte_smp_rmb() + +/* utils */ +#include +#define nicvf_min(x, y) RTE_MIN(x, y) + +/* byte order */ +#include +#define nicvf_cpu_to_be_64(x) rte_cpu_to_be_64(x) +#define nicvf_be_to_cpu_64(x) rte_be_to_cpu_64(x) + +/* Constants */ +#include +#define NICVF_MAC_ADDR_SIZE ETHER_ADDR_LEN + +/* ARM64 specific functions */ +#if defined(RTE_ARCH_ARM64) +#define nicvf_prefetch_store_keep(_ptr) ({\ + asm volatile("prfm pstl1keep, %a0\n" : : "p" (_ptr)); }) + +static inline void __attribute__((always_inline)) +nicvf_addr_write(uintptr_t addr, uint64_t val) +{ + asm volatile( + "str %x[val], [%x[addr]]" + : + : [val] "r" (val), [addr] "r" (addr)); +} + +static inline uint64_t __attribute__((always_inline)) +nicvf_addr_read(uintptr_t addr) +{ + uint64_t val; + + asm volatile( + "ldr %x[val], [%x[addr]]" + : [val] "=r" (val) + : [addr] "r" (addr)); + return val; +} + +#define NICVF_LOAD_PAIR(reg1, reg2, addr) ({ \ + asm volatile( \ + "ldp %x[x1], %x[x0], [%x[p1]]" \ + : [x1]"=r"(reg1), [x0]"=r"(reg2)\ + : [p1]"r"(addr) \ + ); }) + +#else /* non optimized functions for building on non arm64 arch */ + +#define nicvf_prefetch_store_keep(_ptr) do {} while (0) + +static inline void __attribute__((always_inline)) +nicvf_addr_write(uintptr_t addr, uint64_t val) +{ + *(volatile uint64_t *)addr = val; +} + +static inline uint64_t __attribute__((always_inline)) +nicvf_addr_read(uintptr_t addr) +{ + return *(volatile uint64_t *)addr; +} + +#define NICVF_LOAD_PAIR(reg1, reg2, addr) \ +do { \ + reg1 = nicvf_addr_read((uintptr_t)addr); \ + reg2 = nicvf_addr_read((uintptr_t)addr + 8); \ +} while (0) + +#endif + +#endif /* _THUNDERX_NICVF_H */