[dpdk-stable] [PATCH] app/testpmd: fix Segment fault when start fwd

Ferruh Yigit ferruh.yigit at intel.com
Mon Sep 16 17:27:43 CEST 2019


On 9/16/2019 7:37 AM, Wang, ShougangX wrote:
> Hi Ferruh
> 
> Thanks for your reply.
> 
>> Not sure if 'reset' command should do more than it says, if there is a
>> requirement that port should be stopped, why not add this condition with an
>> error message so that user can stop the port in advance if she wants.
> 
> Firstly, port must be stopped before reset. Usually, port is stopped by rte_eth_dev_reset(), 
> so testpmd does not prompt user to stop port. Although it can stop port, but testpmd does not 
> change its own port status flag to "RTE_PORT_STOPPED" and it will cause "port start" to fail. 
> So I add this patch to stop port as same as running "port stop" command.

Let's assume port already stopped before calling the reset, reset will cause
port to be started.
I am for user explicitly do the stop, reset and start commands, instead of reset
automatically stop and start later.

> 
>> - 'reset_port()' function has a loop inside, 'RTE_ETH_FOREACH_DEV()' but it
>> works on single port, the loop looked unnecessary to me, can you please check
>> and remove the loop if required?
> 
> "port reset" supports reset all ports (testpmd > port reset all), so this loop is necessary.

Got it.

> 
>> - I am not able to see 'reset' has been documented in
>> 'doc/guides/testpmd_app_ug/testpmd_funcs.rst', it may be missing, can you
>> please check and add it if required?
> 
> OK. I will add it in the next patch.
> 
> Thanks.
> Shougang
> 
> 
>> -----Original Message-----
>> From: Yigit, Ferruh
>> Sent: Saturday, September 14, 2019 1:35 AM
>> To: Wang, ShougangX <shougangx.wang at intel.com>; dev at dpdk.org
>> Cc: Lu, Wenzhuo <wenzhuo.lu at intel.com>; Yang, Qiming
>> <qiming.yang at intel.com>; stable at dpdk.org
>> Subject: Re: [dpdk-stable] [PATCH] app/testpmd: fix Segment fault when start
>> fwd
>>
>> On 9/6/2019 2:28 AM, Wang ShougangX wrote:
>>> This patch fixed the reset function to avoid crash when user don't
>>> call port reset , port stop and port start functions as sequence.
>>>
>>> Fixes: 97f1e19679 ("app/testpmd: add port reset command")
>>> Cc: stable at dpdk.org
>>>
>>> Signed-off-by: Wang ShougangX <shougangx.wang at intel.com>
>>> ---
>>>  app/test-pmd/testpmd.c | 6 ++++++
>>>  1 file changed, 6 insertions(+)
>>>
>>> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index
>>> e8e2a39b6..273a7aa02 100644
>>> --- a/app/test-pmd/testpmd.c
>>> +++ b/app/test-pmd/testpmd.c
>>> @@ -2344,6 +2344,9 @@ reset_port(portid_t pid)
>>>  	if (port_id_is_invalid(pid, ENABLED_WARN))
>>>  		return;
>>>
>>> +	printf("Stopping ports...\n");
>>> +	stop_port(pid);
>>> +
>>>  	printf("Resetting ports...\n");
>>>
>>>  	RTE_ETH_FOREACH_DEV(pi) {
>>> @@ -2372,6 +2375,9 @@ reset_port(portid_t pid)
>>>  		}
>>>  	}
>>>
>>> +	printf("Starting ports...\n");
>>> +	start_port(pid);
>>> +
>>>  	printf("Done\n");
>>>  }
>>
>> Hi Shougang,
>>
>> Not sure if 'reset' command should do more than it says, if there is a
>> requirement that port should be stopped, why not add this condition with an
>> error message so that user can stop the port in advance if she wants.
>>
>>
>> Btw, a few things related,
>> - 'reset_port()' function has a loop inside, 'RTE_ETH_FOREACH_DEV()' but it
>> works on single port, the loop looked unnecessary to me, can you please check
>> and remove the loop if required?
>>
>> - I am not able to see 'reset' has been documented in
>> 'doc/guides/testpmd_app_ug/testpmd_funcs.rst', it may be missing, can you
>> please check and add it if required?
>>
>> Thanks,
>> ferruh



More information about the stable mailing list