From patchwork Tue Dec 27 09:49: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: 18585 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 2BE4BF969; Tue, 27 Dec 2016 10:52:34 +0100 (CET) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0048.outbound.protection.outlook.com [104.47.33.48]) by dpdk.org (Postfix) with ESMTP id 17451F6D2 for ; Tue, 27 Dec 2016 10:52:32 +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=IAPFvArvOKVekhLitS33TfshvZgfl1FYhLIR/FYZbPs=; b=Z59Q9U4sL/3OWZdSKoNNlziJHgbtTvxtECHC+Ntuegj13eBQCs15gDTxyg5dWjBCUn9/OnR3vvt9g7gQfNedgy4EnXMLcEV1OPQD71ed8bHY3eg9UCIZQ95Z+c+SFxr8SN4Gy7PGX6MDDGH4MWkmwSd70I35/f5dSUMkDonaVgs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.localdomain.localdomain (202.83.56.97) by BLUPR0701MB1713.namprd07.prod.outlook.com (10.163.85.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11; Tue, 27 Dec 2016 09:52:26 +0000 From: Jerin Jacob To: CC: , , , , , , Helin Zhang , Jerin Jacob Date: Tue, 27 Dec 2016 15:19:30 +0530 Message-ID: <1482832175-27199-25-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1482832175-27199-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1481680558-4003-1-git-send-email-jerin.jacob@caviumnetworks.com> <1482832175-27199-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [202.83.56.97] X-ClientProxiedBy: PN1PR01CA0001.INDPRD01.PROD.OUTLOOK.COM (10.164.137.8) To BLUPR0701MB1713.namprd07.prod.outlook.com (10.163.85.14) X-MS-Office365-Filtering-Correlation-Id: 5ca8c447-97d9-403f-5dee-08d42e3e12e0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BLUPR0701MB1713; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1713; 3:i0rtZBtY77Ny02rDcBXycaWL8V9sbRlEN68sIK2iucyNH+K81y5+SSMWxtAJst7bxuWfQFWz8IxTP1kwNeBRdm+Xkf7fxeaKuERyyKi795WR3foj3pF6F0jvMcXkAJ4CvKLvdysTjS0wS/ld4a71BveubMMUXxuAbzUBOOzzKrlLZQu+scCLdaKZe1xgoMuHRL7x3UBXy81GO6Yg/YjfOL27Ubut39JSAVpNgXnEIs0lYIlK08IRX7B/f4lPlafgFJt4Cewyh3sUyyKh2w3GHw== X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1713; 25:LWss6OHF6k+qKM8+41RoU8xLRRTKw/ER35zu/18C1y9/vq8xMtLQzOVXuUrYhgFje3sRsxe7rnJ4MdwzESnEp0h9O3Rj4Bo5IGMTRLlWDLuQHTxzfzftLtknED1N7+7NzhVbOI35P2xhiIin0Bg8t+zZrXcvyJ46LYdosXIjHKtCqOgowe+37McpqQnJqMxucfV3CL6Vq72CS4r7lGioNTFK9VdGZlTBLd5aavJBNvYV+DtOETCNRLfuuMeuCr0/eneDUc2++t2w1RjjLeGRLHfk0VOfeBDFaEC0GlpDm/9FO335sUZzF6dU18q9OQ0ebRXNaM0vX9wCF9jOQemEyMoGODMpFlIvH2DVFMHvJvPbnyXPYibURMXiFkQ9wrFA93BVG+sopPrEXIexDtoWBKZF4DkeGgXdvkompJIPkFFedhKYKhCGN/j3gWKc03pKpYhMg8p1HwBZ4FM8CKuw2WyGCbceMUfkIQ9bAhO0FMI6pjnwjzZquKiRPQnnEksPlwZGwA0eOLWDC+cvPOLg9hT36ywEs5NJSYj8yIZIJwyZnUxQUXxBJQPYFIEaZAeRGhWAFPvlyuC1JtrJidOcZ59HVDMI5tPXTxY+9mg/8z37A+3FPSiws2OknYsPoLHjGK4w7HMWicij7UIxp+vhGOvmyw0pwI5TMhVo/BQrVttp0t5D++V4ADbJiR/nZAfpcI3QwM5tH/XoJezPioJ3HytXsfmyCUzADgAM70gmzui3vscoUgpHCl0djQvkgh70phEUSE5zvXvXsXUtuu5tT/WgHwPHMbARSf8AtCGACnWDKQY+jh06wsODlr2LDU4P X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1713; 31:uZ0ZY5zlOZwieQYsrO4XVoSp2M23gPqe/CLnBkCKlD43it5b/LHvSrf1tTtExqO82CtrTArlhn0sWFRSVLPHlNOQlcPcITW2gwYIz4uNTpz1y1OH/zIOUueC/0jBplCMGJ5QJIBMbfk5D8QB7iDB16p+mpv9vfeJ9B26fcyzL6CAsMWfi7cJOZht4d67jn4NCK0eRqYid2+6UAPET975e8lvz2fCdOvWSKXwdorQ5dB10UnRll/DOqf4RW1fKB2rfMvOIlTI7a0W3lxcrSxwEtYLsD66CzLVUGFjihwAEjg=; 20:6wARhMy5pW0him6i+rpN1v8WepVNciaMoCGP+L0XzOviSqYam9PVhi66sLE9LCdgnsEisvbSmj5yBP8vyPHChD28gmCcVXT4P20A7ZuRXMFPXi0k0g7KxQQE4Wm8Pv8AhQwagx3Ez8E7ikyWIASOmbmvGi2KiR+kUfxnDCvFuLdpXYyKtwBJMVJW16dZc3PNm/DDGGdCCFDPgDf7UPvY4WUY1tnciAVBp0giIQ/ploNFs5DrXagLW+bgtT2ZaooKeyuTv4fBITW07iq4Txynn+J5dX2n4CBft4R6eN4euolt+XyX+vB1n7OW/i7/+pyKzWNtDKOICwJJJ5PYXIj2Wm353Pp0lLoUcYp8WKsVb4d4f0vV8mtED7Qmtn7rOtLeT67/yVFj7wjPFVe34SEA8Uqsph3ds+KyobKKYWzvrogP6/jfme1da6eqWzQg0bL1H2WFFBmdOTtzwlkzqZiW2v8WdZ3pdgUigN4Yg1RGKDgnFx3v8AI2Y2LZ4Y2/0zKATWzB8tNPQ268kssxuUQhagbj041mR0pfqp5E3+cN31zrT+TXbCWHpoEgtn63fWMgFB8wNDpoOO2OLzva8DHYuQJyrv+PHZ4YbSMJ/Hictx4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123555025)(20161123560025)(20161123558021)(20161123564025)(20161123562025)(6072148); SRVR:BLUPR0701MB1713; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0701MB1713; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1713; 4:D6Ba+61C4eXfmhIaKXSUzUM7FCiDnHBfrw/9db8t4jKtn/dyjWR/DF6rBZurroQESz9ouwt3rkuiIJcR9OdZ7DuqFUVBVNHrm3NZTUuTrD9MAFsVE54EDgZD3v+MEYD16gjzGgEB302mkKgqpCIxqg0+6JlYVAS1LkcbVh2B634mc/OdQelTIBF88TMXlkF0K+JPYZ9Q0VrsAhTr4OPtNL99I8L05v/FbMh8yM7h3EjNSZoCLuOvkAw9Z5ot8coPAAGGw6yt/3w/uC97bJIiHfWXJcJElZJ6k+CWhjcKZHAksbEzeCLtCgEkXbMLTvnfd67i4hTXbInEF8D8nd+2PlRxdgFlHLpwZDmyowf54f7YMxYqfwB3gz5IHQsvuGyZtVAuJPoTPIEI2tlcRXkH1oBQrxebMf9GLmMBzN+PiqcDf+X6x+JtI+TmxOUMdcApIVcNwHhuWnTFu/bpmpc+PAyhar7mJ4W32uiE50uWqKcvXKOdWkHtWHqsQWhF0I/Xf6VtQKu20hSft/9983CJVoOz0uqQM15soEGOWAiXByhDEFPipUshfyQWG9z7mukk1Wp3NGq9HRoUGz2v0zI2o4ol2pJ5hzdzY5jC60+26ykKt4CM/5RZJ9DgHLh9ZPi8Lbp1K+Sd5bxTIyLRCjs/FaVcTTzEWsRVV57nMJ2k51Foz/OJOJSR73yXk9Zck/eB X-Forefront-PRVS: 0169092318 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(39450400003)(189002)(199003)(36756003)(68736007)(106356001)(97736004)(50226002)(5660300001)(6916009)(47776003)(42882006)(2950100002)(6666003)(189998001)(25786008)(105586002)(33646002)(107886002)(48376002)(38730400001)(7736002)(92566002)(6486002)(6506006)(6512006)(110136003)(50466002)(305945005)(2351001)(50986999)(76176999)(4001430100002)(3846002)(4326007)(6116002)(5003940100001)(42186005)(81156014)(81166006)(101416001)(8676002)(2906002)(575784001)(66066001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1713; H:localhost.localdomain.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; BLUPR0701MB1713; 23:LanrHCXvOnmzPfheO/OlDuUe/R4UN9L4vpP1y4s?= /6SBIwVnhbzdvx1SmwiDqa2jBy5SuzNhtEhDp+QPLcZIQrTPxTD4QRZ7+IoMVMRQ9DMjDBkB1nf64dKlFVJAZZ/V3qElzSrJyOTUXXU8CfHJi/La5xjUV8vStTEYIJ8ITDXSvW4qO2n09/0G69DT+3Q7hh1URFAI/X8Y1CvqgqnYu+rQXGBHZBNaONsX0UKmJ4kUn1ZYugC1YpH4uNKngbu3C79CCvjXVWWqDl+KWHqAAwkkLdgtA18KIFP/X/mmJicCNUtOr6qjW1uKOCWXh8ChBPDOhGKhLCUKdO0S1hpeL06It0M8QkuisdCKaDETJD58VKcNRH4FIBUCp53v3Gb3PjHdxsbZ28SYeeegbxoy1+R7m0ds+sPFfZ6a114PIHVinxqptFhHmJbpn7Yw8UOyidnwIdkiPcs2AwetYD1x9RszuoFuC8zB20geV43csVgH/eQ1ZLwq0R+nup0WZTwvglymbNOO4Pgtc256V0Gf6W2ARrLHuMSa7rRPJbxU4T9rw4HM1WnIDjAr+X2iXTVOL3umvIGFg6cIU5wXelZLTh4c8QiW+rGFhGAmeQGvuzz8p3eW0JcA7o6zwOWCYho5wUPqzKT6Mv8sg9Yd2VDc3uhM7thJzw28yrnRK3DIdJVMPkHeg4h/icUWc8w6xVKWHKbmJ4B2qm5Mk6pi/kIhSwErxfAl39NWfASPesqai4ymrFCBaBM/o3TkyTBPu+AUNJM+7pUAWFH5yLzJaL4+2t5vm3GlPv3b+sVjmyG7FzPfXeta8yxfCTeqLiU5hSatUUk3al4HYNSFRE5Y7psGgAryz49D9DYcEXXE9gYGqHqVfJ3tt6RhFCZ0fRY1mYUt6luzYbkffoXioXyEsQpvTarrEC9ReYVTLbYdzX7UugeMYRnRvTAhRr+/cvpPAU4LCzEVcHSXr7RRS9m/sqeit5yz8k6bxHOEtE0fvgz3EHWOYNPxKQjAdIxPf2kwtUwK5acdrWFJE2Ak/zkAyEECjEhFGBxjH5dl226o1eIvCq9TjWancTWzlPfvZ3lkodir83s3s+XWsFIry/Tq126YzYxyijrkoWlU61Vj4wwnhac7fePeF7R3h/BmUubPHvPTkgu7vUORJ1qkwTWbArbfuBWpeXnw5NSeGgtiN9WsC/AE= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1713; 6:nfVnmNlEa6sz5SHbu9ndKvV/urita89hjjOInMwGh5OEvVCM0uw9ARXiBskJwFqnWLSQAfhsoR5THJpxGmMNkdBDD3I6KWZYSomkQYQ3rRnUoOy8x3ema5gKMpLZsuc7WP0xy0vUjo0ekQ9aDq9Cy+faqHpftHrtd/DhzZwIMBEY4ItEnQvUpxhmsbJEC+6hPKIFUyCl7pWdwh8WvTCrUtNBrvwrT60MyZoHt8/Qy48ocO01b9mua7bHbn7DwhOAPyuSG0BJDmimCyOayYzr35I5U5JReutS4YUsHGBNgC5KNkfCyWIlsdHnhfTg7/qQ9OHGnx//wmDMnOd3LkpGY2EnRdYARJdpX+ydBzxE3BUR2DKKaZPW8erclHgTrE8WqEBJvweMa+yA9vx+m9qkex3jPdGqu/ia/grY01lpUjQ=; 5:qjkiNQlnnRNltz/RLoEevARG5b+Tqk+/uneEZ+C48RH7leTuZE9dkUQ60l2zu+JtJfKVQ5G6eIqY7F2WQEtaHaGVk/8kIvBPQd+3kIWvS/ORFSSLwViI8nsGZZPYWNi6gGQ+FFLPySJC4Td6IlaXJQ==; 24:pB9vGK7mgqy0a0wSGHCRWyix1ITWtnzaLYfDadVEBoxOmOngZN/vgCkJlqlPfLaOX+lFRSSZ0aus8+l1PPcHQ98LaEeXpTUODHF7fxgxcNQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1713; 7:oVYycPV2DPOLrR57AArMCHgcF38oPp8UKtreFV7Lqz+AAg2MU43gex6TeoSz4h8B67tXoUe7Q9lWZQ4E2r18XJZ8BvFck/s6EXeiW0zB0iMlBeS95D1HLmUo2zntfU64MBmDBJUOJQy1e24BIcOe2H1412e2HwcbT23JNr8faBeI4OXON1b+TScNjG2gLAKugEbR4imJI5thhhsnJVbIvq7+XVFgChvJrw0QAQOKIJe1y+sUEQPcj/cRhv9JdGnoxaWwKvGpODtvIi5bRsinUcot+IzThyUI/6MD7ai2lCAj0iM8lu7KnW7edJJWI5UI7GJaqM8ggqZrD0VsD11Zyv+S5r9PwfvC79reF52By5ba9+lgQIShVJp+zEvOVVj7az8ZxJJUnyhT8VSwgv9xQDmq1DW60+4TwhfpsWRThQu6c7l1lcjSejLG2R75OgNxdcYEdCQBh9SiKpWiS2yNTg== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Dec 2016 09:52:26.7421 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1713 Subject: [dpdk-dev] [PATCH v2 24/29] net/ixgbe: 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: Helin Zhang CC: Konstantin Ananyev Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob --- drivers/net/ixgbe/base/ixgbe_osdep.h | 11 +++++++---- drivers/net/ixgbe/ixgbe_rxtx.c | 13 +++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/drivers/net/ixgbe/base/ixgbe_osdep.h b/drivers/net/ixgbe/base/ixgbe_osdep.h index 77f0af5..9b874b8 100644 --- a/drivers/net/ixgbe/base/ixgbe_osdep.h +++ b/drivers/net/ixgbe/base/ixgbe_osdep.h @@ -44,6 +44,7 @@ #include #include #include +#include #include "../ixgbe_logs.h" #include "../ixgbe_bypass_defines.h" @@ -121,16 +122,18 @@ typedef int bool; #define prefetch(x) rte_prefetch0(x) -#define IXGBE_PCI_REG(reg) (*((volatile uint32_t *)(reg))) +#define IXGBE_PCI_REG(reg) rte_read32(reg) static inline uint32_t ixgbe_read_addr(volatile void* addr) { return rte_le_to_cpu_32(IXGBE_PCI_REG(addr)); } -#define IXGBE_PCI_REG_WRITE(reg, value) do { \ - IXGBE_PCI_REG((reg)) = (rte_cpu_to_le_32(value)); \ -} while(0) +#define IXGBE_PCI_REG_WRITE(reg, value) \ + rte_write32((rte_cpu_to_le_32(value)), reg) + +#define IXGBE_PCI_REG_WRITE_RELAXED(reg, value) \ + rte_write32_relaxed((rte_cpu_to_le_32(value)), reg) #define IXGBE_PCI_REG_ADDR(hw, reg) \ ((volatile uint32_t *)((char *)(hw)->hw_addr + (reg))) diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c index b2d9f45..81544bb 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx.c +++ b/drivers/net/ixgbe/ixgbe_rxtx.c @@ -321,7 +321,7 @@ tx_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, /* update tail pointer */ rte_wmb(); - IXGBE_PCI_REG_WRITE(txq->tdt_reg_addr, txq->tx_tail); + IXGBE_PCI_REG_WRITE_RELAXED(txq->tdt_reg_addr, txq->tx_tail); return nb_pkts; } @@ -897,7 +897,7 @@ ixgbe_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, PMD_TX_LOG(DEBUG, "port_id=%u queue_id=%u tx_tail=%u nb_tx=%u", (unsigned) txq->port_id, (unsigned) txq->queue_id, (unsigned) tx_id, (unsigned) nb_tx); - IXGBE_PCI_REG_WRITE(txq->tdt_reg_addr, tx_id); + IXGBE_PCI_REG_WRITE_RELAXED(txq->tdt_reg_addr, tx_id); txq->tx_tail = tx_id; return nb_tx; @@ -1581,7 +1581,8 @@ rx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, /* update tail pointer */ rte_wmb(); - IXGBE_PCI_REG_WRITE(rxq->rdt_reg_addr, cur_free_trigger); + IXGBE_PCI_REG_WRITE_RELAXED(rxq->rdt_reg_addr, + cur_free_trigger); } if (rxq->rx_tail >= rxq->nb_rx_desc) @@ -1985,8 +1986,8 @@ ixgbe_recv_pkts_lro(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts, if (!ixgbe_rx_alloc_bufs(rxq, false)) { rte_wmb(); - IXGBE_PCI_REG_WRITE(rxq->rdt_reg_addr, - next_rdt); + IXGBE_PCI_REG_WRITE_RELAXED(rxq->rdt_reg_addr, + next_rdt); nb_hold -= rxq->rx_free_thresh; } else { PMD_RX_LOG(DEBUG, "RX bulk alloc failed " @@ -2157,7 +2158,7 @@ ixgbe_recv_pkts_lro(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts, rxq->port_id, rxq->queue_id, rx_id, nb_hold, nb_rx); rte_wmb(); - IXGBE_PCI_REG_WRITE(rxq->rdt_reg_addr, prev_id); + IXGBE_PCI_REG_WRITE_RELAXED(rxq->rdt_reg_addr, prev_id); nb_hold = 0; }