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 <[email protected]> --- 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

