diff options
author | Kalesh AP <kalesh.purayil@emulex.com> | 2015-02-23 04:20:14 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-02-23 15:08:32 -0500 |
commit | 484d76fd5154d7d7dcc8e5928a947deb9cc0b94c (patch) | |
tree | 95c0eba6ebfccb1e230d7323eec1bbb5caa3854d /drivers/net/ethernet | |
parent | 9fa465c0ce0d99f098195d7b0a550aeb1b2a8c44 (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.c | 56 |
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 | ||
4944 | static int be_err_recover(struct be_adapter *adapter) | 4944 | static 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 | |||
4968 | static 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; |
4968 | err: | 4979 | err: |
@@ -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 | ||
5415 | static int be_resume(struct pci_dev *pdev) | 5426 | static 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; |
5566 | err: | 5552 | err: |
@@ -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 | }; |