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 EC2BE43C93; Tue, 12 Mar 2024 17:59:34 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7CFB3427E8; Tue, 12 Mar 2024 17:59:34 +0100 (CET) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2057.outbound.protection.outlook.com [40.107.93.57]) by mails.dpdk.org (Postfix) with ESMTP id F33FA40ED9 for ; Tue, 12 Mar 2024 17:59:32 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FwPNgZwHpRHV0HMctdiDa9qQhUMBgayzSO2RahYKHAAijNDgIEfe6DPuELvon4e4Nx0eBMo0eFSqvY7PD2yQGSSjX98uJBPgbs4N8j9M2LXHUa1NhVTfZP8qB1UsmRW4ktyFfJZ+CdMU0EnGynjyu8HAFdGV3vwwXRLzpxRnqeDLPsxnJ/sH3zwEV/9ztCzBHLf3JBzvBrTgEsceYhlDr85JlOobJ2v/JfJS2pADoHmduMqCY1BZJjY1ZzRh52klN32t+/T4qNsf0byb994jxfzUJ7Z9Ki+UuSm7NF8C1YX5XpMZFWUwnv1JtaDIzsDtEenNxXtmOdjIWSr2krT9SQ== 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=Y5nDc6qynEsRhlBBX9awQB7Z1hPiVu5sFQgiMBn5+MI=; b=WBTddDAuj8f3q04YRg7EGEobdutxS2JoYuAjtO1CZt5+QBW0E+KCU5L7nG4bT+eW4LDIPMh0PGTkZiLhErMzK/uJQAecSWmuE6yJKiVbuoa0JML3y7Wki/sQli8p6eLAtqJiawR9W8/AgNkfwQp2NNhg8RJiW3G5PFPNR5uHlODFIKBPJXlN46aP9gGa+/DwbieKrF3ilIugprQcahjhOt18z7zkFMGPu09nHhL5zEJ5EnA8SLhHSUhUURa0Xvsy5BMxK/T3eHu6FNFpi9Emsc8gn5rXhPWktjFwerIsX86/4dQeGMYvMjpWusBDdW6J9iXz6z85P30nNYoeW6vVeg== 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=Y5nDc6qynEsRhlBBX9awQB7Z1hPiVu5sFQgiMBn5+MI=; b=Wa1pUWQiKDWq308xZaA6OREH9RM2h74UsfazIu1TQwy42pT5tDi7biQZKI6Ez5LlbnrVwaRi0ibaXKvrSROg2VOkIjrLM0PUwUWQPeRLeTmwWd4gBpZCSeC6CLpt51PHhdo+Z1Jns45SqLAtMo7v0rigHibJA5hLk76Sl0MyVL8= 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 DS7PR12MB8202.namprd12.prod.outlook.com (2603:10b6:8:e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7362.35; Tue, 12 Mar 2024 16:59:31 +0000 Received: from CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::3ec7:6339:1c14:c529]) by CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::3ec7:6339:1c14:c529%5]) with mapi id 15.20.7362.035; Tue, 12 Mar 2024 16:59:31 +0000 Message-ID: <5d2efba1-ad6e-4e51-86bd-77d299b73697@amd.com> Date: Tue, 12 Mar 2024 16:59:27 +0000 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 3/4] app/testpmd: check queue count for related options Content-Language: en-US To: David Marchand , dev@dpdk.org Cc: Aman Singh , Yuying Zhang References: <20240308144841.3615262-1-david.marchand@redhat.com> <20240308144841.3615262-4-david.marchand@redhat.com> From: Ferruh Yigit Autocrypt: addr=ferruh.yigit@amd.com; keydata= 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 8Zk= In-Reply-To: <20240308144841.3615262-4-david.marchand@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO2P265CA0387.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:f::15) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|DS7PR12MB8202:EE_ X-MS-Office365-Filtering-Correlation-Id: c9778498-0b0c-4495-be21-08dc42b5c8f5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: R/xdOeVO/F5E8Vc7qC+dZwa/AsN6JJN2snRzqkqQLL29ReAkZ0+UjgepiSXt05suIXHSsbMowar3mpnI5SH4on7V4wLW5kt88naVuD2z6arC31AuVUZBbg5qhsBczW3H6LoeYN6DR8A3Fvi9/+rLNwrYtlScXBXJFeH9QUG4FRPwLCysT9rlwd1h8Wdqi6/VeO3kbrVw9xFkWZgnW4XTUmQ9y8WZ+CsffV/pAE5ecM4rS2vkT7EgUurRFV19q6vQlQAji2NZsB0AP1NVyTq/d8QtTqLo9dXkzBfCW9vJMGNgyWmZ/0tWgqOfmZfaOWrIca0ZpqhgfNWLsUpVYHeGn1opo/IcV1kI+2xwR4NawdJNAJkE0ob4bae4Io+fzzOdbtLGP88Btb2bZS7gLciOHOLUoJFR4WiV0EJ9sEIqXVMz8LrNBPR8K+Zi7LKAs5/bC/S98DPJWqgHQBaSbp5YGXe9Pdnj8JWS5iM/99ytAzqna4uP1uz+imimwPjP60pZ1LyK5wBpU39FbGtxBEqM3hhTV9iCQaPM81EUsQedyzXsgz8UmFTAHk9CYweWvZc7ynt0OGJ5NwmDlggRwbO4JL7mX9KuvjG4Ly65o5LnEJ8= 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:(13230031)(376005)(1800799015); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RzZ0TjBueXd1NUNGQjZqZmJrZWsrODVPMWMvL0VydEw1WTh5QkZqT0I5VERW?= =?utf-8?B?RktmaWY3Slo5RE9JUUFSa1dqM2dURVQ4blhjTEhzNmdsVXI2TWwvTkdaTi9H?= =?utf-8?B?RG9QcWczbDlFanRidXZzekxSVWpVZEJrY1k3MTVhbHZDM0JYMW0wUUZYbCt4?= =?utf-8?B?NXpWUkwxSmNtMVFPQUgxQVlEUmIrNlBSWXNvWkNmaDdEVlVreHdVcmZOWmE3?= =?utf-8?B?c3FMU1psM290WkprR2JyQk1KVWpxOTd3UVJUN3pGSWR5ellkaTJjdm1SMW1B?= =?utf-8?B?eGRxa3RPSVU3NnlPamlIS2tRZXpta3IxUlVhRG9HeWZha0dGdmNYOC9Nb0h6?= =?utf-8?B?ajUrKzY1ZXY5bVk3UndBWjVuWnQyUWdsWFZRN0xTWVdzSHpJNmJWVXhuQVl1?= =?utf-8?B?eE5iaWNxckhVOUxRakt5WGFWajNTQzZ4TDY5UlJBS0t1VUJEd0xvc2NneWxK?= =?utf-8?B?bkhDcVZFMGhnekRYMW9mN3JKNlhGc2lNS2pyWk9VMFRKTG5XV0ZXM0FTc20y?= =?utf-8?B?Z1E2SjJlU1lNbHh5T281dERJaUY3L3lIRGc3LzVaMURGK3hoTGZab2pJTkcz?= =?utf-8?B?cU1iWmdQQXk3NGlkMThjQ3RPM1g5TVZBVkRIdHYrdUpiWGd4MVh5YW0xNGlM?= =?utf-8?B?V3FuSzB6anVFbGZDMDcyWWhQSVFOYVgxamNIUXNJMXJja1F2U2RCRERkSFRY?= =?utf-8?B?Ujl2RGZ0bmJGeXRnUzNJRlI3aFRBaXNYT21icTRIanEzRm9BRGFvWHVLVGV6?= =?utf-8?B?eEFFb3l1LzcraWoyMVFibXBYR3loekcyYVZmM0ZGc3dQR2FYTGRuSUkwRFZl?= =?utf-8?B?ZmJGY0RqbkEzQmp5amMrMThZOEFlRnloRGVLZmRPMHdMOEg3MDRRNWhQU243?= =?utf-8?B?bFV3TWhDMTF5N3FZNFJZSnpXUGM4ajZzMElVN0FyR0RiUW1zUzFUTGsvbHUz?= =?utf-8?B?eDVENEhTem9nMTY5eEp0U3FaR3I1RVZLeGs2YXh6NE5QYWt3NFoyZlBpNC94?= =?utf-8?B?SzVMUmdTcStqQVQvbngzWEVNRm5KQytaWlhVQ3RGTVZRN3QxOXFleGF6d1Na?= =?utf-8?B?cHJGUXBxcWNJb2VZZDBlR3BwVVFrK2RmN0I5cWNWU0g3YkZNK1NHQWYxQWxx?= =?utf-8?B?MDlFS2REME1pTy9vM3laWHFEdnl6bGVDNmxBRlY3WWpvZVVBZTNhZ0hkREly?= =?utf-8?B?WVlXdWFjdGp3T0tndWZKMzEzbzVncmZjcVVTRmhTd3ROVjIrRUpIUlhZNGpZ?= =?utf-8?B?NHh6T3ZCczQrVUFvS20vN1hsU3FEM3lybHRZRHRPL3E3QXB2b2YrL0t4WkdW?= =?utf-8?B?a1lPb205ZWlFT3U2SUpkSzIyalU4OFU5VFdLMytwUFkva2Vza2R6ejc0WFBP?= =?utf-8?B?VzE2bW9RSWM2QUx0MUFVNXBNQTBCRVN0TWFQa3daWm1XcFp6a3BVOUYvc2Y4?= =?utf-8?B?VWp6b1NCbkRNM0tzZTU1YmlsaDN1YlBRZ3ZFZFZhVktFWW9tdlpJTHJvVUxV?= =?utf-8?B?SkoxeVk3M29oRllYd2VxeklveVlNdUNpNWo2U2xISTFacEovU21qRFJobHF5?= =?utf-8?B?RmtiWndOaGhmK0ZiL2pGMVBsMWlHSU5zSDNXYWJsc25qTllzVnR1ZWYwZm9k?= =?utf-8?B?OVQ2TnVTY0d5UUM4MUMrUDRpU3pXK0ZORWs3YWVPM0Q2d1Q2NnF0TXk1K1Bu?= =?utf-8?B?VHBlMlkwMVhnbzR3U3pNYnZBb2ZGTHMvb1dIcW1TWjRQZVhHNEQ3Y0ROdGVp?= =?utf-8?B?L1owQzFjb1dvVHpxQm4wcWF4Umtja3d4SmY0N1VmZXg3WXVqaWhtUE14cUl1?= =?utf-8?B?ektEczY1MzFjSDFQNWVBbEFCRGp2NGo2bzRZQ3JHZVJYQnhNSFI5ZCt1N21J?= =?utf-8?B?RDdKS2daNEkvNmZiQ2Vrb2lpSVBobkJGN2dKdlBWdm5PZ2c2aUFMQTBEaW1E?= =?utf-8?B?bksydEJjQTljVGNJVmJQUzd0VkY2cFg1SHhhU0V6S1duRUMzMVhQWllpZzZo?= =?utf-8?B?em85a1I0Y21ZdTVYSE11VFdXRVlNT3F2UnRiN1JEd0tmNGpsUGVpcGVKVXJv?= =?utf-8?B?WmNzTkgyNUpqUkhZU0FpbzRqMkZrVjNsS2l0N3o0cFp1ZnVhcjV2T3d1U1gx?= =?utf-8?Q?8KK9juGZVm3duqGwIeKmmXZ0M?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: c9778498-0b0c-4495-be21-08dc42b5c8f5 X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Mar 2024 16:59:30.9058 (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: pF/R4NIWT0AHY8jghhnqipEersJoSaoTHnMo5If8JzcCQKtcuDZrULRYJGdHgXbo X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8202 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 3/8/2024 2:48 PM, David Marchand wrote: > Checking the number of rxq/txq in the middle of option parsing is > confusing. Move the check where nb_rxq / nb_txq are modified. > > Signed-off-by: David Marchand > --- > app/test-pmd/parameters.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c > index 8c21744009..271f0c995a 100644 > --- a/app/test-pmd/parameters.c > +++ b/app/test-pmd/parameters.c > @@ -1063,6 +1063,8 @@ launch_args_parse(int argc, char** argv) > rte_exit(EXIT_FAILURE, "rxq %d invalid - must be" > " >= 0 && <= %u\n", n, > get_allowed_max_nb_rxq(&pid)); > + if (!nb_rxq && !nb_txq) > + rte_exit(EXIT_FAILURE, "Either rx or tx queues should be non-zero\n"); > } > if (!strcmp(lgopts[opt_idx].name, "txq")) { > n = atoi(optarg); > @@ -1072,6 +1074,8 @@ launch_args_parse(int argc, char** argv) > rte_exit(EXIT_FAILURE, "txq %d invalid - must be" > " >= 0 && <= %u\n", n, > get_allowed_max_nb_txq(&pid)); > + if (!nb_rxq && !nb_txq) > + rte_exit(EXIT_FAILURE, "Either rx or tx queues should be non-zero\n"); > } > if (!strcmp(lgopts[opt_idx].name, "hairpinq")) { > n = atoi(optarg); > @@ -1098,10 +1102,6 @@ launch_args_parse(int argc, char** argv) > n + nb_rxq, > get_allowed_max_nb_rxq(&pid)); > } > - if (!nb_rxq && !nb_txq) { > - rte_exit(EXIT_FAILURE, "Either rx or tx queues should " > - "be non-zero\n"); > - } > if (!strcmp(lgopts[opt_idx].name, "hairpin-mode")) { > char *end = NULL; > unsigned int n; There is already a runtime check for queues [1], perhaps we can remove it altogether from arg parse. Also I think the order of the 'hairpinq' and queue number parameter processing depends on order user provided, so this may not be very reliable anyway. [1] https://git.dpdk.org/dpdk/tree/app/test-pmd/testpmd.c?h=v24.03-rc2#n4621