[dpdk-dev,v4,4/4] test-pmd: remove call to rte_eth_promiscuous_disable() from detach_port()

Message ID 1436260687-28549-5-git-send-email-bernard.iremonger@intel.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Iremonger, Bernard July 7, 2015, 9:18 a.m. UTC
  At this point the stop() and close() functions have already been called.
The rte_eth_promiscuous_disable() function does not return on the VM.

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 app/test-pmd/testpmd.c |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)
  

Comments

Ouyang Changchun July 8, 2015, 12:42 a.m. UTC | #1
> -----Original Message-----
> From: Iremonger, Bernard
> Sent: Tuesday, July 7, 2015 5:18 PM
> To: dev@dpdk.org
> Cc: Ouyang, Changchun; Iremonger, Bernard
> Subject: [PATCH v4 4/4] test-pmd: remove call to
> rte_eth_promiscuous_disable() from detach_port()
> 
> At this point the stop() and close() functions have already been called.
> The rte_eth_promiscuous_disable() function does not return on the VM.

I think we need root the cause why it doesn't return on the VM.

> 
> Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
> ---
>  app/test-pmd/testpmd.c |    4 +---
>  1 files changed, 1 insertions(+), 3 deletions(-)
> 
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index
> 82b465d..4769533 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -1,7 +1,7 @@
>  /*-
>   *   BSD LICENSE
>   *
> - *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
> + *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
>   *   All rights reserved.
>   *
>   *   Redistribution and use in source and binary forms, with or without
> @@ -1542,8 +1542,6 @@ detach_port(uint8_t port_id)
>  		return;
>  	}
> 
> -	rte_eth_promiscuous_disable(port_id);
> -

It seems a workaround.

>  	if (rte_eth_dev_detach(port_id, name))
>  		return;
> 
> --
> 1.7.4.1
  
Tetsuya Mukawa July 9, 2015, 2:04 a.m. UTC | #2
On 2015/07/08 9:42, Ouyang, Changchun wrote:
>> -----Original Message-----
>> From: Iremonger, Bernard
>> Sent: Tuesday, July 7, 2015 5:18 PM
>> To: dev@dpdk.org
>> Cc: Ouyang, Changchun; Iremonger, Bernard
>> Subject: [PATCH v4 4/4] test-pmd: remove call to
>> rte_eth_promiscuous_disable() from detach_port()
>>
>> At this point the stop() and close() functions have already been called.
>> The rte_eth_promiscuous_disable() function does not return on the VM.
> I think we need root the cause why it doesn't return on the VM.

It seems this patch is correct.
The root cause is that when close() is called, virtio-net device will be
reset by vtpci_reset(), and at this point all virtqueues will be invalid
in virtio-net device.
After resetting device, we should not call
rte_eth_promiscuous_disable(), because it will use an one of virtqueues.
Anyway, promiscuous configuration will be initialized when the device is
reset.

Regards,
Tetsuya

>
>> Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
>> ---
>>  app/test-pmd/testpmd.c |    4 +---
>>  1 files changed, 1 insertions(+), 3 deletions(-)
>>
>> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index
>> 82b465d..4769533 100644
>> --- a/app/test-pmd/testpmd.c
>> +++ b/app/test-pmd/testpmd.c
>> @@ -1,7 +1,7 @@
>>  /*-
>>   *   BSD LICENSE
>>   *
>> - *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
>> + *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
>>   *   All rights reserved.
>>   *
>>   *   Redistribution and use in source and binary forms, with or without
>> @@ -1542,8 +1542,6 @@ detach_port(uint8_t port_id)
>>  		return;
>>  	}
>>
>> -	rte_eth_promiscuous_disable(port_id);
>> -
> It seems a workaround.
>
>>  	if (rte_eth_dev_detach(port_id, name))
>>  		return;
>>
>> --
>> 1.7.4.1
  

Patch

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 82b465d..4769533 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -1,7 +1,7 @@ 
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
@@ -1542,8 +1542,6 @@  detach_port(uint8_t port_id)
 		return;
 	}
 
-	rte_eth_promiscuous_disable(port_id);
-
 	if (rte_eth_dev_detach(port_id, name))
 		return;