[dpdk-dev,v4] drivers/net/i40e: fix missing promiscuous disable at device disable

Message ID 1524039101-158658-1-git-send-email-rosen.xu@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Helin Zhang
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Xu, Rosen April 18, 2018, 8:11 a.m. UTC
  v4 updates:
  

Comments

Qi Zhang April 18, 2018, 12:01 p.m. UTC | #1
> -----Original Message-----
> From: Xu, Rosen
> Sent: Wednesday, April 18, 2018 4:12 PM
> To: dev@dpdk.org
> Cc: Xing, Beilei <beilei.xing@intel.com>; Zhang, Helin
> <helin.zhang@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; Wu, Jingjing
> <jingjing.wu@intel.com>
> Subject: [PATCH v4] drivers/net/i40e: fix missing promiscuous disable at
> device disable
> 
> v4 updates:
> ===========
>  - Add some comments for this patch
> 
> v3 updates:
> ===========
>  - Move modification from device close to device disable
>  - i40evf_reset_vf() will cause kernel driver enable all vlan promiscuous,
>    so unicast/multicast promiscuous disable should set before reset.
> 
> v2 updates:
> ===========
>  - Add more comments
> 
> In scenario of Kernel Driver runs on PF and PMD runs on VF, PMD exit
> doesn't disable promiscuous mode, this will cause vlan filter set by Kernel
> Driver will not take effect.
> 
> This patch will fix it, add promiscuous disable at device disable.
> 
> Signed-off-by: Rosen Xu <rosen.xu@intel.com>

Acked-by: Qi Zhang <qi.z.zhang@intel.com>

Change log need be removed when apply
  

Patch

===========
 - Add some comments for this patch

v3 updates:
===========
 - Move modification from device close to device disable
 - i40evf_reset_vf() will cause kernel driver enable all vlan promiscuous,
   so unicast/multicast promiscuous disable should set before reset.

v2 updates:
===========
 - Add more comments

In scenario of Kernel Driver runs on PF and PMD runs on VF, PMD exit
doesn't disable promiscuous mode, this will cause vlan filter set by
Kernel Driver will not take effect.

This patch will fix it, add promiscuous disable at device disable.

Signed-off-by: Rosen Xu <rosen.xu@intel.com>
---
 drivers/net/i40e/i40e_ethdev_vf.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 031c706..91fbf6c 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -2288,6 +2288,14 @@  static int eth_i40evf_pci_remove(struct rte_pci_device *pci_dev)
 
 	i40evf_dev_stop(dev);
 	i40e_dev_free_queues(dev);
+	/*
+	 * disable promiscuous mode before reset vf
+	 * it is a workaround solution when work with kernel driver
+	 * and it is not the normal way
+	 */
+	i40evf_dev_promiscuous_disable(dev);
+	i40evf_dev_allmulticast_disable(dev);
+
 	i40evf_reset_vf(hw);
 	i40e_shutdown_adminq(hw);
 	/* disable uio intr before callback unregister */