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 0B5D0A04B5; Wed, 30 Sep 2020 14:44:53 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 509951D57C; Wed, 30 Sep 2020 14:44:51 +0200 (CEST) Received: from nat-hk.nvidia.com (nat-hk.nvidia.com [203.18.50.4]) by dpdk.org (Postfix) with ESMTP id B3D651D57A for ; Wed, 30 Sep 2020 14:44:49 +0200 (CEST) Received: from HKMAIL103.nvidia.com (Not Verified[10.18.92.77]) by nat-hk.nvidia.com (using TLS: TLSv1.2, AES256-SHA) id ; Wed, 30 Sep 2020 20:44:46 +0800 Received: from HKMAIL101.nvidia.com (10.18.16.10) by HKMAIL103.nvidia.com (10.18.16.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 30 Sep 2020 12:44:46 +0000 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.170) by HKMAIL101.nvidia.com (10.18.16.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Wed, 30 Sep 2020 12:44:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TwrdXOH/uE3RANDzu/mD9nUiVvMcUEMY3dqHYZ7zMgEQ7hDq1CGdJRIzNGkeN4gngOCewkHsMzbzrVowKnnafOF7qCOPRBoyC1bUJuPjcUaq/8VmJGhcozZAbzjocWmDHRkqKwtBFj5MFKUVAuUYQen19VzyFoNNMJpgYIOFVnbvnRz5sXhmnW0Pqcg6f9LZgyAaxMnG29gwxvPn3wi8ZQ19gsPEVnLYoblIMDAzgWx0nSJA3jq3+XMsatG1zMPkKg24eMiShTsdKej8XC3EzpIaU1+4q9br6qsrwXV8bh1D7FlX4LPWiRPGQ8/qxX10EENHeoFuCgrGlAxaLN0hPw== 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=SQBWKxPV3JBKBXkO6cwGE7lMuxvFT2K7IzdMxiX5Sx8=; b=VSpGjCsSy95+wJ5zjVVvhZUl7fQdM2n3GapHIOYLTO3xOOR1VtAMApkId4o2oLczfRW7Wn4R4v83OP2/sYemHqYF4lIyRYSbkfkCLlPSknjkYHUn8LKCBxHhtAAWO7Qa/ro9BH7yQpzzVckYxHl9+j8XDn+sds6knHVCkb5kHSKDhE5g7eg/NaYgCcvUBYeZF206R+KOWrkiJx72sQDKgzw7YKx7FxGpU9IfA6UZ2QkkuUyrzqxY0M42s68dzf+4SKv7EGmal1QjSfKjJ2l9RWO8ErxD7Ak9UvSvIDAoS6bg764McwVZh65TdWeoBDAqWOmEbCMGbQE4iV1chNF13Q== 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 MWHPR12MB1360.namprd12.prod.outlook.com (2603:10b6:300:12::7) by MWHPR12MB1166.namprd12.prod.outlook.com (2603:10b6:300:7::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.24; Wed, 30 Sep 2020 12:44:42 +0000 Received: from MWHPR12MB1360.namprd12.prod.outlook.com ([fe80::711e:ec6f:ba28:d3d0]) by MWHPR12MB1360.namprd12.prod.outlook.com ([fe80::711e:ec6f:ba28:d3d0%5]) with mapi id 15.20.3433.032; Wed, 30 Sep 2020 12:44:42 +0000 From: Slava Ovsiienko To: Phil Yang , Raslan Darawsheh , 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: AQHWgZ1x1fMoJvpDeUCclusQOWzAxKlhIL+AgAABwYCAHsMQAIABZc4Q Date: Wed, 30 Sep 2020 12:44:42 +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: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [95.164.10.10] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: db41aea7-c2a6-48a8-4d4e-08d8653e9aa2 x-ms-traffictypediagnostic: MWHPR12MB1166: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SHj+tiM21E8+SyneZ6klRF7HTSl5Fdms1Ma3nJhg6U7wb3mAYPRduyAn2Rr3vRbLZjsZFNWfKNbAw+1qRDBn6+kEAWADQIVkFMghA+UNN1kY6AdsKnqZA1MKk4ZcBsDOEpwZvMFDtR9AkG8DCunhT2sC7caOyuz9Nt0KVZp0cKYy/Cjn548n5HRGJRQTX/gtIazXX8D0y/2AKTohAqsELYcLTTL2GU0gNJydGGZK2EVpE7BbofKPO8UFToCAlxw1wbOPYOeyPe3i9L70SZpLsR8SuGSIu5Wl6XaRHyJG7+LWvwskHa/Y2m3WwSEUh0Dz5zXGQOsUfdlZ9kl+8zD0UNZsUhBDVFimLz9/JTaM4jnYQdyGYscg99dlHNtPvyJWpjBsYlIRYRd/iuqH/NIGHEerIxQxHKt6TiEhHsuCjK0/WuNdxUURCQ+VnTK07pYj x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR12MB1360.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(376002)(39860400002)(136003)(366004)(396003)(186003)(6636002)(966005)(45080400002)(7696005)(33656002)(76116006)(4326008)(55016002)(53546011)(6506007)(54906003)(52536014)(66946007)(8676002)(86362001)(8936002)(110136005)(478600001)(71200400001)(26005)(9686003)(64756008)(66446008)(66556008)(66476007)(2906002)(83080400001)(5660300002)(83380400001)(316002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: Bh8z7uU6A0EaBrECDVVFes++HEcCqjsC03BtU83hHLWVfci+x6xeb2M+VFUgfigOcI2y8ZSaw7Y26sgpWXO6U1prrF+DIAvvWDvFBmKymNhp/Nh/OfFU0S5XdhZr9NeD8+iVfCmPPp14kLx/fo+ULmjtsz6iaAQ447/Mdbphri7IZAlm9IaJqYFeDEksgiPLjlrXeeh+AErnmcY2P1p0ba/z/X+hRyb5Wb9yYSHKSf297RyvpPRirOXuNLJAzPpO7j3g2BxfoUeEKITs3HRC+TbZorphx8rMciVgm63+4WLj+FYaSKqM1gC+Jl3Cmq76Zu5Y0mcBW2e5fx0YAstNbu4JTn3NbJT4c/z8xFD8j9M192xZoe+W1LHh7FbSNU0mVzMhHdS6VFz2Ja3CIHdq1moLQoljBuWob3Fqp2uUj7QfIw3R0AiJzOGe0MDzTqBsOa8gzsnAXwWsgZseAgCXLJqMXYByBHfzF91vbuNrMPTZ3jUUI3t0pHMTXfHrVa3Es5eJjCiDX6P1VobtZnJpVMlOgUm3np54Q/RX5RFaPVVrxbhV7Go/J7kOcCPHbCsDWCUKOM13DzX6wf2p0HYxfsALjwRS1FVMxUaVgUqk25qRkbuOUT6q3rUDNC7lxAMxoMZ5snnGEL+1LqzHE98I5A== 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: MWHPR12MB1360.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: db41aea7-c2a6-48a8-4d4e-08d8653e9aa2 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Sep 2020 12:44:42.7801 (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: Km7KCpwiyM3C05d+ApmuFenSWzfKUDUDD6GMM+ONKdcA2FkgilRufEwwtlebFxsUpe3xgl7LhEZcnHkkNVhzYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1166 X-OriginatorOrg: Nvidia.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1601469886; bh=SQBWKxPV3JBKBXkO6cwGE7lMuxvFT2K7IzdMxiX5Sx8=; 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=C3ZUKKi+G/rjS/3lPq8w8YZvLY205URYM5CTPllKS6hgn1W60btQ5GyL8Xd5IkljD NBUj16V/ZIy4YH0ZlGHOZXgso6wiQzz5LnGkQso9Ie88QkM5mjS+jxNBVoM5Tvs7J9 wf8K7YsJgF6jjEXM5FF2eSqDq6danbNkVqv6497oOettCXqZqf7tgKv6oZWl8qtaS8 kZ/wOcXtaKdxlAN1gWMhS918nkt19WoLKnTUkRFiX7v3cgBAPjRtrD/WBDsAAf55d/ RRVBN1YdYBQSs22Ko4YKyXtM5OhlPfo2mGmP7qfSXTmbX0czJyRaPpqAnO4LfQOM76 CFYUt3rCyd4Sg== 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" Looks good to me, and we've checked the performance has no impact. Thank you. Acked-by: Viacheslav Ovsiienko > -----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 >=20 > Hi Raslan, >=20 > It seems that there are no more comments for this patch. > So shall we proceed further? >=20 > Thanks, > Phil Yang >=20 > > -----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 RQ > > 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