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 74CC5A00C2; Thu, 13 Oct 2022 10:33:16 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1CB0842C95; Thu, 13 Oct 2022 10:33:16 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id B052842C27; Thu, 13 Oct 2022 10:33:14 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 29D7e9cf011811; Thu, 13 Oct 2022 01:33:11 -0700 Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2168.outbound.protection.outlook.com [104.47.59.168]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3k5t92w68u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 13 Oct 2022 01:33:11 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NUVyc1RtxEivgSqsf6Phn+rAexA3kyQORoVSVPX7b5pIDR4K71iInDoX5c8Q6CQcYjAlymMpahSpfkrq6xUdErXFmaJqiLFz0Z6Ml+xU7aQXdk/nB1DUqsgauqvaxvTPmZ1DqsisENYbNX5504PJuFhhNcozJY9S0ywKgJ2Hl5Q0tAZ4zZYuDXbmaSoKlqeN0P/S2sdKtPsHtPcn52trNtR+waJKz/RgZcZjDQbMbolR4H0QBfFNgN42xUAIfdxqghCck+r+QOUTJnM9S7VuY3YPP9vNZJp1/P512T5x27LdExvybUJUBXdOE+a0uu5xg6zr55i125MyYoy53HHLIg== 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=6YgKwzDTMW6oG1KzHCrAM1VET437AcIFtEi1O/x8cMQ=; b=L7a7JMKP4uejXYCey6Q0uPPo6gLLWV7EIwHHX5sJjkt2/r6DfEDa+dy5o/PPmwvtwDTdJ3VS5VgTLru4K/blqZlA2PZA//g+0qb1274yd+TMJ76fsx6fROIDzOEn6mUAF5k/JCwEp86AuxhUyRNgofCAULTnlB7u58qaM6OjJN9o2liG/QF5W4xH12jRS7oWmX+pwK2dTkfhfS7E9EYuXRUcYVgpe0CBN2/RRTYKNKVxpyJXKHp+bGnRtt+2bFBw9RRugFF8sE+9g2iW5AvHL/eSK15/2HbqxvBfN9dlCJ0NbIO7eg6KWwiZGIMXrq6+Xb/1WBLjfivBVOQbUOuwMg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6YgKwzDTMW6oG1KzHCrAM1VET437AcIFtEi1O/x8cMQ=; b=Ru8Ihoo7Dfu4EWOhw2nnCQXzNuiuJIlj0ilOJdEdxr6IzxXg0VRvL7IKP2QVBWWn4iV9o1mywYucKTyRSPKQ2VZvv/g8jXlze56xkM/7V1Iu6ngqEynhiROu2vYnqVoC0MxRvD93L2Twj1b4N+nJU1rjv88JUthbg1pi7TfjN98= Received: from PH0PR18MB4086.namprd18.prod.outlook.com (2603:10b6:510:3::9) by SA0PR18MB3533.namprd18.prod.outlook.com (2603:10b6:806:98::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.22; Thu, 13 Oct 2022 08:33:09 +0000 Received: from PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::55a:3144:a48a:341e]) by PH0PR18MB4086.namprd18.prod.outlook.com ([fe80::55a:3144:a48a:341e%5]) with mapi id 15.20.5709.015; Thu, 13 Oct 2022 08:33:09 +0000 From: Pavan Nikhilesh Bhagavatula To: Thomas Monjalon , =?iso-8859-1?Q?Morten_Br=F8rup?= , Jerin Jacob , Sachin Saxena , Hemant Agrawal , Ori Kam , Liron Himi CC: "Van Haaren, Harry" , Jerin Jacob Kollanukkaran , "dev@dpdk.org" , "Li, WeiyuanX" , Ferruh Yigit , Andrew Rybchenko , "david.marchand@redhat.com" , "techboard@dpdk.org" Subject: RE: [EXT] Re: xstats id type Thread-Topic: [EXT] Re: xstats id type Thread-Index: AQHY3tBR5tTok75eSkuE/wFLd/x/ca4L6FjwgAAVDICAAADfMA== Date: Thu, 13 Oct 2022 08:33:09 +0000 Message-ID: References: <98CBD80474FA8B44BF855DF32C47DC35D873D4@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D873DA@smartserver.smartshare.dk> <4855955.TLkxdtWsSY@thomas> In-Reply-To: <4855955.TLkxdtWsSY@thomas> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR18MB4086:EE_|SA0PR18MB3533:EE_ x-ms-office365-filtering-correlation-id: d5b5342c-f754-40a3-d9d0-08daacf58f56 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Txjmk1h1G46XF83+HJ3nXaLTVooy85ZSgEhr8gXR/7y/Pp8iTkL1l8DD6t5AcDsL3iWVgy/mu2xcgga0HYH1JPGD7HISqdSn5dM3tQVfgYr0Pz8NoWAK1yjK/4N6tOrrzSXgD2D62d6SXR99ae9EW3qhUoUOkzFSBTcpu5REv29uHdeygrFaPG2LxynMJWzTNIYkdf8a6McNyB8wQMaiAHwAkxwNuzoYfsTzgyN3ItDUwZi5BMnzfAgsow/A0r94xNXf74AyeAjJfe97dRieSxia6X+UyMyjxehl2azH4482SPCPp+/UWu5aUy58PlqzO4apI+NAsbsIY9T3kGIlO+B5gQDP1XN9tGeiB/8/n8Ilkqot6JQ6qbC2RrF+9u2kzN/JZtsoTNO6zbLjJPfOyBka89kn6xPGH7TYoFC1IQhjAPS2lmtlgtjfc210gpYQ/p8oYX6OBVm1yInz10JfdBzC13kFQ95KRlF/pGY1u7Y50JsDaoPHKHlzCwJgzoIsYL2j0P4mPFdK98wZHTBIJFGkKh1KWVvXh5RU2VzqVFJ/Czy2fghsy/o01OtMMUYHFEn5OClG7XLjRPxlw24q9drFDX5//6xN6ZQ3rKztfA31ddU8/mDRBSRwLsqL6gWhwzdmswaXyZwNSQ59Qj2lFxC/zuqWUKnCrz95TCofI4xpPI3G9O+F40YdVclQ7PEz4ZgxjiZ4adF0yaQ5ANEKHigi/tXWNKXPQa/n0YLxOQlsdw/5OXlDtv6U3LVEXd0ZY1zZoziPfV1iOfJ6xbyTS7SZt2BTzFpBEffdBBWGq5Zlqcj9oQ/HxxVsY79GzqgQHhqLmidv3wN4wo3Esd587Ko12P0OCWnqoio2t9GeeGw= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR18MB4086.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(396003)(136003)(39860400002)(376002)(346002)(366004)(451199015)(7416002)(86362001)(33656002)(2906002)(8936002)(38070700005)(5660300002)(52536014)(66574015)(186003)(83380400001)(478600001)(54906003)(110136005)(6636002)(966005)(7696005)(71200400001)(9686003)(26005)(6506007)(53546011)(4326008)(8676002)(66556008)(66476007)(76116006)(64756008)(122000001)(66946007)(66446008)(41300700001)(38100700002)(55016003)(19627235002)(316002)(69864005)(21314003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?VTkPs0PUxriQZh2ZWU+45+Eq5pmWvYfl8nxbMysUUXMN9OJMEZ2I2lltxa?= =?iso-8859-1?Q?V55FK+KW+zR4yqMvL7cx3esZIUiCN1UlwXrMljw9MxVAFNA96rhnjmY/QY?= =?iso-8859-1?Q?1YsR+hKcPOT+yAOKriBREpTqp6ttOLulbUSEj+kQJbkkAT1Vp7YntvCZuc?= =?iso-8859-1?Q?yszPpmHqECT8828DtXq4Bzv0KMhdN0A0lE7Dc19KltnadK3SgaGW9DxpoB?= =?iso-8859-1?Q?eIknll5rmsLKmb9Wy4kENACORGZlivrFYs9HeRoHTAHCqsPq5jcX41Iaor?= =?iso-8859-1?Q?VApipThOnnAVmKVzqr9mXWRTeoM1Z7CdGIrv778yWXUKgkhMNzl/V8MdRd?= =?iso-8859-1?Q?sywYy5FfztQZTmiYley3Qbh0u226kbwze6X5LUEqeTewL6pNOic6kdnu24?= =?iso-8859-1?Q?Q5fasbHAiWZF7uR2bNE5u8SeGhSna8bk28UYP5xrkpIZS5qiAM+fnz3NEh?= =?iso-8859-1?Q?/5OVHoCSfez8Lr/8EDMFz9r1VH0AqZpyOlv878528ixR1KZjOMw4zQHCtg?= =?iso-8859-1?Q?iXk2W52Zi8ePcMTJaUd0EZuchjdxczhlTQlxIsIUjZDGinG1RsX3Ad5GjC?= =?iso-8859-1?Q?2EsesYsguLaC013m/DU9ssxE97km69zdchUiYmq1YL6+VoGcmzOUDapnD5?= =?iso-8859-1?Q?Lo++sYqCxhMhEnH600wQWuBmCvueAZaE+8egqLhE5ji4wlL5nWu5i0QpY9?= =?iso-8859-1?Q?t/hPOEwuflOdo33bQ2MTgLjG+BdS0XrPB6U5HHGWbu5r2dXMhN4YHOFK2s?= =?iso-8859-1?Q?NuofglxIu9G2vv6UZQ8l+Fsrm91MxdILQBcDWBb/yazr3jcsLNO9S9Io3F?= =?iso-8859-1?Q?d7Q6EUSan1Ec/Kc1Go5mBBVS9HHwj4mGePvPsFkvifcGUWh8z9tOj+z0OC?= =?iso-8859-1?Q?VzJ0g2h+2zU4/nhxWPhdQsRHfB8gpqdnvq0CEIegiSJwFJLYsufJesgFkj?= =?iso-8859-1?Q?dWa0euvAAqLYqAuXjkPAugsLUYLx3DXhkMo8TIslw8m4G6RWSFc4INInR5?= =?iso-8859-1?Q?uRLfvICfhZZY97EIV1KefoxY8DgrDeOB1fd/8NPARwHuDE+YnC1Ja0T7pW?= =?iso-8859-1?Q?eeSkN6DQgjyzh//HpFoapFSphkG3Ca+8DdzRS/DD7aZlZ8TSo8poHDJshg?= =?iso-8859-1?Q?uDiz5aPaxwUBEvGas4mUZy30+QYSNwmO4MJazbDoCN0n5bH8Ytc8wLXULG?= =?iso-8859-1?Q?qB184Ynqmt3xU1o1NNtMA3g5jP4gnt2L1l/AO8Me4qQpWQ++5KrNTCMBSh?= =?iso-8859-1?Q?BgY6DHiFtdHcIQwFYnb3L5JfQOg+y5O5Ukkr33M9yYIOe6UM+wewTMZYll?= =?iso-8859-1?Q?f7pxM8Z6wsj2ZjBQ8QYO5ilBgpjwfqsZa+pkk+R8vMKsI+tnagsLDwdgMN?= =?iso-8859-1?Q?hdv5oRp1y3JrrSCbPanzIMvz/K85US4RZQA4KY8XoGhaF0GiUGrR9QTIq5?= =?iso-8859-1?Q?RckcnDVCkIDAAShJGfJAVvOA/sqR11hgY0pzs2DUeHf6J+McJag+TUHuwI?= =?iso-8859-1?Q?zYWNTeJ7Leol1cfI41+cxOnxW8vjHZB5QjOlm6yy3imvAA2/q95LhVOCbq?= =?iso-8859-1?Q?/fLKMEL6LoOo8oVoRNx0g/a5xYD86ZV19ZLQBrtFn1ao05EkRICipdBeu7?= =?iso-8859-1?Q?FwumDESL5TQmmHQwdNeu8a28OD/3VRKMvd?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR18MB4086.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5b5342c-f754-40a3-d9d0-08daacf58f56 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Oct 2022 08:33:09.7507 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: TRYNw7fnXkhbeV3bMduNdBt1BYk+27erfQxF/hwDVhSdzy69UtkmexEh5XRbZwdZ1pc0aut82CVCw6dlus50+IbYcu2FZ9XYiBxikyiBvwY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR18MB3533 X-Proofpoint-GUID: R62yAWJfVXvYmxhKtr7kEodHmNKyG1Gu X-Proofpoint-ORIG-GUID: R62yAWJfVXvYmxhKtr7kEodHmNKyG1Gu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-10-13_06,2022-10-12_01,2022-06-22_01 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 > -----Original Message----- > From: Thomas Monjalon > Sent: Thursday, October 13, 2022 1:57 PM > To: Morten Br=F8rup ; Jerin Jacob > ; Sachin Saxena ; > Hemant Agrawal ; Ori Kam > ; Liron Himi ; Pavan Nikhilesh > Bhagavatula > Cc: Van Haaren, Harry ; Jerin Jacob > Kollanukkaran ; dev@dpdk.org; Li, WeiyuanX > ; Ferruh Yigit ; Andrew > Rybchenko ; > david.marchand@redhat.com; techboard@dpdk.org > Subject: [EXT] Re: xstats id type >=20 > External Email >=20 > ---------------------------------------------------------------------- > 13/10/2022 09:12, Pavan Nikhilesh Bhagavatula: > > From: Morten Br=F8rup > > > +TO: rawdev maintainers, regexdev maintainers > > > > > > > From: Thomas Monjalon [mailto:thomas@monjalon.net] > > > > Sent: Wednesday, 12 October 2022 22.44 > > > > > > > > 12/10/2022 18:47, Jerin Jacob: > > > > > On Wed, Oct 12, 2022 at 9:58 PM Thomas Monjalon > > > > > > > wrote: > > > > > > > > > > > > 12/10/2022 18:16, Jerin Jacob: > > > > > > > On Wed, Oct 12, 2022 at 9:05 PM Morten Br=F8rup > > > > wrote: > > > > > > > > > > > > > > > > > From: Thomas Monjalon [mailto:thomas@monjalon.net] > > > > > > > > > Sent: Wednesday, 12 October 2022 17.13 > > > > > > > > > > > > > > > > > > 12/10/2022 14:14, Van Haaren, Harry: > > > > > > > > > > From: Morten Br=F8rup > > > > > > > > > > > From: Van Haaren, Harry > > > > [mailto:harry.van.haaren@intel.com] > > > > > > > > > > > > From: Jerin Jacob > > > > > > > > > > > > > On Wed, Oct 12, 2022 at 1:40 PM Morten Br=F8rup w= rote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Jerin (eventdev maintainer), > > > > > > > > > > > > > > > > > > > > > > > > > > + harry.van.haaren@intel.com as the changes in > > > > > > > > > drivers/event/sw. > > > > > > > > > > > > > > > > > > > > > > > > Thanks Jerin. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > While looking into bug #1101 [1], I noticed a m= ix > > > > of unsigned > > > > > > > > > int > > > > > > > > > > > > and uint32_t in > > > > > > > > > > > > > the test code, which will fail on 64-bit big endi= an > > > > CPUs. > > > > > > > > > > > > > > > > > > > > > > > > Aha; that we can fix. I am curious why this isn't f= ound > > > > in > > > > > > > > > CI/reported > > > > > > > > > > > > before. > > > > > > > > > > > > > > > > > > > > > > We probably don't test any 64-bit *big endian* > > > > architectures. Just > > > > > > > > > a guess. > > > > > > > > > > > > > > > > > > > > Seems so yes. > > > > > > > > > > > > > > > > > > > > > > > > Specifically, rte_event_dev_xstats_reset() is > > > > called with the > > > > > > > > > "ids" > > > > > > > > > > > > parameter > > > > > > > > > > > > > pointing to an unsigned int [2], but that paramet= er > > > > is a > > > > > > > > > pointer to > > > > > > > > > > > > an uint32_t. > > > > > > > > > > > > > > > > > > > > > > > > > > > > I think the type of the ids array parameter to > > > > > > > > > > > > rte_event_dev_xstats_reset() should > > > > > > > > > > > > > be changed to unsigned int array, like in the oth= er > > > > > > > > > > > > rte_event_dev_xxx() functions. > > > > > > > > > > > > > > > > > > > > > > > > In this case, we have the option to change the type= of > > > > a variable > > > > > > > > > in a > > > > > > > > > > > > test-case, or change API and cause API/ABI breakage= . > > > > > > > > > > > > > > > > > > > > > > Well.. yes, but I would phrase that last option: Chan= ge > > > > the > > > > > > > > > API/ABI, so related > > > > > > > > > > > functions consistently use the same type for the same > > > > variable, > > > > > > > > > instead of randomly > > > > > > > > > > > mixing uint64_t, uint32_t and unsigned int, depending= on > > > > function. > > > > > > > > > > > > > > > > > > > > Aah ok; I see your point now; there is inconsistent usa= ge > > > > of > > > > > > > > > uint32_t/unsigned int > > > > > > > > > > between the Eventdev APIs itself. Agree this is sub- > > > > optimal, and > > > > > > > > > would have been > > > > > > > > > > nice to have spotted before the Eventdev API was > > > > stabilized. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Unfortunately, these functions are not marked > > > > experimental, so > > > > > > > > > breaking API/ABI is > > > > > > > > > > > hard to do. :-( > > > > > > > > > > > > > > > > > > > > Agreed again. > > > > > > > > > > > > > > > > > > 22.11 is a breaking release, > > > > > > > > > and changing type in the API is not much impactful, > > > > > > > > > so that's something you can change now, > > > > > > > > > or be quiet forever :) > > > > > > > > > > > > > > > > Question: > > > > > > > > 1. Only change the "xstats id" type in the one eventdev > > > > function, which deviates from other eventdev functions, or > > > > > > > > 2. Change the "xstats id" type for all xstats functions acr= oss > > > > all device types, for consistency across device types? > > > > > > > > > > > > > > > > If 2, then what would be a good type? > > > > > > > > > > > > > > +1 for second option and the type as uint32_t > > > > > > > > > > > > > > > > > > > > > > > Ethdev uses uint64_t for xstats id, and (speaking without > > > > knowledge about its internals) that seems like overkill to me. Arra= ys > > > > of these are being used, so size does matter. > > > > > > > > > > > > uint64_t is not overkill if you consider having stats per queue > > > > with a predictable scheme. > > > > > > That's an improvement I would like to work on, > > > > > > > > > > You mean to use a bitmask hence uint64_t. > > > > > Currently it is mapped as arrays so 2^64 stats may not be needed. > > > > > > > > > > No strong opinion, I was just curious to understand "stats per qu= eue > > > > > with a predictable scheme" and how uint64_t helps with that. > > > > > > > > Yes I mean some bits are used for the queue number. > > > > Something like in slide 11 of this presentation: > > > > https://urldefense.proofpoint.com/v2/url?u=3Dhttp- > > > 3A__fast.dpdk.org_events_slides_DPDK-2D2019-2D09-2DEthernet- > > > > 5FStatistics.pdf&d=3DDwIFAw&c=3DnKjWec2b6R0mOyPaz7xtfQ&r=3D1cjuAHrGh74 > > > > 5jHNmj2fD85sUMIJ2IPIDsIJzo6FN6Z0&m=3DApdcbroZzSNlcY1t4c8iv9HZk6YSJOA > > > > Hpg93zuyIEEWa6xkViBTdoCA3iir_FCtW&s=3DwEMA0lnyrTmxmmDINhzOagGvV > > > Z3TcIrzfK5NbJHafdM&e=3D > > > > > > With this presentation in mind, I strongly agree with Thomas that uin= t64_t > is > > > the best choice of type for xstats id. > > > > > > A quick search shows that both eventdev and rawdev use "unsigned int"= , > > > except rte_event_dev_xstats_reset() and rte_rawdev_xstats_reset(), > which > > > both use uint32_t. And regexdev uses uint16_t. Other device APIs don'= t > have > > > xstats. > > > > Harry, > > Are you working on a patch for this change? If not I will do it. > > > > Thomas, > > Are you ok to break the ABI without deprication notice i.e. make ID as = u64 > for eventdev? >=20 > Yes, it is only increasing size of function parameters, right? Yes > The only problematic part is that the application must pass > a pointer of the right size, meaning some application code change. Most likely they'll get a -Wincompatible-pointer-types not the end of the w= orld. >=20 > It would be an exception in the process, > so I am Cc'ing the techboard for more opinions. >=20