From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0059.outbound.protection.outlook.com [104.47.33.59]) by dpdk.org (Postfix) with ESMTP id 8CF6AF97A for ; Thu, 12 Jan 2017 10:20:44 +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=e+RVuUR2EacJJqNDTiilkON8OmgM5eG3T/JhGQoIWUQOFtxkA8Nhv7mFJPZtG2Ok97r6ZjKTRBaEbPBBXP1WK69SJgYhDqFrX/Q+Cax2L3Hpujv0HxLp+UbAZlqxJ9RXDZPRsU92cJQ2j/pm9pFh8rsCSUcGPw0/ayLNAHdfapg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from localhost.caveonetworks.com (111.93.218.67) by BLUPR0701MB1714.namprd07.prod.outlook.com (10.163.85.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Thu, 12 Jan 2017 09:20:38 +0000 From: Jerin Jacob To: CC: , , , , , , Harish Patil , Rasesh Mody , Jerin Jacob Date: Thu, 12 Jan 2017 14:47:23 +0530 Message-ID: <1484212646-10338-27-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1484212646-10338-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1482832175-27199-1-git-send-email-jerin.jacob@caviumnetworks.com> <1484212646-10338-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BY2PR06CA0007.namprd06.prod.outlook.com (10.166.106.145) To BLUPR0701MB1714.namprd07.prod.outlook.com (10.163.85.140) X-MS-Office365-Filtering-Correlation-Id: 8880b6e9-ca71-4d9c-592e-08d43acc4875 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BLUPR0701MB1714; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 3:sCNzfEHMxsBMzieM/bfCqHRYAU592GK7pdQkqsOiIMJH81/P7ZIUuNh5c1juh2hPQHDgS99nFE1aDxpsfLewUOzaHFToGbqM3YxaF4WisDPgGHUh6tzLbinqJt/Rt3ZfgMQ6xMj6wrwlkrL+12ng11Z1I1xA+aFQBDO/e1xaTmfkhjtrJ/jrf88rG+I/2Zai8ZaZndWikzl+AzHgaYAujfbZlYX5HCarDtWt9r3dLyOfh4QRo6O2Nesaf2lUEEmqvwvoal1y6dVSYlVktn961A== X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 25:mcs2gBJlQmwffCq4GEqK7cVmg5QgVy/ErHVJEZDT1WCsreR/9Y74mTukrgBsB1xDJjXta1HPNyaZRv0azmCxPYepwuOO0MBFh6LU35HjA14kfAcevK5aoHuhNu9xLIWrHI55O8idCuSvar+NkN0Tu/Yn+SBsn+A/UeLjZ4RNh5Kk4in3YHMSds3mtCUHJh0Cj7Cf20gpQGwm/+yKphKDlSaH6r49Qhv7SZdGZ0gYIUb+1ipAonGW4nhx3NpaFCdcGANaGFXhHUZM/DBkSZCZ87n0K0INbSKKDDubCNYsa21PofNXCkcw3WN+adX79s2Tc0YZSmUbXWF0+W+w6CgwwJDHbiO8GyccPDA/d57zDdmmbZJv73C6JO91KZmvO4MEC9rzis7DieKVxnnoPHQkqLraooBKj3Yrp4tsg+VZhmALbBkAhMvPxj3ZphDmtZvA3Ly8OZi5GQPRxalgoQ4tC3YS1Pmwh0LUjf8nM22daARoOlzFpxOewzxEhOFCxhbGyfTqQ28v7LS0Z7jc3QHJ0ss9vOFaAImDF+KVn0Jw9NXQwkyHeAjw8yN9LVUAeuv5hJobaL1ov8Zu8keRBuOFpuObUL8mZww+dhheSs6NXGHzJ/AqoGzIkwjFniLLuRkMvLbLUWF/iHiS+TiP8nIZWag94ffiFavzLTpr5LbHkhEd+0qO7S0BeAKb2qLrs/djQqV0TBeIO81GzrsRkqsrmgCpOYZQw8uQ8I2E3gAKIKMfnhB03D6d50ob6LHIpN7e1GnAY421/hmhoOCgQJXStGsBttYFCGsyeEu9YG4KOGYklVP6vE0nJH6ZqnpY0ppn X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 31:fpjyrZ57C8LfKzLr30/2UrTzvFkxj9NvVR0kgUjPddan7tiZdpEggtBmDovLVvHU5bO1Cwn+om/fkqwnXhhM4vdTVFTQ/PhuxD+5YciuYs0Wkk1QaK5NclRKFAiwosScAzjDvG4JGp5N8clccBQ+1vlFz2uCkphBXCZOQ2IIKo9YOUH6MnIO9jMfGTJuaq7X236BpGPMWbNPzbseRQXRd21QqjIeLRTlVPSVDC6F7B4yaE72lp7FX6eroC6qDXzO; 20:bvHTP379Pk9h5GAwynDog4lTfLBtJ998tl+aYngj+F756EoxTFzz+lyOiWyxRfeEC+Rjqx1NWh5Ii43vOJ0ZiuNEQwZsu459k5vMihZbRZOI0PA/AUKNB5FQjNhnhHO5kG4a+J7yesPyQrWTjPp/fUukh8ceQCZWQLLH5YVKEdpQ3ed2F4R05B3yoxJwmXM/DATed9D0SK+ZF3sOfOuDxNEi62lXkJaP+5pb122t6hCm4NoO3qKmBKAvi+Wu7McVC8qea+427INPkpiJFCY6O1ox+6XyT2KrUvWU3jCmSqd06d+GQfRKYziRKwPNaM+gPXf2ZM2MZyahcdrL8bvpi1jzghpQpt54KRUFeSrIfDu1YsMB0h5zJHlwNo8cQdm6EvwkkGVOdQE9z+pga69Fl+uEK0kLeY1eNXpi5ciGIYNomPyO3ZpwfqBY9shczKZTG6k7mmrQR5ta6mBanezv2hYvTT50hnZM0WDmmBU5icFt9dLJGHicYJ7+Qy3LNu6VCqSo7XnwZBRx3L4ZHCJ5To3rIKwEZ5qnARaPI1i54i5XgL1qyp3q9ixFcZ/Cs4GtuzyzSc8mR5RB1pf4hTv/Q8m2DdxsC8I3yr8QcuYelW4= 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)(20161123560025)(20161123564025)(20161123555025)(6072148); SRVR:BLUPR0701MB1714; BCL:0; PCL:0; RULEID:; SRVR:BLUPR0701MB1714; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 4:/w4XyWghwxsxYLdk3zXT3VRTCNRYX1gJEHy4O1dqGPmpuNbZUhBiR+6mQK1zNx26QVF3DvYSBAw7qYoMfm/aGB0Rg5x/VP+jewnEAJJbt1wkCZezSSaLzA2um0RQ7VlO2VHMaBZvNhaQcKqwNoXOwx0jF+vycYkXR7TccGFOLOX0zRAcj3BNgjSyUBRhuVppVchh0n13ZlbFQO+n+DZ/F0w2EDUMj708v/qJsa4ph6mRZXWWqH0uYt6ERN0lG6PcL3NDynuBNR/3fpb5+HqD50Fn2q8a4RxMTWYDQq+7+081wZaMtdrziq1Jx2gCVZjenkTDJ6npKw0sig6oMOmo/TdTFbBXFbCEf07btPWVAz1Pm7whf1JK1hLqUPMb9I6oJWYkuLFbZLj1OecxyuhAcuWyUXVNjIvh/NTpdK0ARBxrIBlqapaK/fy6xYl7/KoNYFVwPa0nsyQBZuVnw7FOEge6RPaB2LopiK4HGaQqN1fH2IMok8KxQSt5KjZub6QWf+1b0pG6i69wWXmRF2rzzrb8vV1yhfgeeFQvtI4ZuCjK7J+gk6VvH9Rc2h9xg2ergMwyV+8olZy9Klw7120p3vuER6bT3+9a+HammVKPn98= X-Forefront-PRVS: 018577E36E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(39450400003)(189002)(199003)(2950100002)(53416004)(76506005)(92566002)(105586002)(69596002)(2351001)(42186005)(68736007)(106356001)(42882006)(6916009)(305945005)(2906002)(7736002)(50466002)(48376002)(36756003)(5660300001)(110136003)(575784001)(4326007)(97736004)(107886002)(189998001)(50226002)(6666003)(6506006)(38730400001)(101416001)(54906002)(33646002)(5009440100003)(4001430100002)(6486002)(66066001)(5003940100001)(6116002)(3846002)(47776003)(25786008)(81166006)(6512007)(81156014)(76176999)(50986999)(8676002)(7099028); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1714; H:localhost.caveonetworks.com; 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; BLUPR0701MB1714; 23:3Amf7z3bVYt2UC32NOBL0yggSCU0l++Z5XVJ8co?= =?us-ascii?Q?TtJF2Txf7VU1LsuD1YE5IMMF9lW4tMRHDJWS34LCv5QGMv+QS1nmm5/bTnJN?= =?us-ascii?Q?HhATT4Sx2luyLr5fQPOlUnbynLV0+zrFaHI5jxynBjltuqyas0kvtSSnLqUj?= =?us-ascii?Q?79lsABFff/nXDTkfJ7sojMxPtffG+ejYmDACh9yXh9R1YXFgk+pagiZBUaLY?= =?us-ascii?Q?akwcvY5jyifAqSIOQ2xKPxax2cn4oVrbEvLxbDprOdpZ3CP9F4W3wRvaRmt7?= =?us-ascii?Q?Zle0zY+USikxZ9ndgAOlT6e2jOAmwrrNcyjgsu7Ywq3GP1FPhNUqFsfVBiG3?= =?us-ascii?Q?SPxwqCFYb4NksqBrwcc0sDMNRi+s75Z/+B94pTRf8HJS910WMV3o/3kDKXS3?= =?us-ascii?Q?8sgf59lpxvPz7t2rn3CG0Z9BXs8j5bjA5w5DXv0fl432BtAn6Zx3roKpmO0l?= =?us-ascii?Q?jsJxVYRVzhiDsyCQEUuLSt7dU5oaErAHmYKlFSFtPpDDd5s7iBxyVI3tZ91x?= =?us-ascii?Q?HbewRPbvGiEfhfI24hcQGRyKHGUXrNBra1bvMQGJC+/OR410v/J7WcbehWPx?= =?us-ascii?Q?4FWCdbB99Oztv5lBq442i1s/XoKYmTItLTGls0BtW45h3SaEspu8kwLP9d5L?= =?us-ascii?Q?WdsbjLnBaB8gbGMJ0Qq7D5jUCgWAnQ85NMnpecul3Grj6dfAlZU2NcrWFuqQ?= =?us-ascii?Q?OU0W9l5nCUKKp9dE4onz4w3vNSShl/TZ3gK9Syxii7JAr7AP0OwMVKFBwDUY?= =?us-ascii?Q?lGrCDJD7KlUd+1zkIgymzaL3dx25B2VXz+ETuD8ZZEkBei80CYenY+fBwiow?= =?us-ascii?Q?QLYcoXANMOzZdJt3VRPhGj1gZpVPYi/2YYyRAX7OBY5m5v0NgTnIXE1ufWvq?= =?us-ascii?Q?HDQ2bqJ2X+11a1x4Pjov6Ef9w1KRStgz+Ygn6S19p24R1BySLZeMnHGT6A6f?= =?us-ascii?Q?DfhFeAXpKcGerpnTuLJ5JLu4egz9qlGmkMIjHw0yz8T10VEtK+H8ZpMM5fTg?= =?us-ascii?Q?JB1oOUTjrTkz0VRkoXmkgkzh8F7wp2YvGlNFGdBj3Dbwx9gbt/ZacX6r/Gwu?= =?us-ascii?Q?cVhWbcndac82l7nvWzJpik/zs6OkTb7HX+plujWF6e1IxMiA/p4jzrREipE5?= =?us-ascii?Q?FplGrTqPfjvwdij4L5hFwP6Rj5WZKs+0LobqUHhtq5tXltbycEmYyUA04M6m?= =?us-ascii?Q?QLF1HMlMpFgMScmvxW2Jw9cPNBgs+wOPIBR64Acu0O9XqPNqo1bXBHLuzOU7?= =?us-ascii?Q?0XtwbGGZ8iBJI6zNwas9KRZ88mfJytV2kA7gpukQnixKgf5RXWuB7FHXcdYl?= =?us-ascii?Q?CUQH5Ot6jSPirhgVVwU5e7i4vaHpVfAgGD9CL6xDAmLYa?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 6:0pH2vHmvkRWmQKNdyJ0OFZSbbgEduVTGpZ5IEAvYm8VW+ulqI5U2O+pq7eFjyY7K4wFxgxiy/KduGFV7xKDZoC3sMVW1ZQX7IxxLNcgJtspnqP40cyRfDlYNoiSk+d31Rf2fZhLr2DxnNUEKJRv12Yrocy1/tAHUhgskcNivBL60f1xjwZQnIzz/5B3L9dz+qDWIEyo8AgFuRkwHijD9sEAqlY382YLbbk23c22hiYEhRLslLOp4CgnVI01hp8XX3TSQJWHJMkFD+dF4nwNxE0mP2TMNG0EDh5KNqqDFO4G18MCMMVbQvnEACo2iJmDUNNwBzuc6js3aJzHKoNXJ/dY4IRDGpgcv0jOfkKcZH9o0lWjQDEPcXJCTquRJue9I3vO5q5+/0HYax2foV7VVUBFzyA1Y/Rn+KFedAnyYXBE=; 5:fIOytcziqv14BKg0ZlsLLHlf3AjtP+tdmfa7xVYDlQbdNaWabhBqmcBGeCQ4SR6zLsuz8lb0ZCjxMFmJzPGSGnccawzhi3R2lVmkm6+JJOQIKM896Mo6kmFt/RVz9qYZHV1cdxsV5XJAaDPsS4ua3Q==; 24:BqxbT1J7ueBfPoPIo3GmITvGoatKwAxE1bAKetaVETPSDz86IGHUiHw0M+yvd0fpF+u5DV4J64++A9eJAikWAuKesP3JVVFWFbfFejkV/bE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 7:WU9TRpl1P8u9p0ywBnrQ87S50AAI9e0inQp672Pxc4zd2BXRvnm3ojgax9XSO9093IOPohFbAb24J1hO98ox6R629P7qGQx5QtdMyAGiNKsdgTBCnTjWlEwb1lErYQlE6aHC3iCW1bMezdSkQPp3orKc/ivCfJBM7JDy1JHmlwbNGQaa5kS61m94NOeFEKX49Io5GFDtvZpWQ7j3TvNVMQW/ugOmi5NCvgVmi5fIUkTE6phpga4tefGqIE00z/k93KGSrZ//ZdzlY8WyicPmkxRrI/VsrOWbcdlxp5QN16gfpcQyMBhE5EoWKzG5kMriK19b2cYZr2UGplWbAP3Tnbknl5PShYUQDlfTJkkQqx7wl7GR3Z/H1RQ2wPr/iaUhJD9DFn40Z7g6lshdXIBmqvvKKNTkcBAszCO9zQ7/yqyaqKfCAtDyl3PCFuLi/lmovpfLJh70xNtFsX0FZHTh+g== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2017 09:20:38.8261 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1714 Subject: [dpdk-dev] [PATCH v3 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: , X-List-Received-Date: Thu, 12 Jan 2017 09:20:45 -0000 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 */ -- 2.5.5