From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20052.outbound.protection.outlook.com [40.107.2.52]) by dpdk.org (Postfix) with ESMTP id ECBB5A497; Tue, 16 Jan 2018 04:54:29 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=AWmrcQg1I0Gr1Wta66jxlE5D2ht5QFf8WVLIncRoHgU=; b=Hzk4M16719PlxwShyrGEMBqolk/DNjoQ2+jBfI6iQRMAiV5jcZ5lRWqVT/s6vgTgTb2GdJtfyfct6ZSYlXChq6zaurwOCQK4OZdHvv5/2RYNf3D7MefzJXZOeiIbFzSI+gShHAaR+mzLDa3LjEpHNhwk/YN4zcQNQquaEPDH8+s= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jianbo.Liu@arm.com; Received: from arm.com (113.29.88.7) by HE1PR0801MB1355.eurprd08.prod.outlook.com (2603:10a6:3:3a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.407.7; Tue, 16 Jan 2018 03:54:24 +0000 Date: Tue, 16 Jan 2018 11:53:05 +0800 From: Jianbo Liu To: Yongseok Koh Cc: adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com, jerin.jacob@caviumnetworks.com, dev@dpdk.org, stable@dpdk.org Message-ID: <20180116035304.GA14809@arm.com> References: <20171227042824.33373-1-yskoh@mellanox.com> <20180116011050.18866-1-yskoh@mellanox.com> <20180116011050.18866-9-yskoh@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20180116011050.18866-9-yskoh@mellanox.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Originating-IP: [113.29.88.7] X-ClientProxiedBy: SG2PR01CA0101.apcprd01.prod.exchangelabs.com (2603:1096:3:15::27) To HE1PR0801MB1355.eurprd08.prod.outlook.com (2603:10a6:3:3a::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7abe5566-827c-441d-ec38-08d55c94d6c4 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:HE1PR0801MB1355; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1355; 3:grJka5QPjBR1dQbZm7MsoBxPIMyrKZQ7nwV+ZYttLKhIyXPdvh4HmSP0dEem6LmNlx7E+eyIpHXnKAMB5/+yBqcYjPHICa9hlRWGqeNWJtqzy60Qj6DjuPf7qbr9VCJ9vNxFUvvsZ2NXC1Is9JusSBpGv9+9aeZmMjRlnzpUwluUPIkh550RKPFng3uQlvJ9gw7xC/8QmBRz6vRlk8xJbJB6T3+BdYkHa4RnZHRp88edlU3YfvylG5la9mMzsbss; 25:AHNS/Kgi2BoUN+DB9wRe7q1iVj37dUOsV+euhYVT6NsPA4MMqRZ6b3EgN3QCapy3SzfN6ZwuZQX8FQJL82dXG/3Kl+bPqtBpYmAN/JAo48zvOzIlhRlRK0lN7UDyxeGmT1N23ogAKEEGR6EezawTNL8uvwoqMrOezOwZUX2gmyg9lSz6hO3H26wI8CNUKB3giZjxwtyDXUAxwI/3OtdUw2Kge66drZ0VQqqHlL5HUD0Cd5mKIgE1dR4nsnDKa/WPox/7fO4ZFvg8XEA0Uex2AeiIC11GmBsjoU62pfEJ0r38/+NuwC/GysTgCydbcPhOFfDHLCv7FEjfJAm/sl/4HQ==; 31:i3kAs6JHGnYPuQZJnMvSgY6qquyKX5nVqn1ATUcfX/ZrWxuB/5U5H6oWrF6jnU/30tL6DwGVqvi3LDiTVGEAyblR7NGGcaFIFqD+rmSWuGtW1J45AsEMIi5RyOS+pf+weXyL96IC+eetaqmP3FwzV+Ie2yy+/TtD5H70yjbp2YuZL28Q1EJNOxYhuKUQbmkHRxIJ3MdJJXaTVsEFFKTLtQEpJQhLXi0vwIg7MS5jjp8= X-MS-TrafficTypeDiagnostic: HE1PR0801MB1355: Content-Transfer-Encoding: quoted-printable X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1355; 20:WTE9pJ9MORdSstmb604ThvoCSOOGXhkwdbOjxm4Csmm6bmfXqGxlkXoEPPeuR/oppgYF9eJ6SmxGsB1CvwB0BENw9oolSwpXrNS5HhcrWJE/u9MefySmdy2uaeHqFFhrUfh5DVpPDof+/9TrgAYayGYCZ8tiVVYNPN7aWI21/M3+JaCcdwT3MRADykF/HIqwBd29lI8RHecPPb6aF73sbwyPpgrGbLY1UWwBlI44f+B3z3eCe4PcEfbU4LFSW/ALj9aiaakIzAKjm4DAByPDkh4o+/6IGw+dqYn0JbvvDj6zugqazV4Mm0C5eT4x+GVl2DR1IKf/ygXlWDbjEBenTOFQOZBgq9OxILAzUdETybSS2uSh3JKNz3mlKxOAEA2+eCX1GvZwY5P2n3oNq+FACQv/Gz7SzvOuAh26OyJHQTJNGaD34C5suh3+noPIA4C7HyJ2uG1Ya+IFaSJL8tO1q5NNk0RTMUtxEJnxAcwEe4KvagGEp+NiCoJjPx6MWtrf; 4:EbF6StRbAPYYXGxhJmxrmITrjAExOFueuIvDk+y9m/bm2BHv0W0ZNZkVgrHO1dWK3h5I064bULIB0C1hACiaW34k3AK+qqWf8rZnz31J9+V9D51p506w2SvXigZU0cXr+viir3MZwfAaHPVaWwjyGVwRABv2IlsxwViWmQyF3TFTcyn6zfyojeduA1ba9TIMYTVP8ly+oaW5dt8Cv/PSUdveqaB0uqnAE+08Rw9wYea2VHava5XbVkgF8tnA94TRpzflj86xMDQ0R0ubFJZl9eaDZSJYug+eIANIzj7iXoOFbpmpA0YfLBO+p5ch/g2N X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(3231023)(944501161)(10201501046)(6055026)(6041268)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(6072148)(201708071742011); SRVR:HE1PR0801MB1355; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:HE1PR0801MB1355; X-Forefront-PRVS: 0554B1F54F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(376002)(346002)(39380400002)(366004)(39860400002)(24454002)(199004)(189003)(40434004)(575784001)(36756003)(72206003)(316002)(55016002)(58126008)(4326008)(6246003)(6666003)(50466002)(81166006)(8746002)(8676002)(8936002)(83506002)(68736007)(478600001)(106356001)(25786009)(16526018)(97736004)(2950100002)(6916009)(81156014)(86362001)(105586002)(47776003)(5890100001)(33656002)(305945005)(66066001)(7736002)(5660300001)(52146003)(53936002)(7696005)(52116002)(23676004)(59450400001)(2486003)(76176011)(1076002)(3846002)(386003)(229853002)(2906002)(26005)(6116002)(21086003)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0801MB1355; H:arm.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjA4MDFNQjEzNTU7MjM6RHpJeTJIaVdMdDBOc0c0M09UVFpDQTFB?= =?utf-8?B?bmNITFpIMnJYenJhckhNVG52Rk5MV2NoZWpPMlNFMzVNN3dWYkFnaEhZR1p5?= =?utf-8?B?b0tuV1l0QmV6ZnZGR2RET0owMUJGazJsNXpmeEJjQXk5Q2xaaFNHaGJuRVBO?= =?utf-8?B?dzRRNW41ZE8wUEtMRUV5QTFUaDZTbkFiaWVUcVl4ZDhnS3ZjOHo3TVlIdGp2?= =?utf-8?B?QWNoWjVVWUpVRG9BVjhQNG94NlVpcFl5TXlORFNCVWZWcjFOMFpDRzdWR1hJ?= =?utf-8?B?NjJmM1ZIK0xOY1ZhUmZxYmFTeE1PUXNZZWNjLzJvbUFjSkpDbm50am4zbVhB?= =?utf-8?B?d0ZjcGtuTzZOR1FaMU5MTW10RGJjTXRMWFZXekRmbHViM0d4dmNSVW1OYStQ?= =?utf-8?B?SEFxZnV1M2E3ZldHcE9XVG9rSFFaM3p3RWdyMk1BVVZHM2ZiVFZwREw0Y2hm?= =?utf-8?B?U3N1SWtXbTBYSTRFNzhaZU4wc0U5aG8vNC9DS3JnUk5rZzFteEFPRXBRRERR?= =?utf-8?B?azRiNDArcDMyUlVMMFNOSitwRExRQWRFblVrajRkMDV3L1c5VjhUNWdrQ3FB?= =?utf-8?B?blFsWEdXODloeVB2eTRxZmd1c2k5NUlEQ3BOU0g3RmYxbFhacHQ2dUNoeGND?= =?utf-8?B?TTBjOFpzVVl0SExPRWd3TS9yc2ZRZkFsT2lyTnlUTlUvUXNkd2dEbGJDZk55?= =?utf-8?B?cEVMVHZKc3dlMjY4U2cvcWtpYjhSVFl5c3ErSm9UYVEvc25RdHVMcStRc3Av?= =?utf-8?B?emRTa2NFdFh2d2JZRmdrYVRRdnVST2JNUjN4YmRaNGY1OTZLS1ljRk5FOHRj?= =?utf-8?B?YUFHVnczSFdNL3RiT2k0MnBDQnFlRTJ6ckFIZDMzOVVKdTNVMi9CNUNHb2Rt?= =?utf-8?B?cTU4Y2c2RTZscUxCd0RqcndwYU9vZ3Q1QVpneXdZai8vWm50cXlFUXRrQ3F0?= =?utf-8?B?Ykx4UGlubTVaVkpQbDRHWVJ1VXBiVDY2MmpJZ1pwYkUzeEREQ0tpMXNTMXlD?= =?utf-8?B?QXM0YlBNNmtNeXlXSXlBSWJITE5oVHhEZEdzWUV1cjlQYWVHNGFHTUZZbWQy?= =?utf-8?B?N3U4djgxc3lsWFVCZlVNZzJWdklZSm5kYW9pMU41NUhiR2hNQVdxZU5RQ212?= =?utf-8?B?eUpYRzdBZmg1NlpOMVdmY0d5ZUJLNDYvRHdIaDZkbUZYRU9aNm9ielEvV3VR?= =?utf-8?B?ZC9xSktVdnBuNGVxT1BtYW1JeFhGTWVvc1FVcm1CSG5nWkhic1lhZW45dzcv?= =?utf-8?B?R0s5aitCazFGeFo5M0hQR3RQWGhMRHhEaWZyY2xPK2M0RTRwZk1BZXdqRDJt?= =?utf-8?B?b0h0UTQyMm1YRStFZlQ5RFdHWXNsSllYd3FhNWRCMnRlVVJiRTlBVFVtZ1E5?= =?utf-8?B?OVNySWwvRS9mYXllVTF2d1kzdkNPcEMvdjhEQnpDMXRPSVBldjIrMXo5czVC?= =?utf-8?B?K2pJUXREbDdYd05xeVFzeEo2SlJqNGFEOTg4TlhLUC8rTWpjUmYxdmU5d09I?= =?utf-8?B?THp2YUFmS21MbFhUN3EzLzU5ZHpTVmw1M00zaEdMcERVQTFkaVpKOFBMWm9x?= =?utf-8?B?TXdjT1ZSY3hnUVJ1dHdPRE16bVJ0VDMrVThSYXI2Q1dNZEkyM0ZoZGxzN3hL?= =?utf-8?B?NmNQMmhDL3BJOHJvN0UzMDIwbkdQNFVEUVJZOFZVYXRoTXN5VDZxdVI2OE5l?= =?utf-8?B?SlQrelhZU3BFRjAralg2Z1JUbGZZbysvMXNSdnRKM0QxL00rRk5DcHhzcVZa?= =?utf-8?B?aEh0RkJxR1ZlWVF4ZWNEZy9xU2cxUm10V3lTWlQyU25iL3dBWWQ5QTNBbUtJ?= =?utf-8?B?aEt1bW5jOTgrRjhmREVRUWRCSVpBTnhqUXZLT2dJVm9ISkxuT3VsYWlVYXZ5?= =?utf-8?Q?ulaoAfCoEhh3c=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB1355; 6:Y4EWLwmLKs13yiN/ozr8b08o4XhkKmKtpu4X2BIE87r+SeYdZuPaEvlK0oq0u19ymSfYsxtHGw97cwKPldtizWOt8758mer+QGnJTbUc8JkC3O791QPlSU2Fx8ZxVx+l+8VT95cpKQxn3N9ewgyHwZLcErjlT7QJwfiCJ8wDvfGYOhkESnoMqmDlUTY7vLQlau8i5SMr5aKVSB7oqXBbScdXVM0QK5RgtVrftdkW6HyX87GLP+oiynNiTj1w6Lotgh2SSCx2IU/HepwON8ppodVf2NuEIzo8tq2ASzqhV6MtWhe6FanflJNjToDno5zHfcgAoxIURbfRaYlNlMDDSH77Gcz34xY8SxbxSykW+ak=; 5:/3cn8zbZfLhktXGNG8GJqtRo+3SIvF/HrdNpWdLIjBJzWeCeKWA3iZaBjHWolBBbkLanFyukoCmundddmPhyYcHmtkN32CsKtpSL8AQfhtWfPOu0I6Ht1MiKZc/5fxfdaXCjzLG5xJjTNWJjcKP5Ji43v5xqYqV+Nc2om2apysU=; 24:NbA9Zq0aYBs8cU2c3GNFG3pK4HKXFGhQfBu8eRI7VQqSgtd9jxjblZX1POtvgLBxVNgp68iaQdd7mUDYWlHU+4OdUCbSeeIYPWFBJy5t41s=; 7:VtBdoYhdztLr8R1BdL382P4iAdghfoQ2eRh7PHS/AS0w7SVW+8elGkr8sQRy174jIaxYHOsem3jFWnD5v9LxkWGtr35KBjaZ6hLctORStr92pntKSs+xtidhfooCH00MyXdcI9g1viiSx1yP+uh4jE1Ynfv863ybej/HLHlq0fYZ9KrGJ2jSm0nf2FImNnSXagiATJbvJhnS6BUhstnPMQZIXQkwXR/Cb75nhok/rkACvROkLAmEBhcDUJNtwin7 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2018 03:54:24.9375 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7abe5566-827c-441d-ec38-08d55c94d6c4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1355 Subject: Re: [dpdk-dev] [PATCH v2 8/8] net/mlx5: fix synchonization on polling Rx completions 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: Tue, 16 Jan 2018 03:54:30 -0000 The 01/15/2018 17:10, Yongseok Koh wrote: > Polling a new packet is basically sensing the generation bit in a > completion entry. For some processors not having strongly-ordered memory > model, there has to be an IO memory barrier between reading the generatio= n > bit and other fields of the entry in order to guarantee data is not stale= . > > Fixes: 570acdb1da8a ("net/mlx5: add vectorized Rx/Tx burst for ARM") > Cc: stable@dpdk.org > > Signed-off-by: Yongseok Koh > Acked-by: Shahaf Shuler > Acked-by: Nelio Laranjeiro Acked-by: Jianbo Liu > --- > drivers/net/mlx5/mlx5_rxtx.c | 1 + > drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 53 ++++++++++++++++++++---------= ------ > drivers/net/mlx5/mlx5_rxtx_vec_sse.h | 2 +- > 3 files changed, 32 insertions(+), 24 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c > index 99a5f8681..8065d9d0b 100644 > --- a/drivers/net/mlx5/mlx5_rxtx.c > +++ b/drivers/net/mlx5/mlx5_rxtx.c > @@ -1669,6 +1669,7 @@ mlx5_rx_poll_len(struct mlx5_rxq_data *rxq, volatil= e struct mlx5_cqe *cqe, > return 0; > ++rxq->cq_ci; > op_own =3D cqe->op_own; > + rte_dma_rmb(); > if (MLX5_CQE_FORMAT(op_own) =3D=3D MLX5_COMPRESSED) { > volatile struct mlx5_mini_cqe8 (*mc)[8] =3D > (volatile struct mlx5_mini_cqe8 (*)[8]) > diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx= 5_rxtx_vec_neon.h > index e11565f69..29ae933e7 100644 > --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h > +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h > @@ -814,6 +814,7 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbu= f **pkts, uint16_t pkts_n, > uint16x4_t mask; > uint16x4_t byte_cnt; > uint32x4_t ptype_info, flow_tag; > + register uint64x2_t c0, c1, c2, c3; > uint8_t *p0, *p1, *p2, *p3; > uint8_t *e0 =3D (void *)&elts[pos]->pkt_len; > uint8_t *e1 =3D (void *)&elts[pos + 1]->pkt_len; > @@ -830,6 +831,16 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mb= uf **pkts, uint16_t pkts_n, > p1 =3D p0 + (pkts_n - pos > 1) * sizeof(struct mlx5_cqe); > p2 =3D p1 + (pkts_n - pos > 2) * sizeof(struct mlx5_cqe); > p3 =3D p2 + (pkts_n - pos > 3) * sizeof(struct mlx5_cqe); > + /* B.0 (CQE 3) load a block having op_own. */ > + c3 =3D vld1q_u64((uint64_t *)(p3 + 48)); > + /* B.0 (CQE 2) load a block having op_own. */ > + c2 =3D vld1q_u64((uint64_t *)(p2 + 48)); > + /* B.0 (CQE 1) load a block having op_own. */ > + c1 =3D vld1q_u64((uint64_t *)(p1 + 48)); > + /* B.0 (CQE 0) load a block having op_own. */ > + c0 =3D vld1q_u64((uint64_t *)(p0 + 48)); > + /* Synchronize for loading the rest of blocks. */ > + rte_dma_rmb(); > /* Prefetch next 4 CQEs. */ > if (pkts_n - pos >=3D 2 * MLX5_VPMD_DESCS_PER_LOOP) { > unsigned int next =3D pos + MLX5_VPMD_DESCS_PER_LOO= P; > @@ -839,50 +850,46 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_m= buf **pkts, uint16_t pkts_n, > rte_prefetch_non_temporal(&cq[next + 3]); > } > __asm__ volatile ( > - /* B.1 (CQE 3) load a block having op_own. */ > - "ld1 {v19.16b}, [%[p3]] \n\t" > - "sub %[p3], %[p3], #48 \n\t" > - /* B.2 (CQE 3) load the rest blocks. */ > + /* B.1 (CQE 3) load the rest of blocks. */ > "ld1 {v16.16b - v18.16b}, [%[p3]] \n\t" > + /* B.2 (CQE 3) move the block having op_own. */ > + "mov v19.16b, %[c3].16b \n\t" > /* B.3 (CQE 3) extract 16B fields. */ > "tbl v23.16b, {v16.16b - v19.16b}, %[cqe_shuf_m].16b \n\t" > + /* B.1 (CQE 2) load the rest of blocks. */ > + "ld1 {v16.16b - v18.16b}, [%[p2]] \n\t" > /* B.4 (CQE 3) adjust CRC length. */ > "sub v23.8h, v23.8h, %[crc_adj].8h \n\t" > - /* B.1 (CQE 2) load a block having op_own. */ > - "ld1 {v19.16b}, [%[p2]] \n\t" > - "sub %[p2], %[p2], #48 \n\t" > /* C.1 (CQE 3) generate final structure for mbuf. */ > "tbl v15.16b, {v23.16b}, %[mb_shuf_m].16b \n\t" > - /* B.2 (CQE 2) load the rest blocks. */ > - "ld1 {v16.16b - v18.16b}, [%[p2]] \n\t" > + /* B.2 (CQE 2) move the block having op_own. */ > + "mov v19.16b, %[c2].16b \n\t" > /* B.3 (CQE 2) extract 16B fields. */ > "tbl v22.16b, {v16.16b - v19.16b}, %[cqe_shuf_m].16b \n\t" > + /* B.1 (CQE 1) load the rest of blocks. */ > + "ld1 {v16.16b - v18.16b}, [%[p1]] \n\t" > /* B.4 (CQE 2) adjust CRC length. */ > "sub v22.8h, v22.8h, %[crc_adj].8h \n\t" > - /* B.1 (CQE 1) load a block having op_own. */ > - "ld1 {v19.16b}, [%[p1]] \n\t" > - "sub %[p1], %[p1], #48 \n\t" > /* C.1 (CQE 2) generate final structure for mbuf. */ > "tbl v14.16b, {v22.16b}, %[mb_shuf_m].16b \n\t" > - /* B.2 (CQE 1) load the rest blocks. */ > - "ld1 {v16.16b - v18.16b}, [%[p1]] \n\t" > + /* B.2 (CQE 1) move the block having op_own. */ > + "mov v19.16b, %[c1].16b \n\t" > /* B.3 (CQE 1) extract 16B fields. */ > "tbl v21.16b, {v16.16b - v19.16b}, %[cqe_shuf_m].16b \n\t" > + /* B.1 (CQE 0) load the rest of blocks. */ > + "ld1 {v16.16b - v18.16b}, [%[p0]] \n\t" > /* B.4 (CQE 1) adjust CRC length. */ > "sub v21.8h, v21.8h, %[crc_adj].8h \n\t" > - /* B.1 (CQE 0) load a block having op_own. */ > - "ld1 {v19.16b}, [%[p0]] \n\t" > - "sub %[p0], %[p0], #48 \n\t" > /* C.1 (CQE 1) generate final structure for mbuf. */ > "tbl v13.16b, {v21.16b}, %[mb_shuf_m].16b \n\t" > - /* B.2 (CQE 0) load the rest blocks. */ > - "ld1 {v16.16b - v18.16b}, [%[p0]] \n\t" > + /* B.2 (CQE 0) move the block having op_own. */ > + "mov v19.16b, %[c0].16b \n\t" > + /* A.1 load mbuf pointers. */ > + "ld1 {v24.2d - v25.2d}, [%[elts_p]] \n\t" > /* B.3 (CQE 0) extract 16B fields. */ > "tbl v20.16b, {v16.16b - v19.16b}, %[cqe_shuf_m].16b \n\t" > /* B.4 (CQE 0) adjust CRC length. */ > "sub v20.8h, v20.8h, %[crc_adj].8h \n\t" > - /* A.1 load mbuf pointers. */ > - "ld1 {v24.2d - v25.2d}, [%[elts_p]] \n\t" > /* D.1 extract op_own byte. */ > "tbl %[op_own].8b, {v20.16b - v23.16b}, %[owner_shuf_m].8b = \n\t" > /* C.2 (CQE 3) adjust flow mark. */ > @@ -917,9 +924,9 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbu= f **pkts, uint16_t pkts_n, > [byte_cnt]"=3D&w"(byte_cnt), > [ptype_info]"=3D&w"(ptype_info), > [flow_tag]"=3D&w"(flow_tag) > - :[p3]"r"(p3 + 48), [p2]"r"(p2 + 48), > - [p1]"r"(p1 + 48), [p0]"r"(p0 + 48), > + :[p3]"r"(p3), [p2]"r"(p2), [p1]"r"(p1), [p0]"r"(p0), > [e3]"r"(e3), [e2]"r"(e2), [e1]"r"(e1), [e0]"r"(e0), > + [c3]"w"(c3), [c2]"w"(c2), [c1]"w"(c1), [c0]"w"(c0), > [elts_p]"r"(elts_p), > [pkts_p]"r"(pkts_p), > [cqe_shuf_m]"w"(cqe_shuf_m), > diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h b/drivers/net/mlx5/mlx5= _rxtx_vec_sse.h > index 559b0237e..6c4d1c3d5 100644 > --- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h > +++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h > @@ -833,7 +833,7 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbu= f **pkts, uint16_t pkts_n, > /* B.2 copy mbuf pointers. */ > _mm_storeu_si128((__m128i *)&pkts[pos], mbp1); > _mm_storeu_si128((__m128i *)&pkts[pos + 2], mbp2); > - rte_compiler_barrier(); > + rte_dma_rmb(); > /* C.1 load remained CQE data and extract necessary fields.= */ > cqe_tmp2 =3D _mm_load_si128((__m128i *)&cq[pos + p3]); > cqe_tmp1 =3D _mm_load_si128((__m128i *)&cq[pos + p2]); > -- > 2.11.0 > -- IMPORTANT NOTICE: The contents of this email and any attachments are confid= ential and may also be privileged. If you are not the intended recipient, p= lease notify the sender immediately and do not disclose the contents to any= other person, use it for any purpose, or store or copy the information in = any medium. Thank you.