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 29FFEA04BC; Tue, 29 Sep 2020 17:23:12 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5649A1D6A5; Tue, 29 Sep 2020 17:23:10 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60055.outbound.protection.outlook.com [40.107.6.55]) by dpdk.org (Postfix) with ESMTP id E4B2D1D5B6 for ; Tue, 29 Sep 2020 17:23:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Gkt0MM/K3ht5JLml9WvSqvD+UQl+JJ7MqLYcV+FHC7s=; b=88mcAaXhuxZzhJ0D0h2OmBn+4viiSAp9Div2GPNckkDF4eRPRIpIyO+OwUmNo5BBX32rTzeKsLTKGLXzzPyMXpLw8LTM+i9PdJ7R0RLpL7ZHVodQDuDMFmmFPujpYDTlrg2ZgLG60PN2+mXKZrXz6yLA1enASL6vag3erVoMqLk= Received: from AM6P191CA0003.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:8b::16) by PR3PR08MB5708.eurprd08.prod.outlook.com (2603:10a6:102:84::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.20; Tue, 29 Sep 2020 15:23:04 +0000 Received: from AM5EUR03FT010.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:8b:cafe::d6) by AM6P191CA0003.outlook.office365.com (2603:10a6:209:8b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3433.32 via Frontend Transport; Tue, 29 Sep 2020 15:23:04 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dpdk.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT010.mail.protection.outlook.com (10.152.16.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.21 via Frontend Transport; Tue, 29 Sep 2020 15:23:04 +0000 Received: ("Tessian outbound 7fc8f57bdedc:v64"); Tue, 29 Sep 2020 15:23:04 +0000 X-CR-MTA-TID: 64aa7808 Received: from cf7bed2dd0ac.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 9C757295-BB52-4227-8B35-B3B3389A4105.1; Tue, 29 Sep 2020 15:22:59 +0000 Received: from EUR03-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id cf7bed2dd0ac.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 29 Sep 2020 15:22:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZHCdUW7a1koOvbc/rAnrcjV3YJNQ4PXNVUGXwwb4d+KTy59eVA4H8EYco+9TyhxFdQnKxH+y/8Ghdk1YCi/E8tPpiAA7Wr57lCr1tZFJrxH32YG8TrwuYBd2cbRa0+nafp4P6SRA82BZJS4zygOxxv/U1F/nv3zL9VmjsRV6Y+nM5eH/a/KFWaH8+zJeakGtwOtrS7z4CTY+pdWUULDv2enrluWUwRqg6PjgXzmtar7iBqtBFnZzwPuXOTk3eFAfSC5VFiPaY/jEQmzAl0XSNu5cN4HtCRl5RsdMHIOExpo5Sj2r3nCZ6laYCmVIn4qsDudQrNHyICvzk+8GVZiU1A== 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=Gkt0MM/K3ht5JLml9WvSqvD+UQl+JJ7MqLYcV+FHC7s=; b=HMdaiUSMxfZs3HBON+UR3WpnvZDrBRDmbK7ytzHpY4NWOMfa63+aVmQh9+a3trau+pgRLRcw9eoafe9sGVHEu8H4nTI/z+nfYi/KecVao4ICH+TuRXI1bDnhoI+vL3Imbn9oeLey224TQs83kzy4pr6wH+I/+dWy0vTGIZhLkJEHHW2Ub7SVzeGIN2rbBi8qAy+4EAXDdSSu0eoK23yJKoYhOYliOdGLzvC5KEEhiRrpl5YWsTkV+SidXQsX+GV1Q2cKhC90dF/YKFMmtq3eD37cuKXGDmvv07pPLbi6jEmeQycaAv2+ppdNAqRdZWSRZT+KIdtc1WHqBxn8QDgfFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Gkt0MM/K3ht5JLml9WvSqvD+UQl+JJ7MqLYcV+FHC7s=; b=88mcAaXhuxZzhJ0D0h2OmBn+4viiSAp9Div2GPNckkDF4eRPRIpIyO+OwUmNo5BBX32rTzeKsLTKGLXzzPyMXpLw8LTM+i9PdJ7R0RLpL7ZHVodQDuDMFmmFPujpYDTlrg2ZgLG60PN2+mXKZrXz6yLA1enASL6vag3erVoMqLk= Received: from DB7PR08MB3865.eurprd08.prod.outlook.com (2603:10a6:10:74::25) by DB6PR0802MB2390.eurprd08.prod.outlook.com (2603:10a6:4:9f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.23; Tue, 29 Sep 2020 15:22:53 +0000 Received: from DB7PR08MB3865.eurprd08.prod.outlook.com ([fe80::519c:72bd:e189:625b]) by DB7PR08MB3865.eurprd08.prod.outlook.com ([fe80::519c:72bd:e189:625b%7]) with mapi id 15.20.3412.029; Tue, 29 Sep 2020 15:22:53 +0000 From: Phil Yang To: "rasland@nvidia.com" , "matan@nvidia.com" , 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: AQHWgZ1xu0CbTGaD1EenfiRDEKE3S6lhIL+AgAABwYCAHre1MA== Date: Tue, 29 Sep 2020 15:22: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: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 27B5F249B3F6C74EA8EB4A508B49D578.0 x-checkrecipientchecked: true Authentication-Results-Original: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [114.85.108.161] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c7b33a23-e7f8-4225-9306-08d8648b8f9c x-ms-traffictypediagnostic: DB6PR0802MB2390:|PR3PR08MB5708: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:6790;OLM:6790; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: O60aaBmPcpORGOfVDyLDYOaP6FVULeweQ6A1hk+kYOAkcXcPBkkvFrSTPN9Ytbq4rHn+n0RErvEl/7TzIBmp7Pxzj48zmSlXSjthZK3650jAHPSrq7ytjjBQTjP6fOkhdWbMWdHy6SlCnHjZ+SzzG6q+KbYgdOVWQqYZfX6Y/4gNNWevM2AviQlIWV7NPvHHj7AUHduzhMF5q5QSHsMLTCEQ28TE0jsBboF72HQNCplNTOEu4KdCgCuuZZuXAhcv9YKmxn0MoTmtUG7Qedtikf1CkfCJpd7VclPxr/c/tqY6++2vvBcGspx58t+4fZjYsNGE2ubZKTWEZoAaLoolR3trDSjmomtfqNS4Wq/EtWuIA9hkT34nPvGy4jjvxqTuYmy3WB3jBaGywn0UEyZAZFLhuay7ZHoeDIhQTGkifadPdkPDkyHYDpDghOg+Mkht X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR08MB3865.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(376002)(396003)(39860400002)(346002)(366004)(83380400001)(76116006)(966005)(2906002)(33656002)(66556008)(66476007)(66946007)(64756008)(52536014)(86362001)(83080400001)(71200400001)(66446008)(5660300002)(4326008)(8936002)(45080400002)(316002)(54906003)(110136005)(8676002)(478600001)(186003)(53546011)(26005)(55016002)(6506007)(9686003)(7696005); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: 8w5HZAWkRALaKYzVbFKxOIm8z8C4GoMZKPU2AlWElczQwOgm6MWMqAfK+MUIuixTb3mcKBOpb3Z2pd0xDQRvUMC5ar/BGV1FEXWx+4aOXEa3niMYrtAbdtjIFyGKY8fMV/jHokEhhWlkPOi8u0TcHYjAfZ/H20QRFqC9NRupdumma4zsHU5IHqgyCJsagw/PYQwWl+tb9nsZsq1jS6hYT9C0zovCRR2fMED2B8Ytaq5izhKrprJF0gqIZfPGIjcFB8NrdsMkBowwh1qYkb31dja22L0gMEnwGplSqhaa0Fq2WjdOm8e0Zrs4Ja9VFd8vetBnRUeVVBZrRqdwHibWZ2Px+MhZTVj0pNxY0lHWvhi48Dx/lWGjApksvraASNLcuV75wMLkEckfQ6HrOlHYcyJGwbLfXQaRcngum9uKy5C5DRxyIwSZPRPZBwlJGFXT4fFBTczvi9fRhu1Ws+VioFvRjZSWqGcaR203IqXXcxQzFPjC2HvF5mD5pykntoBbZ3GD/iXNxVSgi3iWVbuLul9CwQswEzZQJZz4+aZcTBnmE2Jj8c0zc8JD9IzsmIgxL1j9gmkEnFHNJ1+bJCdtAKdOq9tUw0ih9wTKwh0e2yYU2fHtsUYVMXHI/zAAgG+nIyr8rgg9O6WfoflAsfcyUA== Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2390 Original-Authentication-Results: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: d83a402f-3aa2-4aae-ab2e-08d8648b88da X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aEN9yAJTGKdaJx8MLEbMoblggks6waJc8GncV0WRWlFpFoHGisOWiLoWfvPvJHByC+uLONZRMfoEBcICYsZKfizcA7VgMZtsiGaWYSdxggHLkgqXmM4WfhlobxiuQUM52H6afvHGO9IGl9G/tCqWNMUWF99k0Oqy513b/4FsmouN/lqhYUnNjuSnIbcJZ+gohTNyjWnduPK04A+B/XDoqC+FeJtg+tbzsZAy+4LaTS7b1UjjYs7E0WjocKowB3FzcBtmf9ND2CLESvmYslXt+CRaZZ7twrcOL9gd2sD5CfmAyB5lhHI3tRSNZNKljJWU3l/S1cm2foF+9eBTDL2j1uUDCfXZ9v1ltRvWvbRxIOWb9HjKk0t3bCx6WnCKOfRuAuNLm0jlWCHHaFjPLqMaLcmhWjFEbU+hqZYrcxQQUYIERZS4fPiA67g+6uMhh5zKBQMZ8wGrYYTSEYRedi2xA956L5qB+Cf02rYeNefN0mHwJ5fR2n5HJdKwSHyykwYySjeJBJJhKolC6aZwypRkgw== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(376002)(396003)(39860400002)(346002)(136003)(46966005)(336012)(82740400003)(83380400001)(33656002)(47076004)(110136005)(356005)(81166007)(83080400001)(36906005)(316002)(4326008)(2906002)(8936002)(8676002)(82310400003)(45080400002)(478600001)(52536014)(86362001)(5660300002)(54906003)(70586007)(70206006)(6506007)(966005)(9686003)(7696005)(186003)(26005)(55016002)(53546011); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2020 15:23:04.4941 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c7b33a23-e7f8-4225-9306-08d8648b8f9c X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5708 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" 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 RQ > buffer refcnt >=20 > > > > > > > > > > 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 >=20 > Acked-by: Alexander Kozyrev >=20 > > > > > --- > > > 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%40 > nv > > idia. > > > > > > com%7Cf16ba4e8cfb145f5d82008d85529348e%7C43083d15727340c1b7db39e > f > > d9ccc > > > > > > 17a%7C0%7C0%7C637352982762038088&sdata=3D0HzTxbzh0Dqk0hZ5PIgE > 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