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 6CEC2A0566; Mon, 21 Nov 2022 19:40:30 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 177F642D1F; Mon, 21 Nov 2022 19:40:30 +0100 (CET) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2078.outbound.protection.outlook.com [40.107.92.78]) by mails.dpdk.org (Postfix) with ESMTP id 44F6D42C76 for ; Mon, 21 Nov 2022 19:40:28 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SMKgr12t5e0lbkbGO0KEdpUvUhkAdHJKsyglsFxFI8H8YM16gso01otfcoMWMcP9mYW/r2TUdxpUORiejufPRf6TE6nNxaqs7EV5l/C0GBdTi8CRFXNJd2LKokQWINfXrw/NpHL4zK/oKWSf9TBTeUM73CdmsTKBbtPso5wroCE0kQFJegwMFdSGAjxFVdj4vA5AUz7Ly4KxlfztpVvbH7Vr14EQP1SUul3sNSMx7BOs1y4j71h6Fv9XU3ay6gJZBZftioRLSsWgzbpGG2f9D3fFTkkbi5B7709PHntYbVZ8Q7QAg0BlsIYUcpaQQmcAfo/XWqj/H7+N/VMtoxeRSw== 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=iHFMmhtP0BlMjEav1X8U21pgvWxPsoG/UcYoWacWHL8=; b=VedYUCxWowGXw8bF6VdXMY+UKL7vd6TaVgtnH3IAiOsQvYJoyu+B1I5jYBZPLOGb5uvtLwwouzHb8feGRs5Xqzix7S04QHYekHEA6LgmkzFl6mau3sGu21izy4JDT/Ng9hzgPzUvArrYIqv9kZdulSxnoRkFyvucKHHI1TrcWqfdaiXJLFoBC9Vei4kRr/SPzfjAS33ZapL/Fh+YIbFeGOKMf0JWHttZpVJTUE1Uw5jm+koIS078NNuKVyozgbKQzC5dzCbhE4kkVkqzSuge1rwhwDmVSTydSfKCYYvxwVIBDgd0J/0NZkEl4Fz5BwLADiFj2FsJuC797o9iwMYT1g== 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=iHFMmhtP0BlMjEav1X8U21pgvWxPsoG/UcYoWacWHL8=; b=xv20bpLT6cT3l6vkBQOX/KEBJm54RdpT9xZ2d8M4wUZD2dNuVDqyQyJzf/YVfYT9H2bmGuUep1uY+FFF7n483VyEGDIBQYB8P08TWxw1axnNChflhDE7XDlQE9X5tAkwaAfHPN9RQc3WuQljQ5QRhXHXPmKhZG2jUXNKTR7ecjM= 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 MW4PR12MB6684.namprd12.prod.outlook.com (2603:10b6:303:1ee::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.11; Mon, 21 Nov 2022 18:40:25 +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 18:40:25 +0000 Message-ID: <02314123-4d41-2e71-d37d-6d1a5891e573@amd.com> Date: Mon, 21 Nov 2022 18:40:19 +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: <20221121143347.3923255-1-hpothula@marvell.com> <20221121180756.3924770-1-hpothula@marvell.com> From: Ferruh Yigit Subject: Re: [PATCH v7 1/1] app/testpmd: add valid check to verify multi mempool feature In-Reply-To: <20221121180756.3924770-1-hpothula@marvell.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO6P265CA0025.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ff::18) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|MW4PR12MB6684:EE_ X-MS-Office365-Filtering-Correlation-Id: 65f1c304-5dba-42ec-7a4e-08dacbefda8d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iXxl0kNnYq8fa8j+CIchtObmdcbPQB1LmbbyiPZsTLI6FPbnXJDWvUhhHcBSOe+v5eNlVX2ts3vWTFFuK1ShNaEn7xDXYCq4ySGG296Uw+3ZAB9+HKaqwxrV9Zh763f21Q83gWKudqrtdpDmsEYMN1xHRgJAU4mQVb9uTKX05isJ3dEq4j6Er8jwLMHFqGLyDFpUCx+9vOzNp563nIBI4sRlvROsCcUbkEZF6VJq948b27n4kBwja8sUsC9XZCPuXCYYGPhCsB4KhYb+R10eWihVGG2kl08MdwCvF7Sk6QjjFkpaPxHoPKNtL8xXhCtBN78hiXEQ/5dfoxOwDBi3wjSELW4Xr6V70wAX+645FG64i39eahl+icE/yr15Xf7bM6BnLTdAfyND0jPz8eRUYD7n8y535A3WlFd4ZqBKiwLG+2sNg29UldW9N8AGZ08wl3v5wCaGdSbNMuDXNrNFv+LlU4KFPrFJkX0G7ohstj+gkOBMcz8v9St5l0RJIBYWGiWrlOIXADx1zQw8b8VboYCZ0rNPUx8kIxsOCx+p8YfpJrHUKj3d/G/FO/EFGhKIdvfrNheFkog9B2lkZ32/nB1LvyhT9yg3ahmR6V/Yqz26zaFbKg+LfBL03tq47djzHrJcO9j7ElhJhOmp2Bur2bgilay1s7N9nMoKSiHI0zGKuV3imRYCwFRTq1+XhWQxXZZcwAHIXeeF5MPSdQqG1P4pNfn9xrJNi09Rxn8H71k= 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)(136003)(396003)(346002)(376002)(39860400002)(451199015)(2906002)(83380400001)(31686004)(53546011)(41300700001)(66946007)(66556008)(66476007)(2616005)(31696002)(86362001)(36756003)(38100700002)(110136005)(15650500001)(6506007)(6512007)(8936002)(4326008)(186003)(8676002)(44832011)(5660300002)(6486002)(316002)(478600001)(26005)(6666004)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QzBiN1djYmgvZlFXOFNEaldWNUZmdXhTdk9QUGxOQS9uWGwyeW9KNm1vOWFQ?= =?utf-8?B?WFVmLzFyS0RsSjBpcHdIa253MmxrY29tdCt1UEdqeTZFNERYZG1rSXZEbjUz?= =?utf-8?B?MlRHTlpOTERISS95ajRjQkpGcjBVNS9PSDVPV2kzRDFCRVRMQmllaFRzSHZU?= =?utf-8?B?WTNyQ2FwVzYzV2dOZUhXVWF5akpjVUFEdEtqc3hxS3pRLzVtNTFhd3l4RWJr?= =?utf-8?B?NGlXVFU4bWo4SUxLdThRWnl5SDhKZm53eFBaS2Ewd0o4YlM4dHB6YWh3aUx4?= =?utf-8?B?N1J6SlR6ZFhVREVjYi9FK3NMRWlyVzZsY2FadUQzQTN1c0d0Qmc0MWc4WEF2?= =?utf-8?B?OW5EVUF3S2haay9EYmZnN1h3dkt0N1hFK3hMSHN4STNTRGZCZUREeUlPbnRr?= =?utf-8?B?Sm0zVG5nb0IweTZ0TlVOS1NlMFp3SnJKQmRLdE0zZVhDNzRodWE1VVVMRFly?= =?utf-8?B?S1B3YWpPNGNhdnA2dGN1TmJIbmxSUnpuU2xha3c2R0dqTVF4Mml2dTB3VGZP?= =?utf-8?B?STlrMVA3VW4yMzVXdm5PUGs1a2orUGRPdmR2V1BFMGZLR2FJb0xSWkR3TUFt?= =?utf-8?B?VzB2dHRDVUdENjJJNzJ3aTdSWGNvTENZMnNnSGZHV29WbmM2Nm53WUNHZGdr?= =?utf-8?B?dUJaWFJGM2hPVDB5R1lMS2lrUWNQeFRMNjhpU2RqS0pRWGh3NTFJTDFoOE1T?= =?utf-8?B?Q2EzdGZxYnV1eVhHMVQwRXVRbVlXMm9xNG0rYUZtWnFjUWpNeS9ERTYvd3RN?= =?utf-8?B?cG5FdDBwYjdnOGZhMXNOWG9GVjFxS09pQURXUnFnOXZDSE1JWnZBRkF1UlVn?= =?utf-8?B?a1NNc2dRbnVZY2UvTGxscjFvQ0d4Q2FNdFVjZ0tVT3B0VnhVTDdMMU1lR1N0?= =?utf-8?B?WHJmbHZITU5NdjEyb3FNUGVMb290cEF4bXZDNUV3WkVXRGFoaXZ0cHRyeWFI?= =?utf-8?B?bGFHVk1tZDlkbUIxajRtbjczRjd3MTVpeVhydmdndXlPZzNEVGc2T3l4MjdR?= =?utf-8?B?WHNEb3JVakQ0aUxEOWtCVDYxUjdDU3dwL2VBNURPcEx3T2lIKy92RjNjY2lq?= =?utf-8?B?TkprMjJsSCtRQ09BNy9jcVphRjQ4Y3cyZVRhYVZKMU05aGZ6QlhhLzdTYlJl?= =?utf-8?B?MitIbEZOUTdha0lLRUk2bnBVdnNHUjlrd25xTE5sc3h2Vm9vdG9SV1hEWGVR?= =?utf-8?B?R1lETk1SR3FHdEtTN1ZHVDJreDRjQ1lwM0F2bjRzQmNkaTg2SXEybFJmRGY3?= =?utf-8?B?azRidlFVN3EyejRnZytiV2xjd2JydmJ3OXNwWEVOeUNHQTVXV1k1bjl2LzZT?= =?utf-8?B?bFY5b0p2WWRaWUNSUlZ4TE14Q0g5cS9DeEl5Z0RaeGlQV3VtbzM2RXFURy9z?= =?utf-8?B?OTRqaXhXb3h6cjFWT1lCdHd0RC9ZNS8yd0F4bDdvRWdxbm5SOGdIQ096bHl3?= =?utf-8?B?UnBMcm5abytKSTF6V2lJa2t3c05DSVRhUk9TaENhYnVxcXRBNFMvSlNkT29D?= =?utf-8?B?cmx2cjkwVmFKMWFQUlhKTzBwK3ZRQVMyZEhJODFTVkVWYjB6T3JDcHZaQUU4?= =?utf-8?B?Tzk1S1ZZUUJJRmJDcXBzdmROV1crVjdHNktETjBGK0hyNElzU1dYdDl6Rlg1?= =?utf-8?B?cStOcUtseHEzbVZ2c1ZyMExiSzdvUE5TYXNXblNTM2ZWV2NJWVA0S0l6Y3Vi?= =?utf-8?B?WVlxb0phOFNsK0U4dUFyYWNuRkJjMXlKS3lFa0hJcHg1SUdwdHloL0lyZWN6?= =?utf-8?B?elFmNWdaVTZLV01MM281d2I4enk4V0dFL0ZPYkdvRC9rSkN4UWFQWUFvbDNl?= =?utf-8?B?UTRiSmFPZENsRnpLN1hrVURQOXQyWHJOdUROcHoybHJnRUdsMFNzNEwwMk1n?= =?utf-8?B?a1NrQzkvQk5qT1RaMlc1YldoRjg2UDM1SzA5WE9WeGxPK3ZIWXpBMGlYYWg2?= =?utf-8?B?ZFg4YmNWOWl2R1RNMitNcVNHdGhSRGJ2V25tTkpxWnR6cVNJREZuNC94T0Fi?= =?utf-8?B?TnQ2aWx4Y0laaW80UXFoWFFoR2ZDRkdnL2NTY2lKZmFvbHdVZkRLNTh4aXYv?= =?utf-8?B?VGp0enIxbFhDbTg3dlFtZUg5WEFxNmR2RkVMV0Fmc014RUVPTXRmTmkxRkNz?= =?utf-8?Q?HYW+/i/MnGQVt29TCUKKy4hxU?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 65f1c304-5dba-42ec-7a4e-08dacbefda8d X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Nov 2022 18:40:25.3173 (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: ZlFLMD7kHgAEWzRZ4mGxpiXoh489DbZaOd2JfYHW6HLzU3BMuWTBC/xpj8fDzhZU X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6684 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 6:07 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. s/multi-mempool/multi-rx-mempool/ Also moving argument paragraph up. > > Bugzilla ID: 1128 > Fixes: 4f04edcda769 ("app/testpmd: support multiple mbuf pools per Rx queue") > > Signed-off-by: Hanumanth Pothula Reviewed-by: Ferruh Yigit With noted issues fixed, Applied to dpdk-next-net/main, thanks. Lets wait test report before requesting this to be merged to main repo. @Yu, @Yuying, Can you please verify this at the latest head of the next-net tree? Thanks, ferruh > > --- > v7: > - Update testpmd argument name from multi-mempool to multi-rx-mempool. > - Upated defination of testpmd argument, mbuf-size. > - Resolved indentations. > 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 | 7 ++- > app/test-pmd/testpmd.c | 64 ++++++++++++++++----------- > app/test-pmd/testpmd.h | 1 + > doc/guides/testpmd_app_ug/run_app.rst | 4 ++ > 4 files changed, 50 insertions(+), 26 deletions(-) > > diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c > index aed4cdcb84..af9ec39cf9 100644 > --- a/app/test-pmd/parameters.c > +++ b/app/test-pmd/parameters.c > @@ -88,7 +88,8 @@ usage(char* progname) > "in NUMA mode.\n"); > printf(" --mbuf-size=N,[N1[,..Nn]: set the data size of mbuf to " > "N bytes. If multiple numbers are specified the extra pools " > - "will be created to receive with packet split features\n"); > + "will be created to receive packets based on the features " > + "supported, like buufer-split, multi-mempool.\n"); s/buufer/buffer/ > printf(" --total-num-mbufs=N: set the number of mbufs to be allocated " > "in mbuf pools.\n"); > printf(" --max-pkt-len=N: set the maximum size of packet to N bytes.\n"); > @@ -155,6 +156,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-rx-mempool: enable multi-mempool support\n"); > 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 +671,7 @@ launch_args_parse(int argc, char** argv) > { "rxpkts", 1, 0, 0 }, > { "rxhdrs", 1, 0, 0 }, > { "txpkts", 1, 0, 0 }, > + { "multi-rx-mempool", 0, 0, 0 }, > { "txonly-multi-flow", 0, 0, 0 }, > { "rxq-share", 2, 0, 0 }, > { "eth-link-speed", 1, 0, 0 }, > @@ -1295,6 +1298,8 @@ launch_args_parse(int argc, char** argv) > else > rte_exit(EXIT_FAILURE, "bad txpkts\n"); > } > + if (!strcmp(lgopts[opt_idx].name, "multi-rx-mempool")) > + multi_rx_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..716937925e 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_rx_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]; Better to move new variable out of packet split related variables, and below them. > @@ -2659,24 +2660,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 +2687,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_rx_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", This for EAL logs, not for testpmd, converting them to "fprintf(stderr, .." as done in rest of the file. > + 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); > + } > + > 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..0596d38cd2 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_rx_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..af84b2260a 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-rx-mempool`` > + > + Enable multi-mempool, multiple mbuf pools per Rx queue, support. > + > * ``--txonly-multi-flow`` > > Generate multiple flows in txonly mode.