[dpdk-dev,RFC,2/4] librte_pmd_i40e: release vmdq vsi's in dev_close
diff mbox

Message ID 1430408483-17680-1-git-send-email-bernard.iremonger@intel.com
State Superseded, archived
Headers show

Commit Message

Iremonger, Bernard April 30, 2015, 3:41 p.m. UTC
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 lib/librte_pmd_i40e/i40e_ethdev.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

Patch
diff mbox

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);