From: Yiding Zhou Date: Mon, 27 Jun 2022 07:22:32 +0000 (+0800) Subject: net/iavf: fix VF reset X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=196f35f81c962a1eae3f63bd621dfd9ebbf9a926;p=dpdk.git net/iavf: fix VF reset When the VF is in closed state, the vf_reset flag can not be reverted if the VF is reset asynchronously. This prevents all virtchnl commands from executing, causing subsequent calls to iavf_dev_reset() to fail. So the vf_reset flag needs to be reverted even when VF is in closed state. Fixes: 676d986b4b86 ("net/iavf: fix crash after VF reset failure") Cc: stable@dpdk.org Signed-off-by: Yiding Zhou Acked-by: Qi Zhang --- diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index 7df0bf8118..506fcff6e3 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -2702,8 +2702,10 @@ iavf_dev_close(struct rte_eth_dev *dev) if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; - if (adapter->closed) - return 0; + if (adapter->closed) { + ret = 0; + goto out; + } ret = iavf_dev_stop(dev); adapter->closed = true; @@ -2763,6 +2765,7 @@ iavf_dev_close(struct rte_eth_dev *dev) * the bus master bit will not be disabled, and this call will have no * effect. */ +out: if (vf->vf_reset && !rte_pci_set_bus_master(pci_dev, true)) vf->vf_reset = false;