mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-15 00:36:50 +07:00
be2net: refactor adapter resource cleanup sequence into be_cleanup()
Most of the resource cleanup sequences performed in be_suspend(), be_eeh_err_detected() and be_err_detection_task() are same. Moved the common code to a new routine be_cleanup() to avoid code duplication. Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com> Signed-off-by: Sathya Perla <sathya.perla@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
484d76fd51
commit
87ac1a5296
@ -4941,6 +4941,19 @@ static int be_func_init(struct be_adapter *adapter)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void be_cleanup(struct be_adapter *adapter)
|
||||||
|
{
|
||||||
|
struct net_device *netdev = adapter->netdev;
|
||||||
|
|
||||||
|
rtnl_lock();
|
||||||
|
netif_device_detach(netdev);
|
||||||
|
if (netif_running(netdev))
|
||||||
|
be_close(netdev);
|
||||||
|
rtnl_unlock();
|
||||||
|
|
||||||
|
be_clear(adapter);
|
||||||
|
}
|
||||||
|
|
||||||
static int be_resume(struct be_adapter *adapter)
|
static int be_resume(struct be_adapter *adapter)
|
||||||
{
|
{
|
||||||
struct net_device *netdev = adapter->netdev;
|
struct net_device *netdev = adapter->netdev;
|
||||||
@ -4990,19 +5003,12 @@ static void be_err_detection_task(struct work_struct *work)
|
|||||||
struct be_adapter *adapter =
|
struct be_adapter *adapter =
|
||||||
container_of(work, struct be_adapter,
|
container_of(work, struct be_adapter,
|
||||||
be_err_detection_work.work);
|
be_err_detection_work.work);
|
||||||
struct net_device *netdev = adapter->netdev;
|
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
||||||
be_detect_error(adapter);
|
be_detect_error(adapter);
|
||||||
|
|
||||||
if (adapter->hw_error) {
|
if (adapter->hw_error) {
|
||||||
rtnl_lock();
|
be_cleanup(adapter);
|
||||||
netif_device_detach(netdev);
|
|
||||||
if (netif_running(netdev))
|
|
||||||
be_close(netdev);
|
|
||||||
rtnl_unlock();
|
|
||||||
|
|
||||||
be_clear(adapter);
|
|
||||||
|
|
||||||
/* As of now error recovery support is in Lancer only */
|
/* As of now error recovery support is in Lancer only */
|
||||||
if (lancer_chip(adapter))
|
if (lancer_chip(adapter))
|
||||||
@ -5401,7 +5407,6 @@ static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
|
|||||||
static int be_suspend(struct pci_dev *pdev, pm_message_t state)
|
static int be_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||||
{
|
{
|
||||||
struct be_adapter *adapter = pci_get_drvdata(pdev);
|
struct be_adapter *adapter = pci_get_drvdata(pdev);
|
||||||
struct net_device *netdev = adapter->netdev;
|
|
||||||
|
|
||||||
if (adapter->wol_en)
|
if (adapter->wol_en)
|
||||||
be_setup_wol(adapter, true);
|
be_setup_wol(adapter, true);
|
||||||
@ -5409,13 +5414,7 @@ static int be_suspend(struct pci_dev *pdev, pm_message_t state)
|
|||||||
be_intr_set(adapter, false);
|
be_intr_set(adapter, false);
|
||||||
be_cancel_err_detection(adapter);
|
be_cancel_err_detection(adapter);
|
||||||
|
|
||||||
netif_device_detach(netdev);
|
be_cleanup(adapter);
|
||||||
if (netif_running(netdev)) {
|
|
||||||
rtnl_lock();
|
|
||||||
be_close(netdev);
|
|
||||||
rtnl_unlock();
|
|
||||||
}
|
|
||||||
be_clear(adapter);
|
|
||||||
|
|
||||||
pci_save_state(pdev);
|
pci_save_state(pdev);
|
||||||
pci_disable_device(pdev);
|
pci_disable_device(pdev);
|
||||||
@ -5472,7 +5471,6 @@ static pci_ers_result_t be_eeh_err_detected(struct pci_dev *pdev,
|
|||||||
pci_channel_state_t state)
|
pci_channel_state_t state)
|
||||||
{
|
{
|
||||||
struct be_adapter *adapter = pci_get_drvdata(pdev);
|
struct be_adapter *adapter = pci_get_drvdata(pdev);
|
||||||
struct net_device *netdev = adapter->netdev;
|
|
||||||
|
|
||||||
dev_err(&adapter->pdev->dev, "EEH error detected\n");
|
dev_err(&adapter->pdev->dev, "EEH error detected\n");
|
||||||
|
|
||||||
@ -5481,13 +5479,7 @@ static pci_ers_result_t be_eeh_err_detected(struct pci_dev *pdev,
|
|||||||
|
|
||||||
be_cancel_err_detection(adapter);
|
be_cancel_err_detection(adapter);
|
||||||
|
|
||||||
rtnl_lock();
|
be_cleanup(adapter);
|
||||||
netif_device_detach(netdev);
|
|
||||||
if (netif_running(netdev))
|
|
||||||
be_close(netdev);
|
|
||||||
rtnl_unlock();
|
|
||||||
|
|
||||||
be_clear(adapter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state == pci_channel_io_perm_failure)
|
if (state == pci_channel_io_perm_failure)
|
||||||
|
Loading…
Reference in New Issue
Block a user