From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 88D04A04B5; Wed, 30 Sep 2020 14:53:04 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E77561D610; Wed, 30 Sep 2020 14:53:02 +0200 (CEST) Received: from hqnvemgate26.nvidia.com (hqnvemgate26.nvidia.com [216.228.121.65]) by dpdk.org (Postfix) with ESMTP id 16A241D601 for ; Wed, 30 Sep 2020 14:53:00 +0200 (CEST) Received: from hqmail.nvidia.com (Not Verified[216.228.121.13]) by hqnvemgate26.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Wed, 30 Sep 2020 05:52:46 -0700 Received: from HQMAIL109.nvidia.com (172.20.187.15) by HQMAIL109.nvidia.com (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 30 Sep 2020 12:52:53 +0000 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) by HQMAIL109.nvidia.com (172.20.187.15) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Wed, 30 Sep 2020 12:52:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n+SRZICbzjAUPvd9pRMW5cccDyu0hqqxu5VWZXpQ7uGL1PXCIZJUs1Hg0HnjBnXToTQVcjtarOC3WrX1wfiQ7Atz/FSO/ph0sazYRIkaZdQ6w0Frz/EAzJHzU9qs7N4uiK05DsHwLiPnSGx4qHOn+6ZmciDDTs2mrJK0x7iM+bEvouoLYg33vuJmnFybIg4Q51DrShO75LPLNZ/w/EgkIxVxR3VL4s7MOhPk61phVTzsWSjhwxocQahYHquHdC7IaHiRBTdrBlo/hJUcgdT6C1V57UZN/csGIlj2oAwTsB2w3WcddPlGuI9G9UD4Tl10PfES0AvijEWr+jZJo3EAIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FRCkpkqcPHyulIWuTNNv5Uafb8+mFTa2MOjMbxVzBrc=; b=RTy4bB06ZZiMOVhJAmJAJi1U1Eg3NBzbDXlGwpPXFjbXMmL/jwo7Z25ml7IkeY9PfiqKOb2E9EtON96LK0VKItWLzjmfstc/RPraWUbhPbC9cJCYVtNOVKHce2fOGD1NTZpJKHQ7s4/mnZ0w12Ah6Pjo2msN/6FA2lSCCxpQb6ba9FBgzwIQpztp0hNGH1S4CR9BpIfUOKjPUVwrjjcIE9T9JTj5r0tGhpJ4RsVjTBvrqfi6ylfNixgzVxM+FWZqnImhi7B60RUzoqAGFi5+jlBFTlFWEYXrTtNLMhcRhlmYq3ZVI2rdIiEG2NcYsyMjiPySPXhPVcAd9MeAIN5FLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none Received: from DM6PR12MB2748.namprd12.prod.outlook.com (2603:10b6:5:43::28) by DM5PR1201MB0185.namprd12.prod.outlook.com (2603:10b6:4:55::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.20; Wed, 30 Sep 2020 12:52:52 +0000 Received: from DM6PR12MB2748.namprd12.prod.outlook.com ([fe80::f506:4af8:281b:cdeb]) by DM6PR12MB2748.namprd12.prod.outlook.com ([fe80::f506:4af8:281b:cdeb%7]) with mapi id 15.20.3412.029; Wed, 30 Sep 2020 12:52:52 +0000 From: Raslan Darawsheh To: Slava Ovsiienko , Phil Yang , Matan Azrad , Shahaf Shuler CC: nd , Alexander Kozyrev , "Honnappa Nagarahalli" , "dev@dpdk.org" , nd Thread-Topic: [PATCH v4] net/mlx5: relaxed ordering for multi-packet RQ buffer refcnt Thread-Index: AQHWgZ1yEYSOj9L2xU2X9cBEs/seU6lhIL+AgAABwYCAHsMQAIABZiQAgAAB6TA= Date: Wed, 30 Sep 2020 12:52:52 +0000 Message-ID: References: <1592900807-13289-1-git-send-email-phil.yang@arm.com> <1599101590-4856-1-git-send-email-phil.yang@arm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [212.29.221.74] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6006749b-7cb0-4cb1-988e-08d8653fbe50 x-ms-traffictypediagnostic: DM5PR1201MB0185: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: qH/depVSBa5tsr00Rmq+4M5zDnoCw2yenW1La+G67eovi37FcUWvCRdeBDSP6pfSBNIQ5AngT/DTMWehQ9PM3EypLA3SKYHxgoSYIZpj2ZcFlfRXDBGN4cjf49ceWI6Yf3lsP2w6E+5epjUXmiI9ft4sWFqhIcBnLxMLqJK8UTYeSRoJ3YrsS1kWNEvnbNywGOOehNKpzDcwi1EfdvzYu6ymXCa2NdmBmwqEcqBcnpbjttIj+qJXlXA1W1Qetv7ZywHswJHSMTQOVA9+PMv+9garUIEhI5GUJ+pxb7gcNtVMMMXl3j/9DA8CDj8Qruf8LRtumDbhqvo5U1LyCGz3REEl9vy3CUrhZP7J1zqBPeIMZsukhA3WOkDEN+rxmgxQLeY8so+aUe6sQFn2iJfQtloc399YJr2e3MFRRtrUaXMLukwJqhu1I2slgqOtBFC5 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR12MB2748.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(136003)(39860400002)(346002)(376002)(396003)(4326008)(52536014)(55016002)(9686003)(5660300002)(83380400001)(8676002)(8936002)(86362001)(71200400001)(316002)(83080400001)(966005)(110136005)(45080400002)(478600001)(33656002)(186003)(66556008)(26005)(66476007)(66446008)(7696005)(66946007)(64756008)(6636002)(53546011)(54906003)(6506007)(2906002)(76116006); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: ATmKbS8MNBrim+hM4/PQVdezBQqilEdcbFR1AITb17G7lN1sFvGBgQ/3NhKz2dyyxgWAt8Ds4mIOCXbCiyU0zRJQA9vhOg3MCox+ojDtTxlIiBeM75HcihCK/g542aJNY9DzObUesm2597XA/kYUxCcWO4UJJsDPqxo+UZ3IhSem2GUIbF5DKnf/s01XFyjJjDC0A0e8qb4RLcargL5+0k6hoaDfjevaoH7J+PZlTXs9gIo7XzfdFJFYf2qX2eINSvKGdj+NFeOFZwiurXqJ2DuzpTCvkLMfxBcqc+x0fmnKYKrFMkXqkR9MAm/CpDQG1s8GCufL/5akg31ko2ZqtgC4T08/XjdTSbKTq41pL7r9rQf4WYO1xw4nNE+LXNtWLOXwO42xUTvuOUeljJxPbxuuY74bfIRVJQD6AepLJHG3c+fWW5Inazk3hUtG4xRdpb3w5gooC9Krf473VALNHbNphBfpKbBePpB4Hp6KgrT1xssAs8CEZ8u6LEZ6cXF9jJa7SrqLqHm3wLsldI1cHhLi5FVJ8dTGvwOO1JniZ8gBZU2eX54F4IGabrccCwMIdSS48ATbQKUXPT7rQnnOs6r/o7h8fySnlfB+mk8u8vlJqen40DHQAOlrtS1XmaOnNAxbe3LVtPqBwxlFYK0mpg== Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB2748.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6006749b-7cb0-4cb1-988e-08d8653fbe50 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Sep 2020 12:52:52.1074 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: obXTc3GdIxx9PrC+LcwxG+fGSJjIWaVe/2cN1t2IgHKI9Y/aWVsObH58GmXBatNt2jFhsCdnInWfDr0/QEXFBA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1201MB0185 X-OriginatorOrg: Nvidia.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1601470366; bh=FRCkpkqcPHyulIWuTNNv5Uafb8+mFTa2MOjMbxVzBrc=; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To: CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References: In-Reply-To:Accept-Language:Content-Language:X-MS-Has-Attach: X-MS-TNEF-Correlator:authentication-results:x-originating-ip: x-ms-publictraffictype:x-ms-office365-filtering-correlation-id: x-ms-traffictypediagnostic:x-ms-exchange-transport-forked: x-microsoft-antispam-prvs:x-ms-oob-tlc-oobclassifiers: x-ms-exchange-senderadcheck:x-microsoft-antispam: x-microsoft-antispam-message-info:x-forefront-antispam-report: x-ms-exchange-antispam-messagedata:Content-Type: Content-Transfer-Encoding:MIME-Version: X-MS-Exchange-CrossTenant-AuthAs: X-MS-Exchange-CrossTenant-AuthSource: X-MS-Exchange-CrossTenant-Network-Message-Id: X-MS-Exchange-CrossTenant-originalarrivaltime: X-MS-Exchange-CrossTenant-fromentityheader: X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype: X-MS-Exchange-CrossTenant-userprincipalname: X-MS-Exchange-Transport-CrossTenantHeadersStamped:X-OriginatorOrg; b=eSG39TspWJ8n3xGiXQ0QUGCaxx+2R56gRz+tOWnW8uD8guSra+U8RJf/3asW1PEGC zgO0IByi3ra0XR/wfercThXYbgkW1ypnAMWKGFlZpJ+rvoN5MqGBL8XenxSnr1wjYd rQi/OuV05gRmHthvlThVQ99Os3ty8gw8GBJ1cW67hpXdZbGIiqsw0Dx5XBhqWiLgQ1 zZ67KFe/h4CGeGKEpa5CFEy4rE0cPOWcqxwvdhtTL8KWMurJKCumpgsPX5ukTMXyLR zoHR4c7TWbHOrCCXO0qeOVNMTyPxhLOdfyDlMT4237xOOZdBmfoqgL7Vs60/Qg+d43 AWLd6fECfD1cA== Subject: Re: [dpdk-dev] [PATCH v4] net/mlx5: relaxed ordering for multi-packet RQ buffer refcnt 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" Sure, I'll take the patch since I was waiting for performance impact testin= g, and since Slava just confirmed it,=20 Then we can take it yes thank you for your contribution.=20 Kindest regards, Raslan Darawsheh > -----Original Message----- > From: Slava Ovsiienko > Sent: Wednesday, September 30, 2020 3:45 PM > To: Phil Yang ; Raslan Darawsheh > ; Matan Azrad ; Shahaf Shuler > > Cc: nd ; Alexander Kozyrev ; > Honnappa Nagarahalli ; dev@dpdk.org; > nd > Subject: RE: [PATCH v4] net/mlx5: relaxed ordering for multi-packet RQ > buffer refcnt >=20 > Looks good to me, and we've checked the performance has no impact. > Thank you. >=20 > Acked-by: Viacheslav Ovsiienko >=20 > > -----Original Message----- > > From: dev On Behalf Of Phil Yang > > Sent: Tuesday, September 29, 2020 18:23 > > To: Raslan Darawsheh ; Matan Azrad > > ; Shahaf Shuler > > Cc: nd ; Alexander Kozyrev ; > > Honnappa Nagarahalli ; dev@dpdk.org; > > nd > > Subject: Re: [dpdk-dev] [PATCH v4] net/mlx5: relaxed ordering for multi= - > > packet RQ buffer refcnt > > > > Hi Raslan, > > > > It seems that there are no more comments for this patch. > > So shall we proceed further? > > > > Thanks, > > Phil Yang > > > > > -----Original Message----- > > > From: Alexander Kozyrev > > > Sent: Thursday, September 10, 2020 9:37 AM > > > To: Honnappa Nagarahalli ; Phil Yang > > > ; akozyrev@mellanox.com; > rasland@mellanox.com; > > > dev@dpdk.org > > > Cc: Phil Yang ; matan@mellanox.com; Shahaf > Shuler > > > ; viacheslavo@mellanox.com; nd > > ; nd > > > > > > Subject: RE: [PATCH v4] net/mlx5: relaxed ordering for multi-packet R= Q > > > buffer refcnt > > > > > > > > > > > > > > > > > > > > > Use c11 atomics with RELAXED ordering instead of the rte_atomic > > > > > ops which enforce unnecessary barriers on aarch64. > > > > > > > > > > Signed-off-by: Phil Yang > > > > Looks good. > > > > > > > > Reviewed-by: Honnappa Nagarahalli > > > > > > > Acked-by: Alexander Kozyrev > > > > > > > > > > > > --- > > > > > v4: > > > > > Remove the unnecessary ACQUIRE barrier in rx burst path. > > > > > (Honnappa) > > > > > > > > > > v3: > > > > > Split from the patchset: > > > > > > > > > > > https://nam11.safelinks.protection.outlook.com/?url=3Dhttp%3A%2F%2Fpatch > > > > > > > > > > > > > > > work.dpdk.org%2Fcover%2F68159%2F&data=3D02%7C01%7Cakozyrev%4 > > 0 > > > nv > > > > idia. > > > > > > > > > > > > > > com%7Cf16ba4e8cfb145f5d82008d85529348e%7C43083d15727340c1b7db3 > > 9e > > > f > > > > d9ccc > > > > > > > > > > > > > > 17a%7C0%7C0%7C637352982762038088&sdata=3D0HzTxbzh0Dqk0hZ5PI > > gE > > > V > > > > zieyV% > > > > > 2BnLTivsVIFFxXFAtI%3D&reserved=3D0 > > > > > > > > > > drivers/net/mlx5/mlx5_rxq.c | 2 +- > > > > > drivers/net/mlx5/mlx5_rxtx.c | 16 +++++++++------- > > > > > drivers/net/mlx5/mlx5_rxtx.h | 2 +- > > > > > 3 files changed, 11 insertions(+), 9 deletions(-) > > > > > > > > > > diff --git a/drivers/net/mlx5/mlx5_rxq.c > > > > > b/drivers/net/mlx5/mlx5_rxq.c index > > > > > 79eb8f8..40e0239 100644 > > > > > --- a/drivers/net/mlx5/mlx5_rxq.c > > > > > +++ b/drivers/net/mlx5/mlx5_rxq.c > > > > > @@ -2012,7 +2012,7 @@ mlx5_mprq_buf_init(struct rte_mempool > > *mp, > > > void > > > > > *opaque_arg, > > > > > > > > > > memset(_m, 0, sizeof(*buf)); > > > > > buf->mp =3D mp; > > > > > - rte_atomic16_set(&buf->refcnt, 1); > > > > > + __atomic_store_n(&buf->refcnt, 1, __ATOMIC_RELAXED); > > > > > for (j =3D 0; j !=3D strd_n; ++j) { > > > > > shinfo =3D &buf->shinfos[j]; > > > > > shinfo->free_cb =3D mlx5_mprq_buf_free_cb; diff --git > > > > > a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c > > > > > index 1b71e94..549477b 100644 > > > > > --- a/drivers/net/mlx5/mlx5_rxtx.c > > > > > +++ b/drivers/net/mlx5/mlx5_rxtx.c > > > > > @@ -1626,10 +1626,11 @@ mlx5_mprq_buf_free_cb(void *addr > > > > __rte_unused, > > > > > void *opaque) { > > > > > struct mlx5_mprq_buf *buf =3D opaque; > > > > > > > > > > - if (rte_atomic16_read(&buf->refcnt) =3D=3D 1) { > > > > > + if (__atomic_load_n(&buf->refcnt, __ATOMIC_RELAXED) =3D=3D > 1) { > > > > > rte_mempool_put(buf->mp, buf); > > > > > - } else if (rte_atomic16_add_return(&buf->refcnt, -1) =3D=3D 0) = { > > > > > - rte_atomic16_set(&buf->refcnt, 1); > > > > > + } else if (unlikely(__atomic_sub_fetch(&buf->refcnt, 1, > > > > > + __ATOMIC_RELAXED) =3D=3D > 0)) { > > > > > + __atomic_store_n(&buf->refcnt, 1, > __ATOMIC_RELAXED); > > > > > rte_mempool_put(buf->mp, buf); > > > > > } > > > > > } > > > > > @@ -1709,7 +1710,8 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, > struct > > > > > rte_mbuf **pkts, uint16_t pkts_n) > > > > > > > > > > if (consumed_strd =3D=3D strd_n) { > > > > > /* Replace WQE only if the buffer is still in > use. */ > > > > > - if (rte_atomic16_read(&buf->refcnt) > 1) { > > > > > + if (__atomic_load_n(&buf->refcnt, > > > > > + __ATOMIC_RELAXED) > 1) { > > > > > mprq_buf_replace(rxq, rq_ci & > wq_mask, > > > > strd_n); > > > > > /* Release the old buffer. */ > > > > > mlx5_mprq_buf_free(buf); > > > > > @@ -1821,9 +1823,9 @@ mlx5_rx_burst_mprq(void *dpdk_rxq, > struct > > > > > rte_mbuf **pkts, uint16_t pkts_n) > > > > > void *buf_addr; > > > > > > > > > > /* Increment the refcnt of the whole chunk. > */ > > > > > - rte_atomic16_add_return(&buf->refcnt, 1); > > > > > - > MLX5_ASSERT((uint16_t)rte_atomic16_read(&buf- > > > > > >refcnt) <=3D > > > > > - strd_n + 1); > > > > > + __atomic_add_fetch(&buf->refcnt, 1, > > > > > __ATOMIC_RELAXED); > > > > > + MLX5_ASSERT(__atomic_load_n(&buf- > >refcnt, > > > > > + __ATOMIC_RELAXED) <=3D strd_n + > 1); > > > > > buf_addr =3D RTE_PTR_SUB(addr, > > > > > RTE_PKTMBUF_HEADROOM); > > > > > /* > > > > > * MLX5 device doesn't use iova but it is > necessary in > > > a > > > > diff > > > > > --git a/drivers/net/mlx5/mlx5_rxtx.h > > > > > b/drivers/net/mlx5/mlx5_rxtx.h index c02a007..467f31d 100644 > > > > > --- a/drivers/net/mlx5/mlx5_rxtx.h > > > > > +++ b/drivers/net/mlx5/mlx5_rxtx.h > > > > > @@ -68,7 +68,7 @@ struct rxq_zip { > > > > > /* Multi-Packet RQ buffer header. */ struct mlx5_mprq_buf { > > > > > struct rte_mempool *mp; > > > > > - rte_atomic16_t refcnt; /* Atomically accessed refcnt. */ > > > > > + uint16_t refcnt; /* Atomically accessed refcnt. */ > > > > > uint8_t pad[RTE_PKTMBUF_HEADROOM]; /* Headroom for > the first > > > > packet. > > > > > */ > > > > > struct rte_mbuf_ext_shared_info shinfos[]; > > > > > /* > > > > > -- > > > > > 2.7.4