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 A72B9A0566; Mon, 21 Nov 2022 18:31:54 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4468742D11; Mon, 21 Nov 2022 18:31:54 +0100 (CET) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2083.outbound.protection.outlook.com [40.107.220.83]) by mails.dpdk.org (Postfix) with ESMTP id F397742C76 for ; Mon, 21 Nov 2022 18:31:51 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Oe/4hSCLjxrJyEVK+2O0+uWXoAHabmqoM7mRxhWOdrjsYETITrOAQMGpVXKRYYtv4Cyi43LLvkYiw8ZFxOeu/UnsLgCd9q58KJNbde9BKS2GgwqiS3lVTy8mYKWQUdxzPEXy668mlhU3zYVC386ttR2YA9h2ighWYZwYVIxBMP1mlVUmd8uAjPI2PcgBuq0g9tLXxowFcP/J52WjwdcsELLqJmbwTkyFt8fLNSVjsBjkwXBW92xLX7neFtwdrCXODzVL/FztvHCBUNAuAMRBXLV+cgr/swBHDLvMkGN7XHpeM11X/0UV7nK8M/0A2qPbW99i5Ft4hZwftqgihOg0UQ== 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=6i/FCjeszuhJvbKFetNIHR1Foyp1CmbbOIWLt3e9GQs=; b=EUkp3QsfsMctA19+MM9bcW3hb82sO4PezP8hIsQJabcAEZ0UZBWfBTVgXjQUSLT4/CQf53B5Wmqy5KyeFnGh5cmVkv4yqar/apXYoD+mNd2CcI8MCjO3AaXZ2qETr9yFvG+2v8+aK/eGjqQzqZX6Q5maj55gGtG+x+JZ3eKGZtJROnQZCIwEutiviWBLLRS2KQAn1uKMk39j9RbUjPenNbac5t6teo+Z+DHo5/IqUmYSBciFxvM8A26TK4gmNmHObB2G7BlOMt0BKpjk6dbmoOCK+G1fATvFZjR8WwzkGlrZcsdyyLcahNrc72J649ELPyGbSS8mfphulRuf5l+5cg== 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=6i/FCjeszuhJvbKFetNIHR1Foyp1CmbbOIWLt3e9GQs=; b=Gz9XwC5MHbd6WE5Vnn+vmenIRRBlTVIO08A+kOG8C+DGM4II7jxKqcDbCVEzmeFVsEa5VaQpWuYfmRbtx3enpvkaGnjOJYlOTQ2Q76nsSEh23CNzj0tdqTUPnYPiRPIp5yVZjE7eK7DV4U+f4IaDiDPpsxGDUn907dz4X5xABtE= 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 CY5PR12MB6429.namprd12.prod.outlook.com (2603:10b6:930:3b::16) 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 17:31:49 +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 17:31:49 +0000 Message-ID: <6696ea9a-442b-a10b-0ce9-dee07d5bacb2@amd.com> Date: Mon, 21 Nov 2022 17:31:43 +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: <20221121124546.3920722-1-hpothula@marvell.com> <20221121143347.3923255-1-hpothula@marvell.com> From: Ferruh Yigit Subject: Re: [PATCH v6 1/1] app/testpmd: add valid check to verify multi mempool feature In-Reply-To: <20221121143347.3923255-1-hpothula@marvell.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P123CA0487.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1ab::6) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|CY5PR12MB6429:EE_ X-MS-Office365-Filtering-Correlation-Id: 9b25e0c7-fee0-4aeb-4e86-08dacbe64547 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kEHP6G4H4AgAiYQTLxbPym81Xd3ITD/ltnt4v1UGecze0o2Ir2/aUs6rTloQllfJUUH6p6VnASs4glw/EcKgCf7fFTnTviDiKtQzpZCh5sDPjcwU3LqJg5YF/McPEsGp2wNY6kgkawgUPmTUexPfmEM0LwzyaUxRIEfXgM3p8d6zGAHz8poVhRF3YyGkmFowbnSaM1pVcS5txcAQ8LS5YGKfmyjxCwHvDMNUFf+PKIKtGiF+Nk8cOpU/lYIVm5IGHxspxSvaJHTuv4k7zrqVeK0tp+k95yf9/eQkB4GsszcKr6iC+RGAJIhKm1mHM2utcfjDCuRnldRCkP/ahKHu8Ab4584mktDtAVruDS8whodpb9SamE/xYIb0xMZaNE5YGh/bbVXZCKL2HX1nUeB2OuWGgZeL+tgObR82infUFegybA70jTZQoNs8rCqXf5SIKbPOnFW4TKozTEO5T5CyWNgjcN4+POxTUnpA6IROj9XIUh4gwUeAXtVl+ffzrGYTsW2sv2aUfIqSA8mNKMnFaxPDQKA9Z7f2RKdHLa3v1j6gdhHzLnnwt4FYb6hai3vrUkD75z1x9iFCT9YFjMW2rp0MOG7edctBULSF3clUjrtRBTFU3N5mC3qMMf9wqLhDdFv3cAU2uLpEEQ5NrAUXFjTRICgptJIB9n82ZNiV2nwIxvNCxF5wFWP7XFPIup7/Y68J7tZ+vfdkPW3+MNLHOawej8wVpIkT0p3xLtUhcI8= 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)(366004)(396003)(376002)(346002)(39860400002)(136003)(451199015)(31696002)(86362001)(44832011)(36756003)(8936002)(15650500001)(2906002)(6506007)(26005)(316002)(53546011)(6512007)(66556008)(6666004)(66476007)(5660300002)(6486002)(66946007)(4326008)(41300700001)(110136005)(478600001)(8676002)(2616005)(38100700002)(186003)(83380400001)(31686004)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UzlGZFV5RG5PUU1iYzRPY1hPTS9iSTdhdFZiVHlGOWNQNC92amZaUUU4UE9x?= =?utf-8?B?RytDRUNaMmhiYzVMT21ZVm1lZWNZdTd3eUZuNk5Pb2h3OGUvem45QzhaTmNN?= =?utf-8?B?UjY2aUR2VnJOYjNzbWQ2ZnJCSDdHa1dGV0g5b28yNVpkaGFMeVIwbnRiZVZN?= =?utf-8?B?eko2dFNMRFIrbGtSNW9sakYxSGpGelRwQkw5SWNxR3RMMFZPV2J3ZmRKenph?= =?utf-8?B?VDdaaTQvY0tadllKcnp0NXVjSDkrMWJVWjZRUDhOMVlqUHJhd2krN3N6UjlY?= =?utf-8?B?RHdQQWJTeUlSUmJHMHlDdDB1ZUlsNkRDV01HSjR0WmFlaE4vbExLazVzbVdI?= =?utf-8?B?aGNTN2pFamhQc21lMld4WDNLUkVrK3FTbzZ2WXJWTGdxUXpMakZzMCsySi9r?= =?utf-8?B?bDRReExycWxBMm8wa2kxS1RBTFJxcG5yc01iU01oWG40eXhBWUFSZjRvdzNH?= =?utf-8?B?VzFyQ1lEeUg0T2hpM0FHYmhTL283aHZCaXNEczQ3TlpTM29WL3BZRHV0M2tL?= =?utf-8?B?S21lYVAxZHU3ZVZZNTdURTdSRzdEL0V0S2NHNytEOE5zaU5QdGJFTDYxZGZN?= =?utf-8?B?WEVUOWRFUmk3TXU5Y0Fmb1g4QTFSRURxaUlMejM5dlh6cU9RTUI5S2RwanZS?= =?utf-8?B?UmtmRnBMSkxWUkFrWHNrdVhrRTdtTVI1WW9qMllVUTQ4Uk4ya1RqOHA4cnJj?= =?utf-8?B?cTRJdE1HQzc3V3pOVlZ2YjBDS0dUYnVvbFJhS1g5YUZzZGg4bW1sN24rWlFz?= =?utf-8?B?YVRFTm56cm00Ym02ZFpURy81SHVmdUhqRTZJaG1OVFo1UWtreFRCZW5aUU5X?= =?utf-8?B?TVpSUTltL2FLYmR6cGwxa2lYNHBXZVdqeUhwbnVwWjRzb1ViMCtyYlRCbGIw?= =?utf-8?B?bWhVcUkwRFVpWHZRcHM3eHJ0Q1YyUTdHZ0wweTl4NldNeHZtZTJPYllVanlt?= =?utf-8?B?K3kwS1A0RDE0dVFsa1ZDeDFRV3lIWE1LVGZESjdWV3NyRklCS0JzdzFCL3BD?= =?utf-8?B?d2hkSk1xLzExem9UVnFPSUJlZFB6OHVHK0N4L20rZDB2eGZSWWV0Z0NkMmxt?= =?utf-8?B?QnpKclpGUkdBSUprcVQ5TVBpaW13ZkdMOEVuaFpsT0ZMM1NUL2hZM3JCY2Zq?= =?utf-8?B?OWlROEtyeFpVRkIzRVZFNTdCT3Q3dmdHd1NFSVBnSU5iVWlxMlY2MzIrL0p1?= =?utf-8?B?eHgyU2VTQU8wc2dKUVgxVWFFdXdlZVhNdW9pU1NjZUZ5Vm1ycHFoeVNzVTky?= =?utf-8?B?WVBHZmtBL1JBcGhFaWNnZzI3c2xUZXBtVmtjVmtuR2M4cEl6TW5hRFdubVpl?= =?utf-8?B?OENBa0tCakxXOG11QmU3MEpXaUViVEFGYUViaFhkTHRWNVRMcC9TNkRUUXls?= =?utf-8?B?ZXpJek1CcURqTGZRazF3Y2xaajFzcEgxT3BFQ0dQM2laZFFrVm90ZEthNElM?= =?utf-8?B?V0x0ZzlCNlpWSENudDFPUVFUamJiV2JnNU9ocUttWkcyZHR0N0I4SHExa0tm?= =?utf-8?B?bEJBWXBkazNVenFIa29CT0Z0QzV0ZHFrbUNSc1cyMFdDZnFiZmdFa2t3REhl?= =?utf-8?B?SEN5bWREdno3cUhLK09SQzhuS0VtS0dOWW5heHJOOW95RTRhOHpUZXBqVW5n?= =?utf-8?B?ajBhM1ZGWjZUWVI1eXJ5amNFNnROLzFHekthcXdCYWVTR1laLzdMOXpJWDVl?= =?utf-8?B?b1ArV3ErQm00OWl5K0Jjd2hNS1JDaDVjdFdKNE00K1U5SjlUd3hGS0lDQlpq?= =?utf-8?B?OEh0MWd3bWNQaFR4MXBYTER3YjdGV2lpd0FwK2ZIak9jeFA4c1VwVEYydnVI?= =?utf-8?B?ck9uVnJTSUZTdVdoSlVRSm1Rd3NLSWxRN0M0bWxSc2pwNUkraEphdXFCNEFK?= =?utf-8?B?aFJncUV0eTVzV1F1a1hxS3BrNTBFMVJyK1FpUnljOXBEWVpSaDRXVWNNR0VV?= =?utf-8?B?a2JCcGVXWlBHWURHNlJSdUcxbE9RZGttbW9SeGVVMVNQY1ZEOFllMENkUEZW?= =?utf-8?B?ODYyU2hQU1NaM3lZSGIrRVg2TkFNNjlFaGxvRDdMTXhOam5uK2sxczQxa1NP?= =?utf-8?B?emNNUEhIWFR5QmVsdTIvTTBkeUw1MlM3YW82U2s5NVAyNW5haXhqYlVPM0o3?= =?utf-8?Q?c6ZckoKvXfnd1Pfubuxksstnd?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9b25e0c7-fee0-4aeb-4e86-08dacbe64547 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2022 17:31:49.4219 (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: 12mbShdWDPJiOJVufC2YFL3xEenPwTeodFIM+AtNrR+FTCjLj0ezpM3WI5hrhKOG X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6429 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 2:33 PM, Hanumanth Pothula wrote: > Validate ethdev parameter 'max_rx_mempools' to know whether > device supports multi-mempool feature or not. > Validation 'max_rx_mempools' is not main purpose of this patch, I would move below paragraph up. > 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 > > --- > v6: > - Updated run_app.rst file with multi-mempool argument. > - defined and populated multi_mempool at related arguments. > - invoking rte_eth_dev_info_get() withing multi-mempool condition > 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 | 4 ++ > app/test-pmd/testpmd.c | 66 +++++++++++++++++---------- > app/test-pmd/testpmd.h | 1 + > doc/guides/testpmd_app_ug/run_app.rst | 4 ++ > 4 files changed, 50 insertions(+), 25 deletions(-) > > diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c > index aed4cdcb84..d0f7b2f11d 100644 > --- a/app/test-pmd/parameters.c > +++ b/app/test-pmd/parameters.c > @@ -155,6 +155,7 @@ usage(char* progname) > printf(" --rxhdrs=eth[,ipv4]*: set RX segment protocol to split.\n"); > printf(" --txpkts=X[,Y]*: set TX segment sizes" > " or total packet length.\n"); > + printf(" --multi-mempool: enable multi-mempool support\n"); Indentation is wrong, one space is missing. Can you also update the '--mbuf-size=' definition, it has: " ... extra memory pools will be created for allocating mbufs to receive packets with buffer splitting features.", Now it is for both "buffer splitting and multi Rx mempool features." Even it can be possible to reference to new argument. > printf(" --txonly-multi-flow: generate multiple flows in txonly mode\n"); > printf(" --tx-ip=src,dst: IP addresses in Tx-only mode\n"); > printf(" --tx-udp=src[,dst]: UDP ports in Tx-only mode\n"); > @@ -669,6 +670,7 @@ launch_args_parse(int argc, char** argv) > { "rxpkts", 1, 0, 0 }, > { "rxhdrs", 1, 0, 0 }, > { "txpkts", 1, 0, 0 }, > + { "multi-mempool", 0, 0, 0 }, Thinking twice, I am not sure about the 'multi-mempool' name, because 'mbuf-size' already cause to create multiple mempool, 'multi-mempool' can be confusing. As ethdev variable name is 'max_rx_mempools', what do you think to use 'multi-rx-mempools' here as argument? > { "txonly-multi-flow", 0, 0, 0 }, > { "rxq-share", 2, 0, 0 }, > { "eth-link-speed", 1, 0, 0 }, > @@ -1295,6 +1297,8 @@ launch_args_parse(int argc, char** argv) > else > rte_exit(EXIT_FAILURE, "bad txpkts\n"); > } > + if (!strcmp(lgopts[opt_idx].name, "multi-mempool")) > + multi_mempool = 1; > if (!strcmp(lgopts[opt_idx].name, "txonly-multi-flow")) > txonly_multi_flow = 1; > if (!strcmp(lgopts[opt_idx].name, "rxq-share")) { > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c > index 4e25f77c6a..0bf2e4bd0d 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -245,6 +245,7 @@ uint32_t max_rx_pkt_len; > */ > uint16_t rx_pkt_seg_lengths[MAX_SEGS_BUFFER_SPLIT]; > uint8_t rx_pkt_nb_segs; /**< Number of segments to split */ > +uint8_t multi_mempool; /**< Enables multi-mempool feature */ > uint16_t rx_pkt_seg_offsets[MAX_SEGS_BUFFER_SPLIT]; > uint8_t rx_pkt_nb_offs; /**< Number of specified offsets */ > uint32_t rx_pkt_hdr_protos[MAX_SEGS_BUFFER_SPLIT]; > @@ -258,6 +259,8 @@ uint16_t tx_pkt_seg_lengths[RTE_MAX_SEGS_PER_PKT] = { > }; > uint8_t tx_pkt_nb_segs = 1; /**< Number of segments in TXONLY packets */ > > + > + Unintendend change. > enum tx_pkt_split tx_pkt_split = TX_PKT_SPLIT_OFF; > /**< Split policy for packets to TX. */ > > @@ -2659,24 +2662,9 @@ rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id, > uint32_t prev_hdrs = 0; > int ret; > > - /* Verify Rx queue configuration is single pool and segment or > - * multiple pool/segment. > - * @see rte_eth_rxconf::rx_mempools > - * @see rte_eth_rxconf::rx_seg > - */ > - 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,22 +2689,50 @@ 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) { > /* multi-pool configuration */ > + struct rte_eth_dev_info dev_info; > + > + if (mbuf_data_size_n <= 1) { > + RTE_LOG(ERR, EAL, "invalid number of mempools %u", > + mbuf_data_size_n); > + return -EINVAL; > + } > + ret = rte_eth_dev_info_get(port_id, &dev_info); > + if (ret != 0) > + return ret; > + if (dev_info.max_rx_mempools == 0) { > + RTE_LOG(ERR, EAL, "device doesn't support requested multi-mempool configuration"); > + return -ENOTSUP; > + } > for (i = 0; i < mbuf_data_size_n; i++) { > mpx = mbuf_pool_find(socket_id, i); > rx_mempool[i] = mpx ? mpx : mp; > } > 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); > + } > + Technically execution can reach to this point without taking any of the braches above, in that case there should be an error here instead of silently continue. I think either there should be a check here, not sure how to do, or single mempool can be the default setup out of the 'else' block. What do you think? > 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..e4f9b142c9 100644 > --- a/app/test-pmd/testpmd.h > +++ b/app/test-pmd/testpmd.h > @@ -589,6 +589,7 @@ extern uint32_t max_rx_pkt_len; > extern uint32_t rx_pkt_hdr_protos[MAX_SEGS_BUFFER_SPLIT]; > extern uint16_t rx_pkt_seg_lengths[MAX_SEGS_BUFFER_SPLIT]; > extern uint8_t rx_pkt_nb_segs; /**< Number of segments to split */ > +extern uint8_t multi_mempool; /**< Enables multi-mempool feature. */ > extern uint16_t rx_pkt_seg_offsets[MAX_SEGS_BUFFER_SPLIT]; > extern uint8_t rx_pkt_nb_offs; /**< Number of specified offsets */ > > diff --git a/doc/guides/testpmd_app_ug/run_app.rst b/doc/guides/testpmd_app_ug/run_app.rst > index 610e442924..329570e721 100644 > --- a/doc/guides/testpmd_app_ug/run_app.rst > +++ b/doc/guides/testpmd_app_ug/run_app.rst > @@ -365,6 +365,10 @@ The command line options are: > Set TX segment sizes or total packet length. Valid for ``tx-only`` > and ``flowgen`` forwarding modes. > > +* ``--multi-mempool`` > + > + Enable multi-mempool, multiple mbuf pools per Rx queue, support. > + > * ``--txonly-multi-flow`` > > Generate multiple flows in txonly mode.