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 D537AA04BC; Thu, 8 Oct 2020 16:28:11 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AC4001BB5C; Thu, 8 Oct 2020 16:28:10 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 0C1C92BE1 for ; Thu, 8 Oct 2020 16:28:05 +0200 (CEST) IronPort-SDR: gOMR90ot1DSIyjnO8LxhcluC05INmYZNV9en8hpHP3+S7pRLo11K2tIh8o0efkU0UY81BTI2j5 MU1NQFnDwJNg== X-IronPort-AV: E=McAfee;i="6000,8403,9767"; a="165452455" X-IronPort-AV: E=Sophos;i="5.77,351,1596524400"; d="scan'208";a="165452455" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Oct 2020 07:28:01 -0700 IronPort-SDR: V/ioP/oZYMlTi95ft0nqt15zbBs9SKz3YYycrmFZsSq8TMjBbF3Kg9snZT6Josg/3XeN2pfKmY I+J2o9JynOug== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,351,1596524400"; d="scan'208";a="519360144" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by fmsmga005.fm.intel.com with ESMTP; 08 Oct 2020 07:27:59 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 8 Oct 2020 07:27:01 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 8 Oct 2020 07:27:01 -0700 Received: from NAM04-SN1-obe.outbound.protection.outlook.com (104.47.44.50) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Thu, 8 Oct 2020 07:27:01 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b1gLKTKmereUuX+u5wHnZsg1A2Ka/i04SsYOkJ+We59IYKKtiTa0mFP7eLnqaTDqlRplxHgmI5JRE9LYXX2x6EmBCj7eyqCMR0QZLsOdjY0RYNXKF5F23ebTTfbMaYh40rm+dyBb49CohSuh8okbggQbEbavUKwA4+H3MeoqVu83o235RWHQTSWFJY335JMimAG2cy+wo3Dl4a9BGHjbJTMHPTf1G/x8arbynLCHXi5eNfWaL0DfUMjDL+lKRLscajiOC24E3hGPVDCco+ebS4YP3KIQ0+LRTpBTqCBDJTFUH6dlsN+o1rYFHN10G2+imyhU7Kg51sGgXEWd4t4OCg== 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=xilMfadnS0WAXKv9r1rABPKSHWsJqbHQZZxeT1JhT4Y=; b=lBsGYSksYcQnfuqjCTQr4gH2mxa2NPzSIrZgDAGZehaMwnwMbSCLhfTSzAP1+AqLkLdRTBx60DDPy7mkR6G27N0FhytnOd5HHkW+NVSr+2O44e2GYSStQb+rUmbxwOERVAOaN82rhVtWWO34s7GBok6fPStRyPFjX9Dt4EujMS1lixIvHeDwwHGLVNmhzLerz7AjUoVouStYZfbAU+6tlFpdrFiE5aaUJCqOUqIWcsY+tltTu+r4cn/JY79wk8zee7N8+hjjUE3aYOkOwW+GKCAfdbhsysfhAjXJxjck9z1/jyZ9pV4NRyhiVfrtYjlkT5QsAH3wTSuJBnzKl5esSQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xilMfadnS0WAXKv9r1rABPKSHWsJqbHQZZxeT1JhT4Y=; b=x8W8wP4oR5ltraejGZlQpYTrA+8Gv2HrCNN8/bbNU23qrNu97ZJsM1mrc1k0sTJusaTomoJFIOa/hDa+auQsqEWIJkGEA4taDG82cd0D1Vkkmhn/lIWx+TzVcqUQlXyICa3g9bW5NctY/EOpCxLBfVkxSuK6ndSlcZImkCO78G4= Received: from DM6PR11MB2555.namprd11.prod.outlook.com (2603:10b6:5:c5::33) by DM6PR11MB2556.namprd11.prod.outlook.com (2603:10b6:5:c6::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.24; Thu, 8 Oct 2020 14:26:58 +0000 Received: from DM6PR11MB2555.namprd11.prod.outlook.com ([fe80::78d4:d670:95af:773d]) by DM6PR11MB2555.namprd11.prod.outlook.com ([fe80::78d4:d670:95af:773d%5]) with mapi id 15.20.3433.043; Thu, 8 Oct 2020 14:26:58 +0000 From: "Power, Ciara" To: "Richardson, Bruce" , "Ananyev, Konstantin" CC: "dev@dpdk.org" , Ray Kinsella , Neil Horman Thread-Topic: [dpdk-dev] [PATCH v3 01/18] eal: add max SIMD bitwidth Thread-Index: AQHWlyrBAbDihkshFEi9z+NzKaB/wamNuZoAgAAB24CAAA8KAIAAAtaAgAABcrA= Date: Thu, 8 Oct 2020 14:26:58 +0000 Message-ID: References: <20200807155859.63888-1-ciara.power@intel.com> <20200930130415.11211-1-ciara.power@intel.com> <20200930130415.11211-2-ciara.power@intel.com> <20201008131405.GD1106@bricha3-MOBL.ger.corp.intel.com> <20201008141803.GE1106@bricha3-MOBL.ger.corp.intel.com> In-Reply-To: <20201008141803.GE1106@bricha3-MOBL.ger.corp.intel.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [78.18.45.234] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5cdbcf6e-a5a8-41c5-756a-08d86b9636f3 x-ms-traffictypediagnostic: DM6PR11MB2556: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: e6pyhOEz2TgV54AadLE0pZCX/WLZwo79yzL+JVhe4so7fLZZPSVcWZZ9s9+3nX0vOjCVawaqFFgSEkG9HGsEpnC1IsIRh1fYEefSyP0DiD1aozM1HMUweQOCDuH4q7II0Ry7qZWZNXeIZtaIfkJ1oAQS+iggVidf06SXIWIRbR5Y7Nx8Td2EegtNLSFdA1dgNl7EH/7lTqKDPq2aV1N95m29YgV6oZ1vW36cZMTKHU2CwZbmA176KJfpQfCPVEAqw5uz0iv0jEAOjRc0IpVJiiY5uZCsyhhn1ub+fJg8J33y47dUeaJuzMWxiVeDXmapB0sIJAsffS1dX/yD3UBHgFUH4Mu9QxsRAXPV7+s9c8g211UM921TYZP6HT4OQ/8KKcwO/6g8ogN59D0t/NzsAA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB2555.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(396003)(366004)(376002)(346002)(136003)(64756008)(8936002)(6506007)(66946007)(66446008)(66476007)(66556008)(478600001)(2906002)(966005)(186003)(316002)(110136005)(54906003)(86362001)(26005)(9686003)(5660300002)(76116006)(4326008)(83380400001)(52536014)(55016002)(33656002)(83080400001)(71200400001)(8676002)(7696005)(6636002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: IatEa74R013MtyW1xGIJX7H9ZvBQYyCq3J5YCP4qpH625RJHokfZX5F6ZQdSVbbmjz1CQ0osp2mFeZfy2XtRjBwgzLLHVTWgJvCYb/i7jfLNf6tY68exOUfKf1LcaxHW2yuK1Ph21wpm2E8dZp8gLJKnMqxAR3GBkscHhCYPFfVNtN8K/IX16mlSMvdJb0WkzKqtuEQVLb3LYMFe674m+OKA6Qs6JRZjsNr4DG8/64Y6g1ZG7L712O4lt/IczxuFIQDVeGCTcRb7rnFstMSTNp+I+viB9TXSTSVGRGrrQEdrcuUW5gqvMlhBfWUlAAYn11pysmowRFh2KszHLWrcHE1ILQESM9RLkhA1Vbck4q/UsorzGTRF5c2e7rAe130qKGUvGU4/fP8nhYb8JLRJ8rMtTxul1j4sxeQZTatJsy4ghPQqcXI4I5Ki+LFQemfyEM8DWNR+iZa4OpvyePLPcE+CDDC5mobKlRCH83P95W56NzIBCCyKXrVJdeJnTwuTMyXIQTA3pE+Up5+8Nb/0VYgQ/8YTVkJFeFJ/MLiJivdInTs12uGzWDP0fikp22BX3MLn24fUT9i1IdRHdFYLS7aQiwRvP9y5wuzFgCekKLHx1IuWOzgAdL1SPzIgR8KdQVb+y1aSoBuh3BkfpMNHQA== 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: DM6PR11MB2555.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5cdbcf6e-a5a8-41c5-756a-08d86b9636f3 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2020 14:26:58.3067 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CB1kE1DStEli5PDee3FyegSfCXA9oA2/Xmwxz4LXl7Q9I1k6BGr5yQ4tPr4APLJekqX7tQRYhCnXPwL7dQhQlQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB2556 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v3 01/18] eal: add max SIMD bitwidth 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 Bruce, Konstantin, >-----Original Message----- >From: Bruce Richardson >Sent: Thursday 8 October 2020 15:18 >To: Ananyev, Konstantin >Cc: Power, Ciara ; dev@dpdk.org; Ray Kinsella >; Neil Horman >Subject: Re: [dpdk-dev] [PATCH v3 01/18] eal: add max SIMD bitwidth > >On Thu, Oct 08, 2020 at 03:07:54PM +0100, Ananyev, Konstantin wrote: >> >> > On Thu, Oct 08, 2020 at 01:07:26PM +0000, Ananyev, Konstantin wrote: >> > > >> > > > This patch adds a max SIMD bitwidth EAL configuration. The API >> > > > allows for an app to set this value. It can also be set using >> > > > EAL argument --force-max-simd-bitwidth, which will lock the >> > > > value and override any modifications made by the app. >> > > > >> > > > Signed-off-by: Ciara Power >> > > > >> > > > --- >> > > > v3: >> > > > - Added enum value to essentially disable using max SIMD to choo= se >> > > > paths, intended for use by ARM SVE. >> > > > - Fixed parsing bitwidth argument to return an error for values >> > > > greater than uint16_t. >> > > > v2: Added to Doxygen comment for API. >> > > > --- >> > > > lib/librte_eal/common/eal_common_options.c | 64 >++++++++++++++++++++++ >> > > > lib/librte_eal/common/eal_internal_cfg.h | 8 +++ >> > > > lib/librte_eal/common/eal_options.h | 2 + >> > > > lib/librte_eal/include/rte_eal.h | 33 +++++++++++ >> > > > lib/librte_eal/rte_eal_version.map | 4 ++ >> > > > 5 files changed, 111 insertions(+) >> > > > >> > > > diff --git a/lib/librte_eal/common/eal_common_options.c >> > > > b/lib/librte_eal/common/eal_common_options.c >> > > > index a5426e1234..e9117a96af 100644 >> > > > --- a/lib/librte_eal/common/eal_common_options.c >> > > > +++ b/lib/librte_eal/common/eal_common_options.c >> > > > @@ -102,6 +102,7 @@ eal_long_options[] =3D { >> > > > {OPT_MATCH_ALLOCATIONS, 0, NULL, >OPT_MATCH_ALLOCATIONS_NUM}, >> > > > {OPT_TELEMETRY, 0, NULL, OPT_TELEMETRY_NUM }, >> > > > {OPT_NO_TELEMETRY, 0, NULL, OPT_NO_TELEMETRY_NUM }, >> > > > +{OPT_FORCE_MAX_SIMD_BITWIDTH, 1, NULL, >> > > > +OPT_FORCE_MAX_SIMD_BITWIDTH_NUM}, >> > > > {0, 0, NULL, 0 } >> > > > }; >> > > > >> > > > @@ -1309,6 +1310,34 @@ eal_parse_iova_mode(const char *name) >> > > > return 0; } >> > > > >> > > > +static int >> > > > +eal_parse_simd_bitwidth(const char *arg, bool locked) { char >> > > > +*end; unsigned long bitwidth; int ret; struct internal_config >> > > > +*internal_conf =3D eal_get_internal_configuration(); >> > > > + >> > > > +if (arg =3D=3D NULL || arg[0] =3D=3D '\0') return -1; >> > > > + >> > > > +errno =3D 0; >> > > > +bitwidth =3D strtoul(arg, &end, 0); >> > > > + >> > > > +/* check for errors */ >> > > > +if (bitwidth > UINT16_MAX || errno !=3D 0 || end =3D=3D NULL || *= end >> > > > +!=3D '\0') return -1; >> > > > + >> > > > +if (bitwidth =3D=3D 0) >> > > > +bitwidth =3D UINT16_MAX; >> > > > +ret =3D rte_set_max_simd_bitwidth(bitwidth); >> > > > +if (ret < 0) >> > > > +return -1; >> > > > +internal_conf->max_simd_bitwidth.locked =3D locked; return 0; } >> > > > + >> > > > static int >> > > > eal_parse_base_virtaddr(const char *arg) { @@ -1707,6 +1736,13 >> > > > @@ eal_parse_common_option(int opt, const char *optarg, case >> > > > OPT_NO_TELEMETRY_NUM: >> > > > conf->no_telemetry =3D 1; >> > > > break; >> > > > +case OPT_FORCE_MAX_SIMD_BITWIDTH_NUM: >> > > > +if (eal_parse_simd_bitwidth(optarg, 1) < 0) { RTE_LOG(ERR, EAL, >> > > > +"invalid parameter for --" >> > > > +OPT_FORCE_MAX_SIMD_BITWIDTH "\n"); return -1; } break; >> > > > >> > > > /* don't know what to do, leave this to caller */ >> > > > default: >> > > > @@ -1903,6 +1939,33 @@ eal_check_common_options(struct >> > > > internal_config *internal_cfg) return 0; } >> > > > >> > > > +uint16_t >> > > > +rte_get_max_simd_bitwidth(void) { const struct internal_config >> > > > +*internal_conf =3D eal_get_internal_configuration(); return >> > > > +internal_conf->max_simd_bitwidth.bitwidth; >> > > > +} >> > > > + >> > > > +int >> > > > +rte_set_max_simd_bitwidth(uint16_t bitwidth) { struct >> > > > +internal_config *internal_conf =3D >> > > > +eal_get_internal_configuration(); >> > > > +if (internal_conf->max_simd_bitwidth.locked) { RTE_LOG(NOTICE, >> > > > +EAL, "Cannot set max SIMD bitwidth - user runtime override >> > > > +enabled"); return -EPERM; } >> > > > + >> > > > +if (bitwidth !=3D RTE_MAX_SIMD_DISABLE && (bitwidth < >RTE_NO_SIMD >> > > > +|| >> > > > +!rte_is_power_of_2(bitwidth))) { RTE_LOG(ERR, EAL, "Invalid >> > > > +bitwidth value!\n"); return -EINVAL; } >> > > > +internal_conf->max_simd_bitwidth.bitwidth =3D bitwidth; return 0; >> > > > +} >> > > > + >> > > > void >> > > > eal_common_usage(void) >> > > > { >> > > > @@ -1981,6 +2044,7 @@ eal_common_usage(void) >> > > > " --"OPT_BASE_VIRTADDR" Base virtual address\n" >> > > > " --"OPT_TELEMETRY" Enable telemetry support (on by >default)\n" >> > > > " --"OPT_NO_TELEMETRY" Disable telemetry support\n" >> > > > + " --"OPT_FORCE_MAX_SIMD_BITWIDTH" Force the max SIMD >bitwidth\n" >> > > > "\nEAL options for DEBUG use only:\n" >> > > > " --"OPT_HUGE_UNLINK" Unlink hugepage files after i= nit\n" >> > > > " --"OPT_NO_HUGE" Use malloc instead of hugetlb= fs\n" >> > > > diff --git a/lib/librte_eal/common/eal_internal_cfg.h >b/lib/librte_eal/common/eal_internal_cfg.h >> > > > index 13f93388a7..367e0cc19e 100644 >> > > > --- a/lib/librte_eal/common/eal_internal_cfg.h >> > > > +++ b/lib/librte_eal/common/eal_internal_cfg.h >> > > > @@ -33,6 +33,12 @@ struct hugepage_info { >> > > > int lock_descriptor; /**< file descriptor for hugepage dir */ >> > > > }; >> > > > >> > > > +struct simd_bitwidth { >> > > > +/**< flag indicating if bitwidth is locked from further modificat= ion */ >> > > > +bool locked; >> > > > +uint16_t bitwidth; /**< bitwidth value */ >> > > > +}; >> > > > + >> > > > /** >> > > > * internal configuration >> > > > */ >> > > > @@ -85,6 +91,8 @@ struct internal_config { >> > > > volatile unsigned int init_complete; >> > > > /**< indicates whether EAL has completed initialization */ >> > > > unsigned int no_telemetry; /**< true to disable Telemetry */ >> > > > +/** max simd bitwidth path to use */ >> > > > +struct simd_bitwidth max_simd_bitwidth; >> > > > }; >> > > > >> > > > void eal_reset_internal_config(struct internal_config *internal_c= fg); >> > > > diff --git a/lib/librte_eal/common/eal_options.h >b/lib/librte_eal/common/eal_options.h >> > > > index 89769d48b4..ef33979664 100644 >> > > > --- a/lib/librte_eal/common/eal_options.h >> > > > +++ b/lib/librte_eal/common/eal_options.h >> > > > @@ -85,6 +85,8 @@ enum { >> > > > OPT_TELEMETRY_NUM, >> > > > #define OPT_NO_TELEMETRY "no-telemetry" >> > > > OPT_NO_TELEMETRY_NUM, >> > > > +#define OPT_FORCE_MAX_SIMD_BITWIDTH "force-max-simd- >bitwidth" >> > > > +OPT_FORCE_MAX_SIMD_BITWIDTH_NUM, >> > > > OPT_LONG_MAX_NUM >> > > > }; >> > > > >> > > > diff --git a/lib/librte_eal/include/rte_eal.h >b/lib/librte_eal/include/rte_eal.h >> > > > index ddcf6a2e7a..fb739f3474 100644 >> > > > --- a/lib/librte_eal/include/rte_eal.h >> > > > +++ b/lib/librte_eal/include/rte_eal.h >> > > > @@ -43,6 +43,14 @@ enum rte_proc_type_t { >> > > > RTE_PROC_INVALID >> > > > }; >> > > > >> > > > +enum rte_max_simd_t { >> > > > +RTE_NO_SIMD =3D 64, >> > > >> > > While I do understand the idea of having that value from consistency >point of view, >> > > I wonder do we really need to allow user to specify values smaller t= hen >128. >> > > At least on x86 we always have 128 bit SIMD enabled, even for - >Dmachine=3Ddefault. >> > > So seems no much point to forbid libraries using SSE code-path when >compiler >> > > is free to insert SSE instructions on its own will. >> > > >> > >> > The reason to support this is for testing purposes, as it allows an ea= sy >> > way for a tester to check out any scalar code paths - which are often >> > common across architectures. >> >> If it is just for testing things in a consistent way, then it is probab= ly ok. >> The thing that worries me - later in this series there are patches >> that insert extra checks into inline functions that use SSE instincts: >> https://patches.dpdk.org/patch/79355/ (lpm: choose vector path at >runtime). >> Which seems like a total overkill for me. >> >> > >> > > > +RTE_MAX_128_SIMD =3D 128, >> > > > +RTE_MAX_256_SIMD =3D 256, >> > > > +RTE_MAX_512_SIMD =3D 512, >> > > > +RTE_MAX_SIMD_DISABLE =3D UINT16_MAX, >> > > >> > > As a nit, I think it is safe enough to have this last value >> > > (RTE_MAX_SIMD_DISABLE or RTE_MAX_SIMD_MAX) equal to >(INT16_MAX + 1). >> > > That would be big enough to probably never hit actual HW limit, >> > > while it still remains power of two, as other values. >> > > >> > >> > I actually think it's probably clearer as-is, because the fact of the = rest >> > being powers of 2 is irrelevant since we just check greater than or le= ss >> > than. >> >> Well, rte_set_max_simd_bitwidth() does accept only power of two values >> _AND_ this special one (UINT16_MAX). >> By changing it to 2^15, we can remove that special value test. >> >> > If we did change it, then we need to put in a comment explaining why >> > the plus-one, >> >> I don't think it is that big deal to put a comment, >> plus for UINT16_MAX we do need some explanation too, right? >> >I'm ok either way. Ciara, what do you think? Either is fine with me, I can change it to (INT16_MAX + 1) if that is prefe= rred, and remove the extra special case check in the rte_set_max_simd_bitwi= dth() Thanks, Ciara