From patchwork Tue Jan 17 07:14:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 19525 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 644752BB9; Tue, 17 Jan 2017 08:16:39 +0100 (CET) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0050.outbound.protection.outlook.com [104.47.42.50]) by dpdk.org (Postfix) with ESMTP id 32D41F614 for ; Tue, 17 Jan 2017 08:16:37 +0100 (CET) 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=fA98RHqiLOA6sYewIk/wXtmNjxazG/S1ppPNsdvd354=; b=Zvl/okV0gFZwo/7X0Z7IXIrTuWy45Rsv/c0zFuqFq+Nv/NxOgB9/qoKU84FIhzQeaqHPKsjSweQ6qe1MvfhTiU3/SvO8nrJWzsKbZKy1P8e7JkfGjIvPQn9VLkShDVlkKdVldjPN3kmeM81BZh2kLAZa5hy+ZZCS1wCM1FVESHY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.caveonetworks.com (111.93.218.67) by BY1PR0701MB1724.namprd07.prod.outlook.com (10.162.111.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Tue, 17 Jan 2017 07:16:31 +0000 From: Jerin Jacob To: CC: , , , , , , Harish Patil , Rasesh Mody , Jerin Jacob Date: Tue, 17 Jan 2017 12:44:01 +0530 Message-ID: <1484637244-7548-27-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1484637244-7548-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1484212646-10338-1-git-send-email-jerin.jacob@caviumnetworks.com> <1484637244-7548-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: PN1PR01CA0030.INDPRD01.PROD.OUTLOOK.COM (10.164.137.37) To BY1PR0701MB1724.namprd07.prod.outlook.com (10.162.111.143) X-MS-Office365-Filtering-Correlation-Id: 6124c56c-3ff9-4c3b-d6ff-08d43ea8c4e0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY1PR0701MB1724; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 3:Koazng09Yo5wZq0Slq+Uduytt0XR6x6ibthWh7cGxelGK2TFTDcO9RC88og+wz9EyMn0ot3It5qtzkj4PoNZaagH9ujnNRLXEPPLChrzJld0GltHskhcZzXdFnGEFkvTlU8Ubxlc76ZrkkVuCHX8FnWsezA/QWafQFI+5whj/dYKTn4HkyM74lHLw7eXo+gZPl2BMSD6KFruZvajsVYqFJ8K4eS2X+dtZYILcCZ6uTAGQ/MVNzXjW45wukwyVBrzYyKpBfafXdk2Cry3WS7Ceg==; 25:IzLPgKf4mKmGsg9lLRHXSYeEY87hWnPUX1ERCHg7ft/qrUL8fiSq27q1lXB4j87hJjd17WsX7JWrMQBuZPIdFCbHiNhJ6dIpB9Mp8FPByqTXEgRJLZ04gA8eWqQ5157ESszELY72huS2lkFPogom1G3XT37SmbJosTGw1n+9AwnEwZVn/T5KJ76USYxif4LiU+6wMcwZ1QIKlW74gL9Z7MmHnTb4cAID2bLeyUrX5d+8saU3qw4KBcKjdNyo13FNnBL/WOZGGwUnEQNVKqiahbcIthveM5RSGoRtKkv9pqe6OW0p5et2kqiQb5KDosrtnAOi9RmW34vUXcbhWuaxewxwl0jv51mMZgU8nFR8gJSuJUFScPWJTbN6vnLfIggakSFZ6EyXLBp5VsNlmFH4m9AzTureBd9fa21Zje6BPZBLEjToQoopIo443ShDTjK6Pd7Zwh18yB/qsgMPJPY1kw== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 31:izOXPiCLRtybJELw7v4pv6JF7yXHN+wcdxq153W7Hxc86oM3kNKj9N757OOPvrnEWEkGHlam+bM7CUDtCVwQPhS6ahGmI92YCy8ICOFCP7H0TG1ZJ50clBDDCRenYkRABu18gyU58p5S2DZEog7vKuhXczo6vEVfCY/FT/sItyZhbZn6L0RXrJVnr4PIanEggR3Fb0pnT8jI/Sw+dPAn6qo4V3U73Ygd1pOEoTqEhapu4ZuImU4XPZ2mXM9ynAfaCIh5ZAMO3UOyVdGchj0DwA==; 20:updcpyoA5Z7zJoFxkDjjCoR1ImN5j/UhFh/0cHs/wImjYBpQmbMiR3Crf3V2BcKLo0LynRelKcAxE4KyorTDew4+bQ6aZiddEy3u0OTqsB4vY2PvVXGgBfjlSph4Nh+xyw+Ufy/JNMgWYAzxUWhyFjtDc4xJiDExLdEaIb/awIAOLrXhAm9/2EPbEohtCgM5RNwwMyvyZrkdC9CvOZWOfvQeuhOGQgcOPtMwVcBYyKnZzE379GtHXkOuTa2rgZ2OA+LpAFDalUe8dhvSOGGMW2FxPilkBmC6a90E+KjRoP/747Gu4SKMiaGobIUFyI4tmkcg8Zni5ZN+sk+s0VJCid4W8EWcrxsy10x4y05CSm1eHfI2oIAqLK/6UZn9XYfxcGFjzXlJxT0qVvjhrQq5ha2AJ5u3v3oYF1H9tgGnX7eqwg0PUGTAPZW5O7cLi1KIMR/yTGbRG2GmwFQ8CEnHhXpz4XcLHFp/KC92KATsxV0iNI/AYpnp6HHl61YcRccOHpC/G88jososZIXumzxMND7VODv54TXoRjs4XQTtjiXCezYvz0zCh3jfoomu85qO/q4g3OBeiw7Lc0REZnn/ucMtqt1g5dX9b2zAfq5HFJQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123562025)(20161123555025)(20161123564025)(20161123560025)(6072148); SRVR:BY1PR0701MB1724; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0701MB1724; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 4:3Evc2bH5duEd1hZrws/5fUWUkX/uBDjEQSNRlZJSM/Fqb+x2zTIZOzsIn2NE+zAT9FQVrTX83vAqTiU7uqRGtd4r03Ji6YuKnLrMaw4nSzAFJCNcuZh41yrM/E41eItwwvuCt6dT2axbO6aMkkC0gS50a65LJvIQ7nQih4ptTcmqKihc2draJEtOmV1E4/rdA32c9oi1c64gFrZ9EIbK+amdN5T1fHIVU3jEem07EdvZFdUcgQ4e7NqsOXw29/nfNE2pDENVNRSXclp9ImK3uwNOMxuDNmF2YCdeqwfqrhE2o4hudoRVj55gB/sXyIKvofW5uCuxvxoRtcQp0fjMQMlQpSbzgDd7JgqCHbznw1uUt872KQ3pDrWnqcSqC8xaZ8j5DXtGjDf0GWEnKrepkL4OMptwNbGRqXDjUXkwmTNwr7m1/5yvgWC+xMYEdLIBxkXIR+XrrXX8AKe/tF1daBViyzZfQ/SKRgqMi4NqpDmyp1y0Qd8ZMOAKMoqiY+P89Uc0prdvtHesRa98HSVRPjCc5HECQDrqTOU4NxRQEa8YeAfIXbyyRX60SJUYdtX+FLMwFGNwUfRnQaobp1S/CxhSjSlHSdZwiKRQc642x88= X-Forefront-PRVS: 01901B3451 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(979002)(6069001)(6009001)(7916002)(39450400003)(199003)(189002)(2906002)(4326007)(76506005)(107886002)(53416004)(189998001)(92566002)(106356001)(38730400001)(575784001)(47776003)(25786008)(6486002)(54906002)(66066001)(6506006)(305945005)(7736002)(6512007)(5009440100003)(81156014)(3846002)(50226002)(5003940100001)(68736007)(4001430100002)(6116002)(76176999)(50986999)(2351001)(97736004)(81166006)(5660300001)(8676002)(105586002)(69596002)(42186005)(48376002)(6666003)(36756003)(33646002)(101416001)(2950100002)(6916009)(110136003)(50466002)(42882006)(30001)(7099028)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0701MB1724; H:localhost.caveonetworks.com; 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; BY1PR0701MB1724; 23:9kgK2REXFXJ8xqV9kWQrFpR0l/bZXnHlDFlBDBC?= W6YT6/CKjHZAaYNU8bCkppBThM2wqpUKJulvwKNCM9Vm9AteEoHtv5MG9S6h8FAjSGe35fmqKY/zSq5nlA67hAseC8eRnK0r1O1YxEwj7mY+3DkvTfyVyzKRohpeDvhKosN2OJtpv4WOcPRbBbznYKbJIzqfHPHZA1rO4wW29MRA5IoiwoZz4J5l74oPO8EhDtnyQRrhUer0NBdOvAtU6QL13DNv1VqV0Wu7ZFNMc12yu+SS7jFKu26LvBsNSjfWm+733tKA1YaZU1G9rh78rId8Qw4xJi+X9WeJawIoAcuAfgZXiodmvyoqzpuH3AOntb2qkyL5/N4+uO0cLjMrE98hH9FhTR2gkCTAU9SjPl0qxDVEGJdSKDEWnEXoH1n1VJJ9vFy0szasqVIkHddM0vAGyadpKoIIzSXof+tslf46THxedsr53hGOLdzl/Ewp288ckalFl/Ao+J4mJqjNqYF+XTSJYqGUtFFeFuCoR4tmMLSwVR/Xrw7I3nCRIljiOZlH4HgLNJPvruBvo8y7+9S76TZJNniDQeTg8hCrmXJaAxDbnjBDJA+lJVU1XZX94UoJBBe7LLGRcpVj3Kw3oK1qg+5O0Xim3jBD89dn+AaN25WXpRydpClBSAND12WuYQ+5AVLQ3AsKKol9OPpzmjsb5SgOCL3Qggjx66P/GflLTYE/Mxa1PoAFDzdJZ9CSxRWUZC5Dc+cUvfnw6i/tvkF/WbatzFaiOaMbCCy1gbMWu3FS6aSvG14evqmV6Qu28vm4btpTIhq5PVGaK1chHu8RLKIPEBdQdTIzRat5shJ3lomxJTDwTkSm3a5xIPzcIzX91Za1uHHoLP4DfRTeYUZP3fNKPnpfyyTSj6dzvVcN7vw3+ZQML4v8D2B9G2WtyX+aN35vXH+Tf9sXUVeCqJZLDB6rJ8j3kbg7pA3FNULyqt3yqrEzd+RVW+xqJwAfTr+cD7rSqy7AC3vJujXaTIvQlaSTx8lQSYGwoc2QAYyzTcKkwbwiSFz9nUR8VG8IhB0zR2PN3XcFFps8BquV4vWY8GWYiv1zVmftBz+syDxdSwZ3x9mxEK+cXIi00z/CFsU62N0OwNhB/y3exIiwnB8T55uFxENtz1yl1xUbBwUNVb49ObYZ8UMV+XSlcW5ZUaaxQg7HwdVPOuVq6bAHOxxpZRdHuXiSCdH2Infz1Gis4BQYOrzQLS1tw1rXGjqKQRqpHazESqpNI2pzGuAQBkxttfwffqi7UltDP9CYfzUMOTGe/8A3iUDSww3ifMdlcoAexYblRRw5DjlPVZFMdt07yYUJgtRoB1Aqd1NxCCa0O91hQsNMvz8XuoaiWeRqGv6zlI429UhOC+ssna2Twhy5cZ6xVYDI7KKDUqcIWtO16Lb/BK4uBla3QDXTyt2M2Hv4= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 6:31W0/v29k+U5uXz4OTJkxJsID0h/XYPtqt2raDr0RklSJKzVQLv8kIXLLOqcU2vO6HV/8WiA23/3CdtW70lClgEJoL7CeBGhT6m5Z24bvDvGJM7nanowobgU6/9y1OvvHGmdTUBltsLgpjNBEQONJZ9Eu+F8zPLWRX7uTrUUJAOvgSw7HkkIIh6B8iKJfyIGj9B+7tc4FiqrFbCmhJiaiON/6TJwbx8gGsc8pYcjZLCYiuWcL4lgvhNe8/9Ql9TFje9x2nbk7Q/ylebgXy455PlWOplhBgyXCYKIEw4imwRLEAdqn4dgpmKDvQmkHi+RTp3T9P04doUerUXilGr2dKzrPEn3TgYc3HHMGdi91gbQsRvZpTG5eJUvaF60k0+Ui47g4YCpWqcmeP+7wMYoEowUn/RUftv6V3Fss+rRdAg=; 5:iDDrVqIv9wpPONrdpswbaYeH1J0hWpN41X/26qnbCExL9WwcHfL0qaFtBBu2W2MVOQw+s6BB6J/5WMek6V+w9mi1x94h80/wm3ufnN4ImIUjAfnXARxRy2pk2ZpTt3Rx89mmJIiZSJGHopxCKdc/+w==; 24:DSE+p3ONkBjvPu49IkbdCp1eRRwqBG2MYhmIKnNMmPftxbGUI4QHfOX5VCysLkehIz8FGVOrIo4o5QS3f0eq+emxnD6ishQ12GmoYEBW47U= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1724; 7:/ZUbBvC+1wT6pm1qFJEuzOCeUXDwQ/hG0lsdJ7qRstxqbXcwxq7zyb9DoANm9mJm4GfwQrYWsrQueDRzAiNw2xvYpbp/MgKCewIxaYpSvY2y9J9/PD9PqIvjppgMt8MhfnYeYtTsNPS8Xg3Ugqcl6z3MGXU2cqKeB1hJsHeBZ3VPsVHj1uUNSA25lh53MAwsjHx/NgZ9X5ICHhtgYvwWP3ZgGuLbvtIkukM3y1vjeD4A8waHNyxBWenVp/2aVqIpQ/N3edfM8Fslek59+xzkXeobHyscBA7AdLUAiSgu0DKcQfuF6ObpLhCDuZ5iZX215IG9QcLGgWSkp6UGFj7+hz+MWhZYMnBuhvPNasCvZqDDWkIGFUqGWo63B9XQCUPy0PpY/NnN993wLcq2R4+iMM38cX6jkQmNzQPlOJwTLgCYJ+mYl9sZeDWUACp6R9UqLaormTo7T/bSFZlLMpNfxg== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2017 07:16:31.0482 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0701MB1724 Subject: [dpdk-dev] [PATCH v4 26/29] net/qede: use eal I/O device memory read/write API 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" From: Santosh Shukla Replace the raw I/O device memory read/write access with eal abstraction for I/O device memory read/write access to fix portability issues across different architectures. CC: Harish Patil CC: Rasesh Mody Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob --- drivers/net/qede/base/bcm_osal.h | 20 +++++++++++--------- drivers/net/qede/base/ecore_int_api.h | 28 +++++++++++++++++++++++----- drivers/net/qede/base/ecore_spq.c | 3 ++- drivers/net/qede/qede_rxtx.c | 2 +- 4 files changed, 37 insertions(+), 16 deletions(-) diff --git a/drivers/net/qede/base/bcm_osal.h b/drivers/net/qede/base/bcm_osal.h index 0b446f2..33d43c6 100644 --- a/drivers/net/qede/base/bcm_osal.h +++ b/drivers/net/qede/base/bcm_osal.h @@ -18,6 +18,7 @@ #include #include #include +#include /* Forward declaration */ struct ecore_dev; @@ -113,18 +114,18 @@ void *osal_dma_alloc_coherent_aligned(struct ecore_dev *, dma_addr_t *, /* HW reads/writes */ -#define DIRECT_REG_RD(_dev, _reg_addr) \ - (*((volatile u32 *) (_reg_addr))) +#define DIRECT_REG_RD(_dev, _reg_addr) rte_read32(_reg_addr) #define REG_RD(_p_hwfn, _reg_offset) \ DIRECT_REG_RD(_p_hwfn, \ ((u8 *)(uintptr_t)(_p_hwfn->regview) + (_reg_offset))) -#define DIRECT_REG_WR16(_reg_addr, _val) \ - (*((volatile u16 *)(_reg_addr)) = _val) +#define DIRECT_REG_WR16(_reg_addr, _val) rte_write16((_val), (_reg_addr)) -#define DIRECT_REG_WR(_dev, _reg_addr, _val) \ - (*((volatile u32 *)(_reg_addr)) = _val) +#define DIRECT_REG_WR(_dev, _reg_addr, _val) rte_write32((_val), (_reg_addr)) + +#define DIRECT_REG_WR_RELAXED(_dev, _reg_addr, _val) \ + rte_write32_relaxed((_val), (_reg_addr)) #define REG_WR(_p_hwfn, _reg_offset, _val) \ DIRECT_REG_WR(NULL, \ @@ -134,9 +135,10 @@ void *osal_dma_alloc_coherent_aligned(struct ecore_dev *, dma_addr_t *, DIRECT_REG_WR16(((u8 *)(uintptr_t)(_p_hwfn->regview) + \ (_reg_offset)), (u16)_val) -#define DOORBELL(_p_hwfn, _db_addr, _val) \ - DIRECT_REG_WR(_p_hwfn, \ - ((u8 *)(uintptr_t)(_p_hwfn->doorbells) + (_db_addr)), (u32)_val) +#define DOORBELL(_p_hwfn, _db_addr, _val) \ + DIRECT_REG_WR_RELAXED((_p_hwfn), \ + ((u8 *)(uintptr_t)(_p_hwfn->doorbells) + \ + (_db_addr)), (u32)_val) /* Mutexes */ diff --git a/drivers/net/qede/base/ecore_int_api.h b/drivers/net/qede/base/ecore_int_api.h index fc873e7..a0d6a43 100644 --- a/drivers/net/qede/base/ecore_int_api.h +++ b/drivers/net/qede/base/ecore_int_api.h @@ -120,19 +120,37 @@ static OSAL_INLINE void __internal_ram_wr(void *p_hwfn, } #ifdef ECORE_CONFIG_DIRECT_HWFN +static OSAL_INLINE void __internal_ram_wr_relaxed(struct ecore_hwfn *p_hwfn, + void OSAL_IOMEM * addr, + int size, u32 *data) +#else +static OSAL_INLINE void __internal_ram_wr_relaxed(void *p_hwfn, + void OSAL_IOMEM * addr, + int size, u32 *data) +#endif +{ + unsigned int i; + + for (i = 0; i < size / sizeof(*data); i++) + DIRECT_REG_WR_RELAXED(p_hwfn, &((u32 OSAL_IOMEM *)addr)[i], + data[i]); +} + +#ifdef ECORE_CONFIG_DIRECT_HWFN static OSAL_INLINE void internal_ram_wr(struct ecore_hwfn *p_hwfn, - void OSAL_IOMEM *addr, - int size, u32 *data) + void OSAL_IOMEM * addr, + int size, u32 *data) { - __internal_ram_wr(p_hwfn, addr, size, data); + __internal_ram_wr_relaxed(p_hwfn, addr, size, data); } #else static OSAL_INLINE void internal_ram_wr(void OSAL_IOMEM *addr, - int size, u32 *data) + int size, u32 *data) { - __internal_ram_wr(OSAL_NULL, addr, size, data); + __internal_ram_wr_relaxed(OSAL_NULL, addr, size, data); } #endif + #endif struct ecore_hwfn; diff --git a/drivers/net/qede/base/ecore_spq.c b/drivers/net/qede/base/ecore_spq.c index 0d744dd..6e5ce5d 100644 --- a/drivers/net/qede/base/ecore_spq.c +++ b/drivers/net/qede/base/ecore_spq.c @@ -248,7 +248,8 @@ static enum _ecore_status_t ecore_spq_hw_post(struct ecore_hwfn *p_hwfn, /* make sure the SPQE is updated before the doorbell */ OSAL_WMB(p_hwfn->p_dev); - DOORBELL(p_hwfn, DB_ADDR(p_spq->cid, DQ_DEMS_LEGACY), *(u32 *)&db); + DOORBELL(p_hwfn, DB_ADDR(p_spq->cid, DQ_DEMS_LEGACY), + *(u32 *)&db); /* make sure doorbell is rang */ OSAL_WMB(p_hwfn->p_dev); diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c index 2e181c8..e1e9956 100644 --- a/drivers/net/qede/qede_rxtx.c +++ b/drivers/net/qede/qede_rxtx.c @@ -1246,7 +1246,7 @@ qede_xmit_pkts(void *p_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) txq->tx_db.data.bd_prod = bd_prod; rte_wmb(); rte_compiler_barrier(); - DIRECT_REG_WR(edev, txq->doorbell_addr, txq->tx_db.raw); + DIRECT_REG_WR_RELAXED(edev, txq->doorbell_addr, txq->tx_db.raw); rte_wmb(); /* Check again for Tx completions */