net/iavf: fix issue of VF resetting
Checks
Commit Message
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 <yidingx.zhou@intel.com>
---
drivers/net/iavf/iavf_ethdev.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
Comments
> -----Original Message-----
> From: Zhou, YidingX <yidingx.zhou@intel.com>
> Sent: Monday, June 27, 2022 3:23 PM
> To: dev@dpdk.org
> Cc: stable@dpdk.org; Zhou, YidingX <yidingx.zhou@intel.com>; Wu, Jingjing
> <jingjing.wu@intel.com>; Xing, Beilei <beilei.xing@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>
> Subject: [PATCH] net/iavf: fix issue of VF resetting
>
> 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 <yidingx.zhou@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
Applied to dpdk-next-net-intel.
Thanks
Qi
@@ -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;