[dpdk-dev] [PATCH v2] net/i40e: always re-program promiscuous mode on VF interface

Eelco Chaudron echaudro at redhat.com
Tue Dec 17 14:50:26 CET 2019


Trying again?

On 4 Dec 2019, at 16:18, Eelco Chaudron wrote:

> Any update on this patch?
>
>
> On 19 Nov 2019, at 14:45, Eelco Chaudron wrote:
>
>> During a kernel PF reset, this event is propagated to the VF.
>> The DPDK VF PMD will execute the reset task before the PF is done
>> with his. This results in the admin queue message not being responded
>> to leaving the port in "promiscuous" mode.
>>
>> This patch makes sure the promiscuous mode is configured 
>> independently
>> of the current admin state.
>>
>> Signed-off-by: Eelco Chaudron <echaudro at redhat.com>
>> ---
>> v1-v2:
>>   In the earlier patch, we would force the 
>> vf->promisc_unicast_enabled
>>   state to false after a reset. Based on the review comments it was
>>   prefered to not take the current state into account when 
>> programming.
>>
>>   v1 patch was called: net/i40e: force promiscuous state after VF 
>> reset
>>
>>  drivers/net/i40e/i40e_ethdev_vf.c |   16 ----------------
>>  1 file changed, 16 deletions(-)
>>
>> diff --git a/drivers/net/i40e/i40e_ethdev_vf.c 
>> b/drivers/net/i40e/i40e_ethdev_vf.c
>> index 5dba092..43f7ab5 100644
>> --- a/drivers/net/i40e/i40e_ethdev_vf.c
>> +++ b/drivers/net/i40e/i40e_ethdev_vf.c
>> @@ -2162,10 +2162,6 @@ static int eth_i40evf_pci_remove(struct 
>> rte_pci_device *pci_dev)
>>  	struct i40e_vf *vf = 
>> I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
>>  	int ret;
>>
>> -	/* If enabled, just return */
>> -	if (vf->promisc_unicast_enabled)
>> -		return 0;
>> -
>>  	ret = i40evf_config_promisc(dev, 1, vf->promisc_multicast_enabled);
>>  	if (ret == 0)
>>  		vf->promisc_unicast_enabled = TRUE;
>> @@ -2181,10 +2177,6 @@ static int eth_i40evf_pci_remove(struct 
>> rte_pci_device *pci_dev)
>>  	struct i40e_vf *vf = 
>> I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
>>  	int ret;
>>
>> -	/* If disabled, just return */
>> -	if (!vf->promisc_unicast_enabled)
>> -		return 0;
>> -
>>  	ret = i40evf_config_promisc(dev, 0, vf->promisc_multicast_enabled);
>>  	if (ret == 0)
>>  		vf->promisc_unicast_enabled = FALSE;
>> @@ -2200,10 +2192,6 @@ static int eth_i40evf_pci_remove(struct 
>> rte_pci_device *pci_dev)
>>  	struct i40e_vf *vf = 
>> I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
>>  	int ret;
>>
>> -	/* If enabled, just return */
>> -	if (vf->promisc_multicast_enabled)
>> -		return 0;
>> -
>>  	ret = i40evf_config_promisc(dev, vf->promisc_unicast_enabled, 1);
>>  	if (ret == 0)
>>  		vf->promisc_multicast_enabled = TRUE;
>> @@ -2219,10 +2207,6 @@ static int eth_i40evf_pci_remove(struct 
>> rte_pci_device *pci_dev)
>>  	struct i40e_vf *vf = 
>> I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
>>  	int ret;
>>
>> -	/* If enabled, just return */
>> -	if (!vf->promisc_multicast_enabled)
>> -		return 0;
>> -
>>  	ret = i40evf_config_promisc(dev, vf->promisc_unicast_enabled, 0);
>>  	if (ret == 0)
>>  		vf->promisc_multicast_enabled = FALSE;



More information about the dev mailing list