Signed-off-by: Bernard Iremonger <bernard.iremonger at intel.com> --- lib/librte_pmd_i40e/i40e_ethdev.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/lib/librte_pmd_i40e/i40e_ethdev.c b/lib/librte_pmd_i40e/i40e_ethdev.c index e21ebed..5cff6df 100644 --- a/lib/librte_pmd_i40e/i40e_ethdev.c +++ b/lib/librte_pmd_i40e/i40e_ethdev.c @@ -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); -- 1.7.4.1