Skip to content

Commit

Permalink
net/iavf: add VF reset check
Browse files Browse the repository at this point in the history
In the current implementation, after application calls rte_eth_dev_reset,
it has no way to know if reset has been completed, and if the virtual
channel command is called before it is completed, it may cause the dev to
be abnormal. To avoid this issue, an uncertain delay need to be added.

This commit adds a VF reset check before the dev_reset to inform
the application not to invoke any virtual channel commands, to avoid making
the device to be abnormal.

Suggested-by: Liang-Min Larry Wang <liang-min.wang@intel.com>
Signed-off-by: Zhichao Zeng <zhichaox.zeng@intel.com>
Signed-off-by: 0-day Robot <robot@bytheb.org>
  • Loading branch information
zengzhichao233 authored and ovsrobot committed Jun 2, 2023
1 parent abaa473 commit b50b5cd
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions drivers/net/iavf/iavf_ethdev.c
Expand Up @@ -2806,7 +2806,20 @@ static int
iavf_dev_reset(struct rte_eth_dev *dev)
{
int ret;
struct iavf_hw *hw = IAVF_DEV_PRIVATE_TO_HW(dev->data->dev_private);

/*
* Check whether the VF reset has been done and inform application,
* to avoid calling the virtual channel command, which may cause
* the device to be abnormal.
*/
ret = iavf_check_vf_reset_done(hw);
if (ret) {
PMD_DRV_LOG(ERR, "Wait too long for reset done!\n");
return ret;
}

PMD_DRV_LOG(DEBUG, "Start dev_reset ...\n");
ret = iavf_dev_uninit(dev);
if (ret)
return ret;
Expand Down

0 comments on commit b50b5cd

Please sign in to comment.