aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
authorKalesh AP <kalesh.purayil@emulex.com>2015-02-23 04:20:14 -0500
committerDavid S. Miller <davem@davemloft.net>2015-02-23 15:08:32 -0500
commit484d76fd5154d7d7dcc8e5928a947deb9cc0b94c (patch)
tree95c0eba6ebfccb1e230d7323eec1bbb5caa3854d /drivers/net/ethernet
parent9fa465c0ce0d99f098195d7b0a550aeb1b2a8c44 (diff)
be2net: refactor adapter resource initialzation sequence into be_resume()
Most of the adapter initialisation sequences performed in be_resume(), be_eeh_resume() and be_err_recover() are same. Renamed be_resume() to be_pci_resume() and moved the common code to a new routine be_resume() 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>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c56
1 files changed, 21 insertions, 35 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 4a29ff15a3cc..80a0aabfbcf8 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -4941,28 +4941,39 @@ static int be_func_init(struct be_adapter *adapter)
4941 return 0; 4941 return 0;
4942} 4942}
4943 4943
4944static int be_err_recover(struct be_adapter *adapter) 4944static int be_resume(struct be_adapter *adapter)
4945{ 4945{
4946 struct net_device *netdev = adapter->netdev; 4946 struct net_device *netdev = adapter->netdev;
4947 struct device *dev = &adapter->pdev->dev;
4948 int status; 4947 int status;
4949 4948
4950 status = be_func_init(adapter); 4949 status = be_func_init(adapter);
4951 if (status) 4950 if (status)
4952 goto err; 4951 return status;
4953 4952
4954 status = be_setup(adapter); 4953 status = be_setup(adapter);
4955 if (status) 4954 if (status)
4956 goto err; 4955 return status;
4957 4956
4958 if (netif_running(netdev)) { 4957 if (netif_running(netdev)) {
4959 status = be_open(netdev); 4958 status = be_open(netdev);
4960 if (status) 4959 if (status)
4961 goto err; 4960 return status;
4962 } 4961 }
4963 4962
4964 netif_device_attach(netdev); 4963 netif_device_attach(netdev);
4965 4964
4965 return 0;
4966}
4967
4968static int be_err_recover(struct be_adapter *adapter)
4969{
4970 struct device *dev = &adapter->pdev->dev;
4971 int status;
4972
4973 status = be_resume(adapter);
4974 if (status)
4975 goto err;
4976
4966 dev_info(dev, "Adapter recovery successful\n"); 4977 dev_info(dev, "Adapter recovery successful\n");
4967 return 0; 4978 return 0;
4968err: 4979err:
@@ -5412,13 +5423,10 @@ static int be_suspend(struct pci_dev *pdev, pm_message_t state)
5412 return 0; 5423 return 0;
5413} 5424}
5414 5425
5415static int be_resume(struct pci_dev *pdev) 5426static int be_pci_resume(struct pci_dev *pdev)
5416{ 5427{
5417 int status = 0;
5418 struct be_adapter *adapter = pci_get_drvdata(pdev); 5428 struct be_adapter *adapter = pci_get_drvdata(pdev);
5419 struct net_device *netdev = adapter->netdev; 5429 int status = 0;
5420
5421 netif_device_detach(netdev);
5422 5430
5423 status = pci_enable_device(pdev); 5431 status = pci_enable_device(pdev);
5424 if (status) 5432 if (status)
@@ -5427,19 +5435,10 @@ static int be_resume(struct pci_dev *pdev)
5427 pci_set_power_state(pdev, PCI_D0); 5435 pci_set_power_state(pdev, PCI_D0);
5428 pci_restore_state(pdev); 5436 pci_restore_state(pdev);
5429 5437
5430 status = be_func_init(adapter); 5438 status = be_resume(adapter);
5431 if (status) 5439 if (status)
5432 return status; 5440 return status;
5433 5441
5434 be_setup(adapter);
5435 if (netif_running(netdev)) {
5436 rtnl_lock();
5437 be_open(netdev);
5438 rtnl_unlock();
5439 }
5440
5441 netif_device_attach(netdev);
5442
5443 be_schedule_err_detection(adapter); 5442 be_schedule_err_detection(adapter);
5444 5443
5445 if (adapter->wol_en) 5444 if (adapter->wol_en)
@@ -5539,28 +5538,15 @@ static void be_eeh_resume(struct pci_dev *pdev)
5539{ 5538{
5540 int status = 0; 5539 int status = 0;
5541 struct be_adapter *adapter = pci_get_drvdata(pdev); 5540 struct be_adapter *adapter = pci_get_drvdata(pdev);
5542 struct net_device *netdev = adapter->netdev;
5543 5541
5544 dev_info(&adapter->pdev->dev, "EEH resume\n"); 5542 dev_info(&adapter->pdev->dev, "EEH resume\n");
5545 5543
5546 pci_save_state(pdev); 5544 pci_save_state(pdev);
5547 5545
5548 status = be_func_init(adapter); 5546 status = be_resume(adapter);
5549 if (status) 5547 if (status)
5550 goto err; 5548 goto err;
5551 5549
5552 status = be_setup(adapter);
5553 if (status)
5554 goto err;
5555
5556 if (netif_running(netdev)) {
5557 status = be_open(netdev);
5558 if (status)
5559 goto err;
5560 }
5561
5562 netif_device_attach(netdev);
5563
5564 be_schedule_err_detection(adapter); 5550 be_schedule_err_detection(adapter);
5565 return; 5551 return;
5566err: 5552err:
@@ -5579,7 +5565,7 @@ static struct pci_driver be_driver = {
5579 .probe = be_probe, 5565 .probe = be_probe,
5580 .remove = be_remove, 5566 .remove = be_remove,
5581 .suspend = be_suspend, 5567 .suspend = be_suspend,
5582 .resume = be_resume, 5568 .resume = be_pci_resume,
5583 .shutdown = be_shutdown, 5569 .shutdown = be_shutdown,
5584 .err_handler = &be_eeh_handlers 5570 .err_handler = &be_eeh_handlers
5585}; 5571};