From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id CF802A034F; Wed, 10 Nov 2021 00:14:40 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5D29E40683; Wed, 10 Nov 2021 00:14:40 +0100 (CET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2061.outbound.protection.outlook.com [40.107.20.61]) by mails.dpdk.org (Postfix) with ESMTP id 3C99340142 for ; Wed, 10 Nov 2021 00:14:39 +0100 (CET) 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=wUKW5QtskhTz+ENxbzRGQUoeeyJwRnCcAn6o5GqqpaU=; b=BIszLtZcLqa5+lJaGZ48bQ/GBqVD09s2Sdjgl1WkOHXxh7TrmJT+cE2LdC++XMMa7XoiQWvDYTp/KAjCK7nxonlZGSJFuqK9LfTHlJpT/HI4A1lcnB6bJ0PfO1XC9c6InbcY1DrF2hYHIHXlvLEJFCs29NTF0kiJwIeLUHSRAmw= Received: from DB7PR05CA0033.eurprd05.prod.outlook.com (2603:10a6:10:36::46) by DB7PR08MB3018.eurprd08.prod.outlook.com (2603:10a6:5:20::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11; Tue, 9 Nov 2021 23:14:37 +0000 Received: from DB5EUR03FT055.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:36:cafe::d4) by DB7PR05CA0033.outlook.office365.com (2603:10a6:10:36::46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.15 via Frontend Transport; Tue, 9 Nov 2021 23:14:37 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass 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 DB5EUR03FT055.mail.protection.outlook.com (10.152.21.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14 via Frontend Transport; Tue, 9 Nov 2021 23:14:37 +0000 Received: ("Tessian outbound 4ce13939bd4a:v108"); Tue, 09 Nov 2021 23:14:37 +0000 X-CR-MTA-TID: 64aa7808 Received: from 54fbfc347d4b.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 59B2350D-BA04-4D7E-97AB-9EC109B3A832.1; Tue, 09 Nov 2021 23:14:29 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 54fbfc347d4b.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 09 Nov 2021 23:14:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ItVTIqucbAxCmlv3AK3XcZ7gVMkidxsndwrm39S71gACzGl3nk256xkejQdGIGzpz9qWEDtoUR6FpmuyJT1SlXiVkeiM3EAnwb2JjxBZ9xR2CNL3n6PwjRtaiDYiaTu/ez9fGlEUpyGAg4+vLn2sa9YGD1s/zYwDXYN2AxneXRwY9bdE//mSViG1YEnD+dfMWld9giw3iq1A0Cn1E2RQruD1Dq3/CuiQ3TtMpdJOa8qUO/EH9m1WOXrtu28cqHLyg7yh+7loEizgeXp9llFQCcQtPkjNcm9kDts1veByd60Ju3+tE3iXJrNIZNudQxehFdHxDzpNIAf+hZFv6F49WA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wUKW5QtskhTz+ENxbzRGQUoeeyJwRnCcAn6o5GqqpaU=; b=YXp59xsMGBtHRtSYHLMLlP6XO+aH9NcnLGlJ5Ih5w9LjrcmNdZ5uZpoeHn7wE+nrwcQPBEu5Gq41lLqmmGFs/RD4yHn7jUzTWEyhO92qrUMMMSLBM9XUwlcVGm4Ufh+Gc1pQiQchwUoJCJazYVuLI/he9d+gkQr1fgbcZjpx2INd3PkNeNHk8IHREdCBiodx9loD2HD7ojeX72emgrWlMa01O2+6spdVg/PeRJeS3qH3emOR/TESI5NcNXcnfNJZlHy68CF2RrF8x49DdFW7rf7/SwTC5xslkKxYnjAGHCuMoLK05Ysuwgp0yX454j6VxW/8yS82zApHyVXQ13w3yg== 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=wUKW5QtskhTz+ENxbzRGQUoeeyJwRnCcAn6o5GqqpaU=; b=BIszLtZcLqa5+lJaGZ48bQ/GBqVD09s2Sdjgl1WkOHXxh7TrmJT+cE2LdC++XMMa7XoiQWvDYTp/KAjCK7nxonlZGSJFuqK9LfTHlJpT/HI4A1lcnB6bJ0PfO1XC9c6InbcY1DrF2hYHIHXlvLEJFCs29NTF0kiJwIeLUHSRAmw= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by DB9PR08MB7038.eurprd08.prod.outlook.com (2603:10a6:10:2ce::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.15; Tue, 9 Nov 2021 23:14:24 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::8501:86ca:a393:17b7]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::8501:86ca:a393:17b7%9]) with mapi id 15.20.4690.015; Tue, 9 Nov 2021 23:14:24 +0000 From: Honnappa Nagarahalli To: Joyce Kong , "thomas@monjalon.net" , "david.marchand@redhat.com" , Ruifeng Wang , "konstantin.ananyev@intel.com" , "rsanford@akamai.com" , "erik.g.carrillo@intel.com" , "olivier.matz@6wind.com" , "yipeng1.wang@intel.com" , "sameh.gobriel@intel.com" , "bruce.richardson@intel.com" , "vladimir.medvedkin@intel.com" , "anatoly.burakov@intel.com" , "andrew.rybchenko@oktetlabs.ru" , "jerinj@marvell.com" , "declan.doherty@intel.com" , "ciara.power@intel.com" , "xiaoyun.li@intel.com" , "nicolas.chautru@intel.com" , "maryam.tahhan@intel.com" , "reshma.pattan@intel.com" , "cristian.dumitrescu@intel.com" , "Yigit, Ferruh" CC: "dev@dpdk.org" , nd , Honnappa Nagarahalli , nd Thread-Topic: [PATCH v1 10/12] app/testpmd: use compiler atomic builtins for port sync Thread-Index: AQHXh4gjlZsNWxZvTkOMImo7JB4Z9Kv8blSg Date: Tue, 9 Nov 2021 23:14:24 +0000 Message-ID: References: <20210802101847.3462-1-joyce.kong@arm.com> <20210802101847.3462-11-joyce.kong@arm.com> In-Reply-To: <20210802101847.3462-11-joyce.kong@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: C95BBBD64BFA8145B020C3982611CCEB.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: e2430853-6641-4a25-b82f-08d9a3d6b34a x-ms-traffictypediagnostic: DB9PR08MB7038:|DB7PR08MB3018: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:121;OLM:121; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: KIE+pzU81ZDisQUfyWHKv5GEJGhy038HDg+K1rrGS0RjHZBCof7xSRydjGUQ/Cxe2FSK7w5sVHkhzSasrljvSlssmWJCfETBdMkctZ9hV3VkVadAprvFVmhkG8nBrRqmYbCREeB4aySuWIVJYeZ64x7tBTVih5Ic+E6BhVjGorZ5slVKTYr2C47Xr1rQfuHE25D0g+A9nWvrgv+OUovpmagt8aSm0FrSk7RTBuEGfXr1E+aXzLEsjkg+zC8xm925o9y6G2g+43G8slLngAu8kcmBt6w73NkY1pJ6ppaKvKwIRbpeDJS87oHHW1qZ48Lu5XgGKMJiLGedbH/buY/XMZTUhEXPgnvSoUk4I+a+IQc6VzqsbST1tcCgZ5cSUv2zEP3553zTGcAuwwivb3D1NeLZblzsR+bJSPeLiWDAEVNI5rX6iISJhojrkVIRKQutX6muUhXR+dA2Ji68vAujY5PImljCqzhe5OS4AGN6wkVxBYdfqzyceSt7UIU0b1Ak52ZAk1L9tE8Q5GMhOHu0E7oqMWWqAEM6+ZSx1kYKQfuNNUBuavrhXqgeEL2fsBHtMz2BxIK1kD0N/LgLbqsJ8MoZZkM5A413b297lNd1IXRuII8ebzg6kjIf8XXF9Z+fhUi7hUrG5LBspP8QGSxabHNuujdmMDk66hB16+MHATicCYSqDPZ7Y90QyJVoctoaElqpKnPfzglb7KTTYz5/K11SWwsybHBPF7JwZ0Nnu6U= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(26005)(33656002)(66946007)(66476007)(76116006)(55016002)(5660300002)(2906002)(64756008)(66446008)(83380400001)(6506007)(316002)(122000001)(508600001)(921005)(38100700002)(7696005)(66556008)(110136005)(54906003)(7416002)(186003)(86362001)(38070700005)(71200400001)(9686003)(8936002)(8676002)(4326008)(52536014); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7038 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT055.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 1d28d49d-c093-45ba-e44a-08d9a3d6ab78 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7gr1eA0u9++1FXHbTWRnxoxJNppzwE1FYpcom7r1VPGjsvFplH4Qutue6a/o5IbPXbcVnBbX4rjc9AkOBeiG24k6GuqB6C4E7d/N9IVeNecNu9hs3mWB3IF+M9SjQc+ar6lBUJRmKXNk7WJVaa1nIFlXcRg4dU3/5s7sSYN/7jB6abwnEBXaDucs7JNVqtlVnIDUES+t6MFfO6UuMvL1YfhUnFmfqA/Kdt8XAp60Zqe/VmExCqGn7L48HG+e9YtPKbo0AsW8xgL0NP+jgJTlawQXnsgGv/GRELaXdrsbactdOhcgzZWg0q/MQ9QJbDfEK4JmUqPt2+rwLEQnXl2lLFD8cG15Ieuci2CwVQs4TsjM9qbebF4Dl7M1TseYPDngfYJNgGF8A16VZq+YeeizPi8Lwb47S+Zo6oTrspeSEcWhCdJOM15TFKlzkzcFJ5yWUvnEcbazzbPVVYHPsUml0C7qEpgXDvFzDYir0LBgbHgzcQc6NFwSXKqw7n5f2kSKARv3He9R80gDyYU0YyPWhyzL8xwtbKkCIAx6eBigssUndNk0UP6BchYyVfFsnGp0tq2Rzpp74NuyMhjFOEbJsfV8WnDmiE5/zursYaqULqw4dU9277yGypEyT9oUZdEbaZiU40NCQCrC+ioon9yuet1AlOcglelyQ1j8SgR94FuckZ+H8oplQW/8pC2xSDeahG7ntNDG+YG/J/ZEtdurycvnjwG47XLslHucbgxKCDg= 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)(46966006)(36840700001)(47076005)(316002)(110136005)(54906003)(356005)(8676002)(26005)(2906002)(81166007)(86362001)(33656002)(52536014)(6506007)(7696005)(82310400003)(55016002)(36860700001)(9686003)(508600001)(83380400001)(336012)(921005)(70206006)(5660300002)(186003)(8936002)(4326008)(70586007); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2021 23:14:37.5903 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e2430853-6641-4a25-b82f-08d9a3d6b34a 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: DB5EUR03FT055.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR08MB3018 Subject: Re: [dpdk-dev] [PATCH v1 10/12] app/testpmd: use compiler atomic builtins for port sync X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" + Ferruh Hi Joyce/Ferruh, I do not think the port_status changes need to be handled atomically. = The changes to port_status do not seem to be happening from multiple thread= s. It seems to be getting modified during initialization or through the tes= t pmd prompt. Do we really need atomic operations on port_status? >=20 > Replace rte_atomic16_cmpset operation with compiler atomic CAS operation > for port status sync in testpmd case. >=20 > Signed-off-by: Joyce Kong > Reviewed-by: Ruifeng Wang > --- > app/test-pmd/testpmd.c | 75 +++++++++++++++++++++++++++--------------- > 1 file changed, 48 insertions(+), 27 deletions(-) >=20 > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index > 6cbe9ba3c8..22579dd438 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -36,7 +36,6 @@ > #include > #include > #include > -#include > #include > #include > #include > @@ -2302,6 +2301,7 @@ setup_hairpin_queues(portid_t pi, portid_t p_pi, > uint16_t cnt_pi) > uint16_t peer_tx_port =3D pi; > uint32_t manual =3D 1; > uint32_t tx_exp =3D hairpin_mode & 0x10; > + uint16_t port_exp; >=20 > if (!(hairpin_mode & 0xf)) { > peer_rx_port =3D pi; > @@ -2347,10 +2347,11 @@ setup_hairpin_queues(portid_t pi, portid_t p_pi, > uint16_t cnt_pi) > if (diag =3D=3D 0) > continue; >=20 > + port_exp =3D RTE_PORT_HANDLING; > /* Fail to setup rx queue, return */ > - if (rte_atomic16_cmpset(&(port->port_status), > - RTE_PORT_HANDLING, > - RTE_PORT_STOPPED) =3D=3D 0) > + if (__atomic_compare_exchange_n(&(port->port_status), > + &port_exp, RTE_PORT_STOPPED, 0, > + __ATOMIC_RELAXED, __ATOMIC_RELAXED) > =3D=3D 0) > fprintf(stderr, > "Port %d can not be set back to stopped\n", > pi); > fprintf(stderr, "Fail to configure port %d hairpin queues\n", > @@ -2370,10 +2371,11 @@ setup_hairpin_queues(portid_t pi, portid_t p_pi, > uint16_t cnt_pi) > if (diag =3D=3D 0) > continue; >=20 > + port_exp =3D RTE_PORT_HANDLING; > /* Fail to setup rx queue, return */ > - if (rte_atomic16_cmpset(&(port->port_status), > - RTE_PORT_HANDLING, > - RTE_PORT_STOPPED) =3D=3D 0) > + if (__atomic_compare_exchange_n(&(port->port_status), > + &port_exp, RTE_PORT_STOPPED, 0, > + __ATOMIC_RELAXED, __ATOMIC_RELAXED) > =3D=3D 0) > fprintf(stderr, > "Port %d can not be set back to stopped\n", > pi); > fprintf(stderr, "Fail to configure port %d hairpin queues\n", > @@ -2444,6 +2446,7 @@ start_port(portid_t pid) > queueid_t qi; > struct rte_port *port; > struct rte_eth_hairpin_cap cap; > + uint16_t port_exp; >=20 > if (port_id_is_invalid(pid, ENABLED_WARN)) > return 0; > @@ -2454,8 +2457,10 @@ start_port(portid_t pid) >=20 > need_check_link_status =3D 0; > port =3D &ports[pi]; > - if (rte_atomic16_cmpset(&(port->port_status), > RTE_PORT_STOPPED, > - RTE_PORT_HANDLING) =3D=3D 0) > { > + port_exp =3D RTE_PORT_STOPPED; > + if (__atomic_compare_exchange_n(&(port->port_status), > + &port_exp, RTE_PORT_HANDLING, 0, > + __ATOMIC_RELAXED, __ATOMIC_RELAXED) > =3D=3D 0) { > fprintf(stderr, "Port %d is now not stopped\n", pi); > continue; > } > @@ -2487,8 +2492,10 @@ start_port(portid_t pid) > nb_txq + nb_hairpinq, > &(port->dev_conf)); > if (diag !=3D 0) { > - if (rte_atomic16_cmpset(&(port- > >port_status), > - RTE_PORT_HANDLING, RTE_PORT_STOPPED) > =3D=3D 0) > + port_exp =3D RTE_PORT_HANDLING; > + if (__atomic_compare_exchange_n(&(port- > >port_status), > + &port_exp, > RTE_PORT_STOPPED, 0, > + __ATOMIC_RELAXED, > __ATOMIC_RELAXED) =3D=3D 0) > fprintf(stderr, > "Port %d can not be set back > to stopped\n", > pi); > @@ -2518,10 +2525,11 @@ start_port(portid_t pid) > if (diag =3D=3D 0) > continue; >=20 > + port_exp =3D RTE_PORT_HANDLING; > /* Fail to setup tx queue, return */ > - if (rte_atomic16_cmpset(&(port- > >port_status), > - > RTE_PORT_HANDLING, > - RTE_PORT_STOPPED) > =3D=3D 0) > + if (__atomic_compare_exchange_n(&(port- > >port_status), > + &port_exp, > RTE_PORT_STOPPED, 0, > + __ATOMIC_RELAXED, > __ATOMIC_RELAXED) =3D=3D 0) > fprintf(stderr, > "Port %d can not be set back > to stopped\n", > pi); > @@ -2570,10 +2578,11 @@ start_port(portid_t pid) > if (diag =3D=3D 0) > continue; >=20 > + port_exp =3D RTE_PORT_HANDLING; > /* Fail to setup rx queue, return */ > - if (rte_atomic16_cmpset(&(port- > >port_status), > - > RTE_PORT_HANDLING, > - RTE_PORT_STOPPED) > =3D=3D 0) > + if (__atomic_compare_exchange_n(&(port- > >port_status), > + &port_exp, > RTE_PORT_STOPPED, 0, > + __ATOMIC_RELAXED, > __ATOMIC_RELAXED) =3D=3D 0) > fprintf(stderr, > "Port %d can not be set back > to stopped\n", > pi); > @@ -2607,17 +2616,21 @@ start_port(portid_t pid) > fprintf(stderr, "Fail to start port %d: %s\n", > pi, rte_strerror(-diag)); >=20 > + port_exp =3D RTE_PORT_HANDLING; > /* Fail to setup rx queue, return */ > - if (rte_atomic16_cmpset(&(port->port_status), > - RTE_PORT_HANDLING, RTE_PORT_STOPPED) > =3D=3D 0) > + if (__atomic_compare_exchange_n(&(port- > >port_status), > + &port_exp, RTE_PORT_STOPPED, 0, > + __ATOMIC_RELAXED, > __ATOMIC_RELAXED) =3D=3D 0) > fprintf(stderr, > "Port %d can not be set back to > stopped\n", > pi); > continue; > } >=20 > - if (rte_atomic16_cmpset(&(port->port_status), > - RTE_PORT_HANDLING, RTE_PORT_STARTED) =3D=3D 0) > + port_exp =3D RTE_PORT_HANDLING; > + if (__atomic_compare_exchange_n(&(port->port_status), > + &port_exp, RTE_PORT_STARTED, 0, > + __ATOMIC_RELAXED, __ATOMIC_RELAXED) > =3D=3D 0) > fprintf(stderr, "Port %d can not be set into started\n", > pi); >=20 > @@ -2697,6 +2710,7 @@ stop_port(portid_t pid) > int need_check_link_status =3D 0; > portid_t peer_pl[RTE_MAX_ETHPORTS]; > int peer_pi; > + uint16_t port_exp; >=20 > if (port_id_is_invalid(pid, ENABLED_WARN)) > return; > @@ -2722,8 +2736,10 @@ stop_port(portid_t pid) > } >=20 > port =3D &ports[pi]; > - if (rte_atomic16_cmpset(&(port->port_status), > RTE_PORT_STARTED, > - RTE_PORT_HANDLING) =3D=3D 0) > + port_exp =3D RTE_PORT_STARTED; > + if (__atomic_compare_exchange_n(&(port->port_status), > + &port_exp, RTE_PORT_HANDLING, 0, > + __ATOMIC_RELAXED, __ATOMIC_RELAXED) > =3D=3D 0) > continue; >=20 > if (hairpin_mode & 0xf) { > @@ -2749,8 +2765,10 @@ stop_port(portid_t pid) > RTE_LOG(ERR, EAL, "rte_eth_dev_stop failed for port > %u\n", > pi); >=20 > - if (rte_atomic16_cmpset(&(port->port_status), > - RTE_PORT_HANDLING, RTE_PORT_STOPPED) =3D=3D 0) > + port_exp =3D RTE_PORT_HANDLING; > + if (__atomic_compare_exchange_n(&(port->port_status), > + &port_exp, RTE_PORT_STOPPED, 0, > + __ATOMIC_RELAXED, __ATOMIC_RELAXED) > =3D=3D 0) > fprintf(stderr, "Port %d can not be set into > stopped\n", > pi); > need_check_link_status =3D 1; > @@ -2788,6 +2806,7 @@ close_port(portid_t pid) { > portid_t pi; > struct rte_port *port; > + uint16_t port_exp; >=20 > if (port_id_is_invalid(pid, ENABLED_WARN)) > return; > @@ -2813,8 +2832,10 @@ close_port(portid_t pid) > } >=20 > port =3D &ports[pi]; > - if (rte_atomic16_cmpset(&(port->port_status), > - RTE_PORT_CLOSED, RTE_PORT_CLOSED) =3D=3D 1) { > + port_exp =3D RTE_PORT_CLOSED; > + if (__atomic_compare_exchange_n(&(port->port_status), > + &port_exp, RTE_PORT_CLOSED, 0, > + __ATOMIC_RELAXED, __ATOMIC_RELAXED)) { > fprintf(stderr, "Port %d is already closed\n", pi); > continue; > } > -- > 2.17.1