i40e: free vmdq vsi when closing
authorBernard Iremonger <bernard.iremonger@intel.com>
Fri, 3 Jul 2015 14:03:55 +0000 (15:03 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Sun, 19 Jul 2015 19:28:46 +0000 (21:28 +0200)
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
drivers/net/i40e/i40e_ethdev.c

index ca435d8..62e5572 100644 (file)
@@ -1063,6 +1063,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();
 
@@ -1080,6 +1081,14 @@ 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);
+               pf->vmdq[i].vsi = NULL;
+       }
+
+       rte_free(pf->vmdq);
+       pf->vmdq = NULL;
+
        /* shutdown the adminq */
        i40e_aq_queue_shutdown(hw, true);
        i40e_shutdown_adminq(hw);