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 B6C77A0503; Fri, 6 May 2022 17:12:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9E8C140395; Fri, 6 May 2022 17:12:44 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50059.outbound.protection.outlook.com [40.107.5.59]) by mails.dpdk.org (Postfix) with ESMTP id 11AA14014F for ; Fri, 6 May 2022 17:12:42 +0200 (CEST) ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=ibiOOae7CIL1rixHjDpMRAAu45oMOHupUakuisjDI+Sjhnv9L3pxW0qbIbPDJNPlJ7Zh0LFUylCcLiNbku2g9QgXHtGpbjTiY0dFZ0+N+QIP5gcQWr+UsA6hXsrqby3mLR6Mo244G08YzdvEmMcjbmH7Kx6hUX//EWCp64C2ZFwxEdz9O4+88Wt5JXd6ZNIwZ3QiD508R3ZQNpdk1b0AgSHcelBwMHmltiUtfdmS9iymezp85xzkk5/S+1q1p3ggUiZnxQ5WIW8sCY1eUIFEfS64TC6xuu7IBPCLwnCAj1j53LWpowBVfMBWmLxbfGAFWwoRWAz3TKsWLJBueLCv+g== ARC-Message-Signature: i=2; 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=WfDmHfbbohQheoVS0bg8lB5p/i1e6IKbTkdJiUlUDQc=; b=KmCNnpGjVvlslRF85HJPDU84dtNScrmEjCn1sOLK+So1TzKcBnBVgBsU5mmG9mTWbCzHGamZnlb/v2u0NCKzuLX8PqGya6nPUG8mo5QlGLwBhUbUrTocGNgMVDlwXRFx/st+84shnYosrnRbOyWh0A+V0SeHou08b2dJmrAEO8Zcy7U8qgfGjlT/hzpXP6BsMw0Zf3XKE3r0VKumKUtNU/mPd69VgMJIhlgyj5vqB6YcOSyKT/q6t5a8yP1x8qqOY1QBr8oxGHbqTl64APanY8GE0aIPnS7Red1+IoPStaGWRMXj1n7NskccCc+RYiN6oIEsNnCJjJt3HcbEj+jmIA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=dpdk.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) 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=WfDmHfbbohQheoVS0bg8lB5p/i1e6IKbTkdJiUlUDQc=; b=OSZE+2HT45Tf32mhw2nMOVKLb6H3mzitYr/wj4SU21MjwtPJM3t0UVaUrBUZaAkbBniJy9dWV3xexQJ/2bGYfwP2/8Wz+l5ldYO2Us/NBGPjsh1O6fPegv1aNMRgk/uz5lA9dZhY68d8G/Qa+aD1bH7Lc/3XUrvrHho47xhUWgY= Received: from AM6PR0502CA0044.eurprd05.prod.outlook.com (2603:10a6:20b:56::21) by AM9PR08MB6306.eurprd08.prod.outlook.com (2603:10a6:20b:2d6::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.18; Fri, 6 May 2022 15:12:40 +0000 Received: from AM5EUR03FT012.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:56:cafe::e8) by AM6PR0502CA0044.outlook.office365.com (2603:10a6:20b:56::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.20 via Frontend Transport; Fri, 6 May 2022 15:12:40 +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 AM5EUR03FT012.mail.protection.outlook.com (10.152.16.161) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.15 via Frontend Transport; Fri, 6 May 2022 15:12:39 +0000 Received: ("Tessian outbound ac9bb5dd84f6:v118"); Fri, 06 May 2022 15:12:39 +0000 X-CR-MTA-TID: 64aa7808 Received: from ea3a849979c6.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 733BD241-19B2-4930-9FE1-55563F440835.1; Fri, 06 May 2022 15:12:33 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ea3a849979c6.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 06 May 2022 15:12:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d2bmUPVWDjwcKy/gQ+Exlwe8HD03znFGrgkvxNWIOuSvIJTwUZ0KdyFYC+H5n2phHGvHyJ4D8s8EhFILEH4aFcqpo0HAM6Ru9xBFXX1tviPUTT6G3uTTnbfYwH9flc+/0ASp0/UAsi1pW0Cbb7i7AJgCEIJlM+T5oRB2Ut/EHeyOlieBi8FWqz3kOX3NSw7C6+E7QJeP9ProE5Arde806eb6UypnR7LNVAv6n4mjwlJ0rjcdpCqmNqTNckwO+pyaNVH4IE2Hlgigh8Vgp5wzJK0dbRqlHLDl3KeWT7t9Li9RF9CD95fr2llB8Be3BRY9fHMm6Ub0lXvB7p/WKGtr4w== 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=WfDmHfbbohQheoVS0bg8lB5p/i1e6IKbTkdJiUlUDQc=; b=NUfUj0A83MqIW4n7alPi8fUGsWnnrC3q7vAiykJ7x+nxGVniSLlhwAjpXc6PKW+X/SArckiinVtKKapbVXbbdYGrE38PTN6rqJVL1AIScKimn3TfBODNtUT5A5XyX+XM2rHsKbn4uJ15u6KmRY6mJ6hekOA3fS0SxybtXZBMQEIc2hjNdHdW0Loy5GfHIZpB3wcIjegRHoiq/B15T61vLebHrRSpDm54vlh0Y7uGkQATsVP1xfb7/5LXVddETl6VGT+vOMnnumR66HIsyiAQx3g9kjWXkBcNGDp3g+3QhEdey89iMJjA16HQ1776xhirW3BzTxBNSpbxAmrGQgE0+Q== 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=WfDmHfbbohQheoVS0bg8lB5p/i1e6IKbTkdJiUlUDQc=; b=OSZE+2HT45Tf32mhw2nMOVKLb6H3mzitYr/wj4SU21MjwtPJM3t0UVaUrBUZaAkbBniJy9dWV3xexQJ/2bGYfwP2/8Wz+l5ldYO2Us/NBGPjsh1O6fPegv1aNMRgk/uz5lA9dZhY68d8G/Qa+aD1bH7Lc/3XUrvrHho47xhUWgY= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by PR3PR08MB5787.eurprd08.prod.outlook.com (2603:10a6:102:90::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.25; Fri, 6 May 2022 15:12:32 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::44cf:1f8d:e477:1f99]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::44cf:1f8d:e477:1f99%6]) with mapi id 15.20.5206.027; Fri, 6 May 2022 15:12:32 +0000 From: Honnappa Nagarahalli To: Tyler Retzlaff CC: Stephen Hemminger , "dev@dpdk.org" , nd , "Ananyev, Konstantin" , nd Subject: RE: [RFC] rte_ring: don't use always inline Thread-Topic: [RFC] rte_ring: don't use always inline Thread-Index: AQHYYNHmId4l1/D/6UKz4cX05KFGVK0Q5ZpwgACNbQCAAIIRMA== Date: Fri, 6 May 2022 15:12:32 +0000 Message-ID: References: <20220505224547.394253-1-stephen@networkplumber.org> <20220506072434.GA19777@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> In-Reply-To: <20220506072434.GA19777@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: E96B2FD3E08B1D4D8DF78D2E34EFA77A.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-Office365-Filtering-Correlation-Id: 28f8efb5-e85f-4c4c-ab90-08da2f72dc92 x-ms-traffictypediagnostic: PR3PR08MB5787:EE_|AM5EUR03FT012:EE_|AM9PR08MB6306:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: pxidfdK8NAqvaIixjvrvW74a4mMhwS869tz9UVEKtN7xnEn8Il4/4EpNUDXzms0k2H7qRnPYB14N9qCnJ41Ck4Dit17z346H5c7BOAqxaC781u7q2NsH3S33Q0UWBDf8b+NOQC48NriOYH0OjMCLwZZc33PRGowbPvgmQDp988Scy4ZzIw+dWf+MKBlTy6b833rgZRWfcXxH2WePDvZqpa1777pB7ERolYNDn/KGllMNq7HFwgXQAQCFiA82bZShR3VunfKGiYrJE/ZUFIYC8btNoA2p5xQU+fRR6vnVb6Dq8PxBiizmHBUiyCXIMUKRUqITxC24QCbwI2iqUBrBZof7FrTAwSxpbrAzz7eigP3/nQdvYrvxOHygThA0YPGyJgwj4sYo1oeKwIezGCEcsVO216G4yIvqQdm2SmaPQPjUGwMOM0hgqOkyBDA+qGFDYjLiB9kzDEm4LGy65NOp+SBoSvZTTrLSHB+RrxVD6/nXfpiUcwZSo7Cko5CybMi1Qc/nKrQJlSjFo+M+qdOQzALGtnW64/OlAKTUY1V96dlK/OPpW3Aa/Bvcx5o+h9+0gnHw2fAH5YsGakPO5YMDm8ZPjlqLch9GJnF+80n+DjvQxXLUZJcnLJrLOSa/2uBPIXDSxbjOIQlVUJ2hdz+3IWz8FzhfBMEUgHTpbfDRqI8+4CEEyGxqJoIO6PAqD5oYJorlbSNDaw901JJEFhK93w== 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:(13230001)(4636009)(366004)(55016003)(76116006)(83380400001)(508600001)(71200400001)(52536014)(8936002)(6916009)(26005)(7696005)(64756008)(8676002)(66946007)(66556008)(2906002)(66446008)(66476007)(33656002)(54906003)(4326008)(6506007)(122000001)(38100700002)(38070700005)(86362001)(316002)(53546011)(186003)(5660300002)(30864003)(9686003); 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: PR3PR08MB5787 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: AM5EUR03FT012.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 93b440b4-4f68-4ce2-6e50-08da2f72d7fa X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lCndES9VJv7Dn88WO2pL98T7Rgl0ecgbVm5eNBZl2Qn3lX0P0oCIKFJWLqUOz+Q+UmO1IcIgb+VyBG8u2pyIUxzRxx9sKsB9FxC913XI6YOrwgEJedH18qFbgremc/Tqt9q0/HaZhlcnWXQ1bxwIoXe5nTVplGxJTfNKmGpqT02ELAK8l43X0ZZT7XEKQUwtQJEwLfjqqBgViMGKXXbCEz6hLRnhDsI4MTJrRU4JIlzHX1ZPSRCBN+PDeWqZIW5c0FpEvOV9ZeIIXODszSz444z0zLDh2FVLPUvU8/EwM17/vI+vul/mbv5+r3qV485ajW/uBUGwVgtIgIc1Cnq5pVbXwhtHvaRpwIu8ujhSawpt2ymDVBpwu3prgF8mCqV8Q135I4sfmc5U1JyJPAuz3Z5+SMWlObJY7s8itDqmwA05WQTj3KKhS3shi345WFW/9qt28vaJ1lDxayWdhviT/EyXVrBhK0v8mMAGtu7xE/4Br7NwoqMihS8KGdj/EEN6L6neXpuQK+2apM62xjjeXPrlhEMVwXxWrR5aktNVg7CR82gVjldMZ21UI95eNUY34jXk0x8BLh+kW5QaFME4cjjJgTKv8Je44a+/Gxee4fJdX076Q/5JKQ8kRfUi0JlXtYLD6hu8gL5SASIQ9vRPMPTzDZI9gJx5W4A239ie1lk= 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:(13230001)(4636009)(40470700004)(46966006)(36840700001)(81166007)(36860700001)(53546011)(6506007)(7696005)(86362001)(2906002)(30864003)(8936002)(356005)(83380400001)(33656002)(52536014)(26005)(508600001)(40460700003)(55016003)(336012)(5660300002)(9686003)(54906003)(82310400005)(47076005)(186003)(6862004)(8676002)(4326008)(316002)(70586007)(70206006); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2022 15:12:39.8785 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 28f8efb5-e85f-4c4c-ab90-08da2f72dc92 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: AM5EUR03FT012.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6306 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 >=20 > On Thu, May 05, 2022 at 10:59:32PM +0000, Honnappa Nagarahalli wrote: > > Thanks Stephen. Do you see any performance difference with this change? >=20 > as a matter of due diligence i think a comparison should be made just to = be > confident nothing is regressing. >=20 > i support this change in principal since it is generally accepted best pr= actice to > not force inlining since it can remove more valuable optimizations that t= he > compiler may make that the human can't see. > the optimizations may vary depending on compiler implementation. >=20 > force inlining should be used as a targeted measure rather than blanket o= n > every function and when in use probably needs to be periodically reviewed= and > potentially removed as the code / compiler evolves. >=20 > also one other consideration is the impact of a particular compiler's for= ce > inlining intrinsic/builtin is that it may permit inlining of functions wh= en not > declared in a header. i.e. a function from one library may be able to be = inlined > to another binary as a link time optimization. although everything here i= s in a > header so it's a bit moot. >=20 > i'd like to see this change go in if possible. Like Stephen mentions below, I am sure we will have a for and against discu= ssion here. As a DPDK community we have put performance front and center, I would prefe= r to go down that route first. >=20 > thanks >=20 > > > > > -----Original Message----- > > > From: Stephen Hemminger > > > Sent: Thursday, May 5, 2022 5:46 PM > > > To: dev@dpdk.org > > > Cc: Stephen Hemminger > > > Subject: [RFC] rte_ring: don't use always inline > > > > > > Forcing compiler to inline with always inline can lead to worse and > > > sometimes broken code. Better to use the standard inline keyword and > > > let compiler have some flexibilty. > > > > > > Signed-off-by: Stephen Hemminger > > > --- > > > > > > This is RFC because the use of large scale inlining is debatable. > > > This change may slow things down on some versions of Gcc and > architectures. > > > > > > If you follow Linux kernel list, this has been a debated topic over > > > the years, with opinions for and against inlining. > > > Combined with bad inlining in various Gcc versions. > > > > > > lib/ring/rte_ring.h | 36 ++++++++++++++++++-----------------= - > > > lib/ring/rte_ring_c11_pvt.h | 6 +++--- > > > lib/ring/rte_ring_elem.h | 36 ++++++++++++++++++-----------------= - > > > 3 files changed, 39 insertions(+), 39 deletions(-) > > > > > > diff --git a/lib/ring/rte_ring.h b/lib/ring/rte_ring.h index > > > 980e92e59493..4a2588beed9e 100644 > > > --- a/lib/ring/rte_ring.h > > > +++ b/lib/ring/rte_ring.h > > > @@ -226,7 +226,7 @@ void rte_ring_dump(FILE *f, const struct rte_ring > *r); > > > * @return > > > * The number of objects enqueued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_mp_enqueue_bulk(struct rte_ring *r, void * const *obj_table= , > > > unsigned int n, unsigned int *free_space) { @@ - > > > 249,7 +249,7 @@ rte_ring_mp_enqueue_bulk(struct rte_ring *r, void * > > > const *obj_table, > > > * @return > > > * The number of objects enqueued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_sp_enqueue_bulk(struct rte_ring *r, void * const *obj_table= , > > > unsigned int n, unsigned int *free_space) { @@ - > > > 276,7 +276,7 @@ rte_ring_sp_enqueue_bulk(struct rte_ring *r, void * > > > const *obj_table, > > > * @return > > > * The number of objects enqueued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_enqueue_bulk(struct rte_ring *r, void * const *obj_table, > > > unsigned int n, unsigned int *free_space) { @@ -298,7 > > > +298,7 @@ rte_ring_enqueue_bulk(struct rte_ring *r, void * const > > > +*obj_table, > > > * - 0: Success; objects enqueued. > > > * - -ENOBUFS: Not enough room in the ring to enqueue; no object i= s > > > enqueued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_mp_enqueue(struct rte_ring *r, void *obj) { > > > return rte_ring_mp_enqueue_elem(r, &obj, sizeof(void *)); @@ > > > -315,7 > > > +315,7 @@ rte_ring_mp_enqueue(struct rte_ring *r, void *obj) > > > * - 0: Success; objects enqueued. > > > * - -ENOBUFS: Not enough room in the ring to enqueue; no object i= s > > > enqueued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_sp_enqueue(struct rte_ring *r, void *obj) { > > > return rte_ring_sp_enqueue_elem(r, &obj, sizeof(void *)); @@ > > > -336,7 > > > +336,7 @@ rte_ring_sp_enqueue(struct rte_ring *r, void *obj) > > > * - 0: Success; objects enqueued. > > > * - -ENOBUFS: Not enough room in the ring to enqueue; no object i= s > > > enqueued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_enqueue(struct rte_ring *r, void *obj) { > > > return rte_ring_enqueue_elem(r, &obj, sizeof(void *)); @@ -360,7 > > > +360,7 @@ rte_ring_enqueue(struct rte_ring *r, void *obj) > > > * @return > > > * The number of objects dequeued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_mc_dequeue_bulk(struct rte_ring *r, void **obj_table, > > > unsigned int n, unsigned int *available) { @@ -384,7 +384,7 > @@ > > > rte_ring_mc_dequeue_bulk(struct rte_ring *r, void **obj_table, > > > * @return > > > * The number of objects dequeued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_sc_dequeue_bulk(struct rte_ring *r, void **obj_table, > > > unsigned int n, unsigned int *available) { @@ -411,7 +411,7 > @@ > > > rte_ring_sc_dequeue_bulk(struct rte_ring *r, void **obj_table, > > > * @return > > > * The number of objects dequeued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_dequeue_bulk(struct rte_ring *r, void **obj_table, unsigned= int n, > > > unsigned int *available) > > > { > > > @@ -434,7 +434,7 @@ rte_ring_dequeue_bulk(struct rte_ring *r, void > > > **obj_table, unsigned int n, > > > * - -ENOENT: Not enough entries in the ring to dequeue; no object= is > > > * dequeued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_mc_dequeue(struct rte_ring *r, void **obj_p) { > > > return rte_ring_mc_dequeue_elem(r, obj_p, sizeof(void *)); @@ > > > -452,7 > > > +452,7 @@ rte_ring_mc_dequeue(struct rte_ring *r, void **obj_p) > > > * - -ENOENT: Not enough entries in the ring to dequeue, no object= is > > > * dequeued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_sc_dequeue(struct rte_ring *r, void **obj_p) { > > > return rte_ring_sc_dequeue_elem(r, obj_p, sizeof(void *)); @@ > > > -474,7 > > > +474,7 @@ rte_ring_sc_dequeue(struct rte_ring *r, void **obj_p) > > > * - -ENOENT: Not enough entries in the ring to dequeue, no object= is > > > * dequeued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_dequeue(struct rte_ring *r, void **obj_p) { > > > return rte_ring_dequeue_elem(r, obj_p, sizeof(void *)); @@ -681,7 > > > +681,7 @@ struct rte_ring *rte_ring_lookup(const char *name); > > > * @return > > > * - n: Actual number of objects enqueued. > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_mp_enqueue_burst(struct rte_ring *r, void * const *obj_tabl= e, > > > unsigned int n, unsigned int *free_space) { @@ - > > > 704,7 +704,7 @@ rte_ring_mp_enqueue_burst(struct rte_ring *r, void * > > > const *obj_table, > > > * @return > > > * - n: Actual number of objects enqueued. > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_sp_enqueue_burst(struct rte_ring *r, void * const *obj_tabl= e, > > > unsigned int n, unsigned int *free_space) { @@ - > > > 731,7 +731,7 @@ rte_ring_sp_enqueue_burst(struct rte_ring *r, void * > > > const *obj_table, > > > * @return > > > * - n: Actual number of objects enqueued. > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_enqueue_burst(struct rte_ring *r, void * const *obj_table, > > > unsigned int n, unsigned int *free_space) { @@ -759,7 > > > +759,7 @@ rte_ring_enqueue_burst(struct rte_ring *r, void * const > > > +*obj_table, > > > * @return > > > * - n: Actual number of objects dequeued, 0 if ring is empty > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_mc_dequeue_burst(struct rte_ring *r, void **obj_table, > > > unsigned int n, unsigned int *available) { @@ -784,7 +784,7 > @@ > > > rte_ring_mc_dequeue_burst(struct rte_ring *r, void **obj_table, > > > * @return > > > * - n: Actual number of objects dequeued, 0 if ring is empty > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_sc_dequeue_burst(struct rte_ring *r, void **obj_table, > > > unsigned int n, unsigned int *available) { @@ -811,7 +811,7 > @@ > > > rte_ring_sc_dequeue_burst(struct rte_ring *r, void **obj_table, > > > * @return > > > * - Number of objects dequeued > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_dequeue_burst(struct rte_ring *r, void **obj_table, > > > unsigned int n, unsigned int *available) { diff --git > > > a/lib/ring/rte_ring_c11_pvt.h b/lib/ring/rte_ring_c11_pvt.h index > > > f895950df487..6972a9825cb7 100644 > > > --- a/lib/ring/rte_ring_c11_pvt.h > > > +++ b/lib/ring/rte_ring_c11_pvt.h > > > @@ -11,7 +11,7 @@ > > > #ifndef _RTE_RING_C11_PVT_H_ > > > #define _RTE_RING_C11_PVT_H_ > > > > > > -static __rte_always_inline void > > > +static inline void > > > __rte_ring_update_tail(struct rte_ring_headtail *ht, uint32_t old_va= l, > > > uint32_t new_val, uint32_t single, uint32_t enqueue) { @@ - > > > 50,7 +50,7 @@ __rte_ring_update_tail(struct rte_ring_headtail *ht, > > > uint32_t old_val, > > > * Actual number of objects enqueued. > > > * If behavior =3D=3D RTE_RING_QUEUE_FIXED, this will be 0 or n on= ly. > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > __rte_ring_move_prod_head(struct rte_ring *r, unsigned int is_sp, > > > unsigned int n, enum rte_ring_queue_behavior behavior, > > > uint32_t *old_head, uint32_t *new_head, @@ -126,7 +126,7 > @@ > > > __rte_ring_move_prod_head(struct rte_ring *r, unsigned int is_sp, > > > * - Actual number of objects dequeued. > > > * If behavior =3D=3D RTE_RING_QUEUE_FIXED, this will be 0 or n = only. > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > __rte_ring_move_cons_head(struct rte_ring *r, int is_sc, > > > unsigned int n, enum rte_ring_queue_behavior behavior, > > > uint32_t *old_head, uint32_t *new_head, diff --git > > > a/lib/ring/rte_ring_elem.h b/lib/ring/rte_ring_elem.h index > > > fb1edc9aad1f..35e110fc5b4b 100644 > > > --- a/lib/ring/rte_ring_elem.h > > > +++ b/lib/ring/rte_ring_elem.h > > > @@ -128,7 +128,7 @@ struct rte_ring *rte_ring_create_elem(const char > > > *name, unsigned int esize, > > > * @return > > > * The number of objects enqueued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_mp_enqueue_bulk_elem(struct rte_ring *r, const void *obj_ta= ble, > > > unsigned int esize, unsigned int n, unsigned int *free_space) { > > > @@ -157,7 +157,7 @@ rte_ring_mp_enqueue_bulk_elem(struct rte_ring > > > *r, const void *obj_table, > > > * @return > > > * The number of objects enqueued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_sp_enqueue_bulk_elem(struct rte_ring *r, const void *obj_ta= ble, > > > unsigned int esize, unsigned int n, unsigned int *free_space) { > > > @@ -191,7 +191,7 @@ rte_ring_sp_enqueue_bulk_elem(struct rte_ring > > > *r, const void *obj_table, > > > * @return > > > * The number of objects enqueued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_enqueue_bulk_elem(struct rte_ring *r, const void *obj_table= , > > > unsigned int esize, unsigned int n, unsigned int *free_space) { > > > @@ -235,7 +235,7 @@ rte_ring_enqueue_bulk_elem(struct rte_ring *r, > > > const void *obj_table, > > > * - 0: Success; objects enqueued. > > > * - -ENOBUFS: Not enough room in the ring to enqueue; no object i= s > > > enqueued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_mp_enqueue_elem(struct rte_ring *r, void *obj, unsigned int > esize) { > > > return rte_ring_mp_enqueue_bulk_elem(r, obj, esize, 1, NULL) ? 0 : > > > @@ -259,7 +259,7 @@ rte_ring_mp_enqueue_elem(struct rte_ring *r, > > > void *obj, unsigned int esize) > > > * - 0: Success; objects enqueued. > > > * - -ENOBUFS: Not enough room in the ring to enqueue; no object i= s > > > enqueued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_sp_enqueue_elem(struct rte_ring *r, void *obj, unsigned int= esize) > { > > > return rte_ring_sp_enqueue_bulk_elem(r, obj, esize, 1, NULL) ? 0 : > > > @@ -285,7 +285,7 @@ rte_ring_sp_enqueue_elem(struct rte_ring *r, > > > void *obj, unsigned int esize) > > > * - 0: Success; objects enqueued. > > > * - -ENOBUFS: Not enough room in the ring to enqueue; no object i= s > > > enqueued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_enqueue_elem(struct rte_ring *r, void *obj, unsigned int es= ize) { > > > return rte_ring_enqueue_bulk_elem(r, obj, esize, 1, NULL) ? 0 : > > > @@ -314,7 +314,7 @@ rte_ring_enqueue_elem(struct rte_ring *r, void > > > *obj, unsigned int esize) > > > * @return > > > * The number of objects dequeued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_mc_dequeue_bulk_elem(struct rte_ring *r, void *obj_table, > > > unsigned int esize, unsigned int n, unsigned int *available) { > > > @@ -342,7 +342,7 @@ rte_ring_mc_dequeue_bulk_elem(struct rte_ring > > > *r, void *obj_table, > > > * @return > > > * The number of objects dequeued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_sc_dequeue_bulk_elem(struct rte_ring *r, void *obj_table, > > > unsigned int esize, unsigned int n, unsigned int *available) { > > > @@ -373,7 +373,7 @@ rte_ring_sc_dequeue_bulk_elem(struct rte_ring > > > *r, void *obj_table, > > > * @return > > > * The number of objects dequeued, either 0 or n > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_dequeue_bulk_elem(struct rte_ring *r, void *obj_table, > > > unsigned int esize, unsigned int n, unsigned int *available) { > > > @@ -418,7 +418,7 @@ rte_ring_dequeue_bulk_elem(struct rte_ring *r, > > > void *obj_table, > > > * - -ENOENT: Not enough entries in the ring to dequeue; no object= is > > > * dequeued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_mc_dequeue_elem(struct rte_ring *r, void *obj_p, > > > unsigned int esize) > > > { > > > @@ -442,7 +442,7 @@ rte_ring_mc_dequeue_elem(struct rte_ring *r, > > > void *obj_p, > > > * - -ENOENT: Not enough entries in the ring to dequeue, no object= is > > > * dequeued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_sc_dequeue_elem(struct rte_ring *r, void *obj_p, > > > unsigned int esize) > > > { > > > @@ -470,7 +470,7 @@ rte_ring_sc_dequeue_elem(struct rte_ring *r, > > > void *obj_p, > > > * - -ENOENT: Not enough entries in the ring to dequeue, no object= is > > > * dequeued. > > > */ > > > -static __rte_always_inline int > > > +static inline int > > > rte_ring_dequeue_elem(struct rte_ring *r, void *obj_p, unsigned int = esize) > { > > > return rte_ring_dequeue_bulk_elem(r, obj_p, esize, 1, NULL) ? 0 : > > > @@ -499,7 +499,7 @@ rte_ring_dequeue_elem(struct rte_ring *r, void > > > *obj_p, unsigned int esize) > > > * @return > > > * - n: Actual number of objects enqueued. > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_mp_enqueue_burst_elem(struct rte_ring *r, const void *obj_t= able, > > > unsigned int esize, unsigned int n, unsigned int *free_space) { > > > @@ -528,7 +528,7 @@ rte_ring_mp_enqueue_burst_elem(struct rte_ring > > > *r, const void *obj_table, > > > * @return > > > * - n: Actual number of objects enqueued. > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_sp_enqueue_burst_elem(struct rte_ring *r, const void *obj_t= able, > > > unsigned int esize, unsigned int n, unsigned int *free_space) { > > > @@ -559,7 +559,7 @@ rte_ring_sp_enqueue_burst_elem(struct rte_ring > > > *r, const void *obj_table, > > > * @return > > > * - n: Actual number of objects enqueued. > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_enqueue_burst_elem(struct rte_ring *r, const void *obj_tabl= e, > > > unsigned int esize, unsigned int n, unsigned int *free_space) { > > > @@ -609,7 +609,7 @@ rte_ring_enqueue_burst_elem(struct rte_ring *r, > > > const void *obj_table, > > > * @return > > > * - n: Actual number of objects dequeued, 0 if ring is empty > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_mc_dequeue_burst_elem(struct rte_ring *r, void *obj_table, > > > unsigned int esize, unsigned int n, unsigned int *available) { > > > @@ -638,7 +638,7 @@ rte_ring_mc_dequeue_burst_elem(struct rte_ring > > > *r, void *obj_table, > > > * @return > > > * - n: Actual number of objects dequeued, 0 if ring is empty > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_sc_dequeue_burst_elem(struct rte_ring *r, void *obj_table, > > > unsigned int esize, unsigned int n, unsigned int *available) { > > > @@ -669,7 +669,7 @@ rte_ring_sc_dequeue_burst_elem(struct rte_ring > > > *r, void *obj_table, > > > * @return > > > * - Number of objects dequeued > > > */ > > > -static __rte_always_inline unsigned int > > > +static inline unsigned int > > > rte_ring_dequeue_burst_elem(struct rte_ring *r, void *obj_table, > > > unsigned int esize, unsigned int n, unsigned int *available) { > > > -- > > > 2.35.1