On 3/13/2024 7:37 AM, David Marchand wrote:
> On Tue, Mar 12, 2024 at 5:59 PM Ferruh Yigit <ferruh.yi...@amd.com> wrote:
>>
>> 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 <david.march...@redhat.com>
>>> ---
>>>  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.
> 
> Good catch.
> 
> This other check comes after parsing args, so I suspect it is just dead code.
> I guess I'll change it into a rte_exit(EXIT_FAILURE..).
> Is this what you propose?
> 

I think that check is the main check for nb_rxq and nb_txq.

The one you removed is for the 'hairpinq' parameter, which is not a very
common usecase.
But nb_rxq and nb_txq requirement is very common and it is protected in
the main after parameter parsing.

I am not suggesting adding 'rte_exit()' for that case, probably it will
fail in some other part and error log can provide the required hint.
And I am worried if it breaks some unexpected usecase with exit.

I was just thinking the check can be removed from 'hairpinq' parameter.

> 
>>
>> 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.
> 
> Indeed.
> 
> 

Reply via email to