From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0968AC4332F for ; Mon, 21 Nov 2022 13:22:47 +0000 (UTC) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D892F40150; Mon, 21 Nov 2022 14:22:46 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2059.outbound.protection.outlook.com [40.107.243.59]) by mails.dpdk.org (Postfix) with ESMTP id 42F53400EF for ; Mon, 21 Nov 2022 14:22:46 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H4cBZWYRweWrijNJI4lhRLTG4bpOdO2XWWL6S4FaKuw4My9YFmGfLe+EAPhmWExnjIrfVlEz+WEZ2ASg+vPMPNPHI9dErCMM3vKLfr8Li7EcMyvLpMO1KODQbczo4LbGAjECAbji4JMZLaqWQjkGgVznNDDrHxrUCif6/hUcTANAVzpehWVs0jdr3CFvmWHhCjfLPtWw5C0Rhs/gzbOpXj0KRS3Aa/gsMewnnHnBqgKtOd84YCvfDrEE6OS2VxCmWmfMF1eF0ulULMy33JLNMlpTCgTO0zpJBOFdciBakz36efq3gSdL38GP3vMYI1tcM2PjiP5RrCGkdzLIZZdMZg== 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=JwmRE/v+qlRqa6nioLfzU10lqKq1karBagOy3bXocn8=; b=oIW3pu+awPszCe99pBBh/VVQE6+9h6oy8jk+q51PUVX8T6R87VZHqdj/9ZWkuzCrL7WgfT0J7GsuIoV2yEIfNRAr3Dz0WwT81gsbldp59x+kJVhxhtd6rckMmbyhA7SDbYsdttnEka4K6V1lz4E3VRAN7/z8NZOC1vwAQiJMIxkLPdZvw24nY82A5qj5dVuyJ9CByp3w2NvY9FcvUszwI0ouing0/uGffBUSotMkUPeZODDcx4CYqj73lLsCoafzMOBmZfeeRtNI8YObXCcfYpg3hUdFxOdlJVBKzKv4CErZ90hLP133GjxJlk6y8ckOGujHYxHF61J+iH/Gkni3kg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JwmRE/v+qlRqa6nioLfzU10lqKq1karBagOy3bXocn8=; b=bXjAkfxJwJ/vcl9wxZu0p94J7Vh5AvWQPCITPIwGxuNqSFa9HdK0C3NcdXES2npXIVvJZV/gitFgQo1jHrdIRZsplqduxrGIZj39H3CLhfwiLeNI+4W0uVeYi8ta88TpJylNGSv+4PLDFVAE5QLA9g0B64PmRUyTYWE28QzL4ec= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) by MW4PR12MB7032.namprd12.prod.outlook.com (2603:10b6:303:20a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.9; Mon, 21 Nov 2022 13:22:43 +0000 Received: from CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::b482:d5bd:c7d0:3842]) by CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::b482:d5bd:c7d0:3842%9]) with mapi id 15.20.5834.015; Mon, 21 Nov 2022 13:22:43 +0000 Message-ID: <3405bb67-9731-4b8c-2a52-1cd71ebe52d9@amd.com> Date: Mon, 21 Nov 2022 13:22:38 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Content-Language: en-US To: Hanumanth Pothula , Aman Singh , Yuying Zhang Cc: dev@dpdk.org, andrew.rybchenko@oktetlabs.ru, thomas@monjalon.net, yux.jiang@intel.com, jerinj@marvell.com, ndabilpuram@marvell.com References: <20221118141334.3825072-1-hpothula@marvell.com> <20221121124546.3920722-1-hpothula@marvell.com> From: Ferruh Yigit Subject: Re: [PATCH v5 1/1] app/testpmd: add valid check to verify multi mempool feature In-Reply-To: <20221121124546.3920722-1-hpothula@marvell.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P123CA0050.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:152::19) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|MW4PR12MB7032:EE_ X-MS-Office365-Filtering-Correlation-Id: 2c512477-1655-4783-95a0-08dacbc378d7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: d+UH4xcvO0/OEs+FxvDk4RdYeD1wfhzjugIkG5VoYvybXEzZLfTubwsax9PRYvHERAofLI3jvOFZfHN/11m71r1UKTpDB/UPwObRpr7ci9vNGaEds23m3zMRy+f0AEQTh59jdjWwBNhvrE/36nmRsWGS5HVkbhzASxRpVmZrRJMBfkSyJsJiNBgZ4hNKicCEIZNlK3idhdK3Yre9Szka8NAuQYr+Fw9yr7WS730usZgBr81u96pEY6nEeqHP2e1+IjoqtVAMBa0R8Kgp3ll0oFUJddiHym2kWgaZcA1+CWtLsErVbxNcyeT8WODnUyBn2/4rT4cm7ftlN0xGve2FJ72Ug1oP1Sf5QmJf0GUOk8rXC9DksR6XeXIzzOOno9gIPM5qdXAWOKa+FtanWTV6FADHmJdNodNSUi+wgt0PQ4+pgDx5dvd3CY+Zhl6bMWVgiHRfIfoGF+gkUWr1aQk5OCgnzqlZIQQ+82PGC4s3xNacDm0RbGMs/xQzST1ZZlIA+6VGpnRp9qJgUFk3mWNRQxEBg1pfVfx35ITYL9Eyayc91rCyLRiHV0NMqI4FqK9Y86j6z8DddC4sOcpU0Gw1bcx15l2bot66YQJz5dmpqDvLzyRHjiNVSXAmJXeny2DslHsmajSXu3+ziLwn3RYeXLTRqgoYvxVhDXhoxUFhymkpfdvqV9IxmLFqhYvDcwKvJIxBozQuJQRAhwguGHY3awYDqhBT6B1hiocwiSHMgjU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR12MB4294.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(346002)(39860400002)(366004)(376002)(136003)(396003)(451199015)(478600001)(36756003)(86362001)(6512007)(6506007)(31696002)(6666004)(53546011)(26005)(6486002)(31686004)(2616005)(110136005)(15650500001)(8676002)(186003)(316002)(41300700001)(66946007)(4326008)(38100700002)(66476007)(66556008)(8936002)(44832011)(5660300002)(2906002)(83380400001)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OFExaFdob0xPbGMrVmxIbFpqMFdHRHRhQ2pEbENmZnI0ZkU3TkRGL2d2akdN?= =?utf-8?B?ZXZ2SVZNZ0VHOWFJTDNrMWx1Q3RCNHVNRnFhOFA1T1NwVWxyeHlmTEhwTnBh?= =?utf-8?B?ZUthSlBaR1BSMWZrQUtmMG1vRzhybUtuY2NDYXpRL2NwZmtvMTJTNkl6UDJr?= =?utf-8?B?eFhiSUpIUmtvMUhCbHFTK1hEU1FKSW1xMzA5RXJSbTNrSkhva2ZMN3psZHNy?= =?utf-8?B?UytITVVrMk9HWmVzVTVIMElIZkJjRDJLVHp1NCtzdUFtNjUzMWl0UEFKeGJN?= =?utf-8?B?ZXJkMTVIOEkyWG9Td0lUN0FXZkF2QkI0L0cxMllYK1ZGOGkzRkpQRFlTdW5D?= =?utf-8?B?cG5CakYzbktWZU04SmtSb3BPNWVLZk9hVVV1dHRucndEVzNmMmJ4enQwVml1?= =?utf-8?B?WGNxNVI0ZnVWOXYxQ1RCVmFSVDdwUGdnckpTVkh4SVhPWGVxbkRqZHI4eEhG?= =?utf-8?B?WDVMUldodlE3ZTZEL2tQT1ZxbTRqTkZHUjdxSFBaNWJ2d2NvUnZYOU1DL1Fn?= =?utf-8?B?VEh0OUcyWituRnp5NVdnalg1cXh2bFdOMWZuNjY1eHpLOWgyeFpFaEdwSW9L?= =?utf-8?B?cDRLa0hkbDdmd3JFeTlzVWxqVktXTkhpKzZRd2pSNDZsL0h0S085bjR3V1VE?= =?utf-8?B?bFVzSXg3YnJYSXExaDdYZTV4djdxZEtDbmhBejZubjhIWU4xRlhZY09jUkpy?= =?utf-8?B?d0lyQzY3R1Q1Q3dzbzJHMFpJQUhlZXBDSGVtcmYrd3R0WU9OaGFDV0p6Zjln?= =?utf-8?B?R0xMMVE2OEpxblU2ME5rZ3ZqM1EyQmorajFUb2ZhbGt0NVZJWTduQTZVVzRN?= =?utf-8?B?b1ZycGpjVlJxT0kybUR5eEZscm1MTitRZFVVeTlKeVVPOFd6aVArWTF1VTV2?= =?utf-8?B?OUVMdUFoYnZ3UkROaFdobERYelVKeWJIUy82aEJsWkNVbU1FS283Z05Fb3Z4?= =?utf-8?B?ZWVQejNrQ2YxRC9TUEdrZS9nRGRrVHRLMnl3RUNFSDNvVGN3OFFCaDJEbkV6?= =?utf-8?B?eGVVRDZ3RjlzZUpoZ05FcTdmZExvS3JJNmJEb1ZPMWRWQmxOUzd1Q2hSRkVS?= =?utf-8?B?ZFUvY0JycHNraW5mV05Fb0dSR1RjcnRPbjBGNnJWMm5JUmV4MkYrT3F4SDFa?= =?utf-8?B?Wk9KU3MvNHNsaUR4aWYxa3ZlSzlpL2tHTWFWc05pWk5vdm9UOFJKTVNRTWhn?= =?utf-8?B?SDdXNTZKaTFHWGx6NDRJRzhYSUExYktNc1N1MEEza2dIS3RGVFRKNHRjeWkx?= =?utf-8?B?VmQzUmg4cWEzUlVhVFJ6a1pCWFhLZ3lybTBpU0Q0b1ZBSWZqVDdVcGFvY1A0?= =?utf-8?B?NEZlRlNpTnAzTHlHV2lEWnQvK3hWNVBEUER1cDNqNHVSeVV4cFQyd2ZrZlo3?= =?utf-8?B?dVhTamtnNTF3dDdwdHYrQVFwcVZhRmVzNlpFMDBJdTlqRi9sUkN0QXFqZmdu?= =?utf-8?B?TnVrL0tsNGdUamp6ZkdEMEJ4NE9ySXd6YXFoM3pIVUdaQWEvUHdGS3IwTUNy?= =?utf-8?B?N0wzeFRXdGhjY21selFlcWhmSkY3M3FVWlVkUkM4YWZDU3p2ZUp5T1loRHdr?= =?utf-8?B?UUUvbklsaHZadllvTXRWNGVScEpLamxBS29GanZ6aFBuTTlFQUovOVczamoz?= =?utf-8?B?ODNJZ0gzdU1la01BNTkzWEF1d2V4Y29xMVg2cW9BblpYMHhtWklsaU1GelQ4?= =?utf-8?B?TCtlUWlGTUtkeUY3QWVxKzJYbEJDYlhnMXJBRlZ3aGhneWk3SE9iODQ2YStE?= =?utf-8?B?b1Q2cmRmakhmdVVXSnhIckFRc09ISnJiNDJmM09yOVZZVFZ4WnU0WncxenFo?= =?utf-8?B?dnE3aldDVVlHRjk2THdLZEJYL242TGd5MVBYdlRXTlhIRm1NS1BKQ0F5UmYz?= =?utf-8?B?ODN1SHJCTTFGR2pPcm9KU3YyS0FlZmZxb25ySHVMcUE0VVNEcHRQUUZUbTdR?= =?utf-8?B?MVk3ZzhwMjNpSU00YndCOHNFL2JpM0kvaURza0FxV3h6S0tiTnR6M1kzdG5E?= =?utf-8?B?WnRwOFJFSWhBbllWOUFEemh2OE55andJM1JXWTZUK2E2Q2V0bXowaGo4VGxP?= =?utf-8?B?VzJEbzNXTmJaWTY3V01yRTd5c0hmQUJBeEoyM1QrNXMzVnBnTFVBYU5udGtW?= =?utf-8?Q?/99WT3tLPtts4F1Zns1ex491e?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2c512477-1655-4783-95a0-08dacbc378d7 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2022 13:22:43.5473 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QBVVu5bRWPdStpEViHSbnX6C2Dt0JCBy0RXeWL0TEBmqJtZ2ySyIIaRqtStPzXoV X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7032 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 On 11/21/2022 12:45 PM, Hanumanth Pothula wrote: > Validate ethdev parameter 'max_rx_mempools' to know whether > device supports multi-mempool feature or not. > > Also, add new testpmd command line argument, multi-mempool, > to control multi-mempool feature. By default its disabled. > > Bugzilla ID: 1128 > Fixes: 4f04edcda769 ("app/testpmd: support multiple mbuf pools per Rx queue") > > Signed-off-by: Hanumanth Pothula > > --- > v5: > - Added testpmd argument to enable multi-mempool feature. > - Simplified logic to distinguish between multi-mempool, > multi-segment and single pool/segment. > v4: > - updated if condition. > v3: > - Simplified conditional check. > - Corrected spell, whether. > v2: > - Rebased on tip of next-net/main. > --- > app/test-pmd/parameters.c | 3 ++ > app/test-pmd/testpmd.c | 58 +++++++++++++++++++++++++-------------- > app/test-pmd/testpmd.h | 1 + > 3 files changed, 41 insertions(+), 21 deletions(-) > > diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c > index aed4cdcb84..26d6450db4 100644 > --- a/app/test-pmd/parameters.c > +++ b/app/test-pmd/parameters.c > @@ -700,6 +700,7 @@ launch_args_parse(int argc, char** argv) > { "rx-mq-mode", 1, 0, 0 }, > { "record-core-cycles", 0, 0, 0 }, > { "record-burst-stats", 0, 0, 0 }, > + { "multi-mempool", 0, 0, 0 }, Can you please group with relatet paramters, instead of appending end, after 'rxpkts' related parameters group (so after 'txpkts') can be good location since it is used for buffer split. need to document new argument on 'doc/guides/testpmd_app_ug/run_app.rst' Also need to add help string in 'usage()' function, again grouped in related paramters. > { PARAM_NUM_PROCS, 1, 0, 0 }, > { PARAM_PROC_ID, 1, 0, 0 }, > { 0, 0, 0, 0 }, > @@ -1449,6 +1450,8 @@ launch_args_parse(int argc, char** argv) > record_core_cycles = 1; > if (!strcmp(lgopts[opt_idx].name, "record-burst-stats")) > record_burst_stats = 1; > + if (!strcmp(lgopts[opt_idx].name, "multi-mempool")) > + multi_mempool = 1; Can you group with related paramters, same as above mentioned location? > if (!strcmp(lgopts[opt_idx].name, PARAM_NUM_PROCS)) > num_procs = atoi(optarg); > if (!strcmp(lgopts[opt_idx].name, PARAM_PROC_ID)) > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c > index 4e25f77c6a..9dfc4c9d0e 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -497,6 +497,11 @@ uint8_t record_burst_stats; > */ > uint32_t rxq_share; > > +/* > + * Multi-mempool support, disabled by default. > + */ > +uint8_t multi_mempool; Can you put this after 'rx_pkt_nb_segs' related group. > + > unsigned int num_sockets = 0; > unsigned int socket_ids[RTE_MAX_NUMA_NODES]; > > @@ -2655,28 +2660,23 @@ rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id, > union rte_eth_rxseg rx_useg[MAX_SEGS_BUFFER_SPLIT] = {}; > struct rte_mempool *rx_mempool[MAX_MEMPOOL] = {}; > struct rte_mempool *mpx; > + struct rte_eth_dev_info dev_info; > unsigned int i, mp_n; > uint32_t prev_hdrs = 0; > int ret; > > + ret = rte_eth_dev_info_get(port_id, &dev_info); > + if (ret != 0) > + return ret; > + > /* Verify Rx queue configuration is single pool and segment or > * multiple pool/segment. > + * @see rte_eth_dev_info::max_rx_mempools > * @see rte_eth_rxconf::rx_mempools > * @see rte_eth_rxconf::rx_seg > */ Is above comment block still valid? > - if (!(mbuf_data_size_n > 1) && !(rx_pkt_nb_segs > 1 || > - ((rx_conf->offloads & RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT) != 0))) { > - /* Single pool/segment configuration */ > - rx_conf->rx_seg = NULL; > - rx_conf->rx_nseg = 0; > - ret = rte_eth_rx_queue_setup(port_id, rx_queue_id, > - nb_rx_desc, socket_id, > - rx_conf, mp); > - goto exit; > - } > - > - if (rx_pkt_nb_segs > 1 || > - rx_conf->offloads & RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT) { > + if ((rx_pkt_nb_segs > 1) && > + (rx_conf->offloads & RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT)) { > /* multi-segment configuration */ > for (i = 0; i < rx_pkt_nb_segs; i++) { > struct rte_eth_rxseg_split *rx_seg = &rx_useg[i].split; > @@ -2701,7 +2701,14 @@ rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id, > } > rx_conf->rx_nseg = rx_pkt_nb_segs; > rx_conf->rx_seg = rx_useg; > - } else { > + rx_conf->rx_mempools = NULL; > + rx_conf->rx_nmempool = 0; > + ret = rte_eth_rx_queue_setup(port_id, rx_queue_id, nb_rx_desc, > + socket_id, rx_conf, NULL); > + rx_conf->rx_seg = NULL; > + rx_conf->rx_nseg = 0; > + } else if ((multi_mempool == 1) && (dev_info.max_rx_mempools != 0) && > + (mbuf_data_size_n > 1)) { What do you think to move 'rte_eth_dev_info_get()' within this if block, and reduce 'dev_info' scope, like else if (multi_mempool == 1) if (mbuf_data_size_n <= 1)) log(describe problem) return struct rte_eth_dev_info dev_info; ret = rte_eth_dev_info_get(port_id, &dev_info); if (dev_info.max_rx_mempools == 0) log("device doesn't support requested config" return else > /* multi-pool configuration */ > for (i = 0; i < mbuf_data_size_n; i++) { > mpx = mbuf_pool_find(socket_id, i); Where the mempools are created? Is that code also needs to be updated to use/check 'multi_mempool' variable/config? > @@ -2709,14 +2716,23 @@ rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id, > } > rx_conf->rx_mempools = rx_mempool; > rx_conf->rx_nmempool = mbuf_data_size_n; > - } > - ret = rte_eth_rx_queue_setup(port_id, rx_queue_id, nb_rx_desc, > + rx_conf->rx_seg = NULL; > + rx_conf->rx_nseg = 0; > + ret = rte_eth_rx_queue_setup(port_id, rx_queue_id, nb_rx_desc, > socket_id, rx_conf, NULL); > - rx_conf->rx_seg = NULL; > - rx_conf->rx_nseg = 0; > - rx_conf->rx_mempools = NULL; > - rx_conf->rx_nmempool = 0; > -exit: > + rx_conf->rx_mempools = NULL; > + rx_conf->rx_nmempool = 0; > + } else { > + /* Single pool/segment configuration */ > + rx_conf->rx_seg = NULL; > + rx_conf->rx_nseg = 0; > + rx_conf->rx_mempools = NULL; > + rx_conf->rx_nmempool = 0; > + ret = rte_eth_rx_queue_setup(port_id, rx_queue_id, nb_rx_desc, > + socket_id, rx_conf, mp); > + } > + > + > ports[port_id].rxq[rx_queue_id].state = rx_conf->rx_deferred_start ? > RTE_ETH_QUEUE_STATE_STOPPED : > RTE_ETH_QUEUE_STATE_STARTED; > diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h > index aaf69c349a..9472a2cb19 100644 > --- a/app/test-pmd/testpmd.h > +++ b/app/test-pmd/testpmd.h > @@ -464,6 +464,7 @@ enum dcb_mode_enable > extern uint8_t xstats_hide_zero; /**< Hide zero values for xstats display */ > > /* globals used for configuration */ > +extern uint8_t multi_mempool; /**< Enables multi-mempool feature. */ Again please group this same location as done in .c file > extern uint8_t record_core_cycles; /**< Enables measurement of CPU cycles */ > extern uint8_t record_burst_stats; /**< Enables display of RX and TX bursts */ > extern uint16_t verbose_level; /**< Drives messages being displayed, if any. */