[dpdk-dev] [PATCH] net/i40e: force promiscuous state after VF reset

Eelco Chaudron echaudro at redhat.com
Tue Sep 17 09:40:28 CEST 2019


Even though the device reset is successful, disabling promiscuous mode
might not always succeed, causing enabling it after reset to
fail. This would happen when the kernel driver requires a reset of the
VF.

This patch resets the internal state, so next time promiscuous mode is
configured it will be enabled.

Signed-off-by: Eelco Chaudron <echaudro at redhat.com>
---
 drivers/net/i40e/i40e_ethdev_vf.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 551f6fa..e0f99a4 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -2276,11 +2276,21 @@ static int eth_i40evf_pci_remove(struct rte_pci_device *pci_dev)
 i40evf_dev_reset(struct rte_eth_dev *dev)
 {
 	int ret;
+	struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
 
 	ret = i40evf_dev_uninit(dev);
 	if (ret)
 		return ret;
 
+	/*
+	 * Even though the device reset is successful disabling promiscuous
+	 * mode might not always succeed, causing enabling it after reset to
+	 * fail. This would happen when the kernel driver requires a reset
+	 * of the VF.
+	 */
+	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
+		vf->promisc_unicast_enabled = FALSE;
+
 	ret = i40evf_dev_init(dev);
 
 	return ret;
-- 
1.8.3.1



More information about the dev mailing list