[dpdk-dev,RFC,2/4] librte_pmd_i40e: release vmdq vsi's in dev_close
Commit Message
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
lib/librte_pmd_i40e/i40e_ethdev.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
@@ -623,7 +623,8 @@ eth_i40e_dev_uninit(struct rte_eth_dev *dev)
memset(&settings, 0, sizeof(settings));
ret = i40e_set_filter_control(hw, &settings);
if (ret)
- PMD_INIT_LOG(WARNING, "setup_pf_filter_control failed: %d", ret);
+ PMD_INIT_LOG(WARNING, "setup_pf_filter_control failed: %d",
+ ret);
/* Disable flow control */
hw->fc.requested_mode = I40E_FC_NONE;
@@ -1021,6 +1022,7 @@ i40e_dev_close(struct rte_eth_dev *dev)
struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);
struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
uint32_t reg;
+ int i;
PMD_INIT_FUNC_TRACE();
@@ -1038,6 +1040,12 @@ i40e_dev_close(struct rte_eth_dev *dev)
i40e_fdir_teardown(pf);
i40e_vsi_release(pf->main_vsi);
+ for (i = 0; i < pf->nb_cfg_vmdq_vsi; i++)
+ i40e_vsi_release(pf->vmdq[i].vsi);
+
+ rte_free(pf->vmdq);
+ pf->vmdq = NULL;
+
/* shutdown the adminq */
i40e_aq_queue_shutdown(hw, true);
i40e_shutdown_adminq(hw);