net/qede: release port upon close
Set RTE_ETH_DEV_CLOSE_REMOVE upon probe so all the private resources for the port can be freed by rte_eth_dev_close(). With this change the private port resources are released in the .dev_close callback. Signed-off-by: Rasesh Mody <rmody@marvell.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
57803c5ef5
commit
1df1bb5275
@ -1552,6 +1552,10 @@ static int qede_dev_close(struct rte_eth_dev *eth_dev)
|
||||
|
||||
PMD_INIT_FUNC_TRACE(edev);
|
||||
|
||||
/* only close in case of the primary process */
|
||||
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
|
||||
return 0;
|
||||
|
||||
/* dev_stop() shall cleanup fp resources in hw but without releasing
|
||||
* dma memories and sw structures so that dev_start() can be called
|
||||
* by the app without reconfiguration. However, in dev_close() we
|
||||
@ -1589,6 +1593,10 @@ static int qede_dev_close(struct rte_eth_dev *eth_dev)
|
||||
if (ECORE_IS_CMT(edev))
|
||||
rte_eal_alarm_cancel(qede_poll_sp_sb_cb, (void *)eth_dev);
|
||||
|
||||
eth_dev->dev_ops = NULL;
|
||||
eth_dev->rx_pkt_burst = NULL;
|
||||
eth_dev->tx_pkt_burst = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2738,6 +2746,11 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
|
||||
qed_ops->sriov_configure(edev, pci_dev->max_vfs);
|
||||
}
|
||||
|
||||
/* Pass the information to the rte_eth_dev_close() that it should also
|
||||
* release the private port resources.
|
||||
*/
|
||||
eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
|
||||
|
||||
DP_INFO(edev, "MAC address : %02x:%02x:%02x:%02x:%02x:%02x\n",
|
||||
adapter->primary_mac.addr_bytes[0],
|
||||
adapter->primary_mac.addr_bytes[1],
|
||||
@ -2772,20 +2785,8 @@ static int qede_dev_common_uninit(struct rte_eth_dev *eth_dev)
|
||||
{
|
||||
struct qede_dev *qdev = eth_dev->data->dev_private;
|
||||
struct ecore_dev *edev = &qdev->edev;
|
||||
|
||||
PMD_INIT_FUNC_TRACE(edev);
|
||||
|
||||
/* only uninitialize in the primary process */
|
||||
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
|
||||
return 0;
|
||||
|
||||
/* safe to close dev here */
|
||||
qede_dev_close(eth_dev);
|
||||
|
||||
eth_dev->dev_ops = NULL;
|
||||
eth_dev->rx_pkt_burst = NULL;
|
||||
eth_dev->tx_pkt_burst = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user