aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/emulex
diff options
context:
space:
mode:
authorSathya Perla <sathya.perla@emulex.com>2015-02-23 04:20:08 -0500
committerDavid S. Miller <davem@davemloft.net>2015-02-23 15:08:31 -0500
commit78fad34eb8b22ce588b9ebdab39965210588e4b5 (patch)
tree29ed8642455eab4c32ba35ca727540bc364eb00a /drivers/net/ethernet/emulex
parentb7853d73e39b099bbee149cac4c34dbf98f3fefa (diff)
be2net: move adapter fields alloc/free code to new routines
The members of be_adapter struct were being allocated in two separate routines -- be_ctrl_init() and be_stats_init(). Also, some other members were allocated elsewhere. This patch moves the alloc/free code into be_drv_init/cleanup() routines. The be_pci_map_bars() routine that was called from be_ctrl_init() is now called directly from be_probe(). The new routine be_drv_init() will now be the place-holder for allocating memory for any new be_adapter{} members in the future. Some routines needed to be moved to provide forward definitions for their calls. Signed-off-by: Sathya Perla <sathya.perla@emulex.com> Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/emulex')
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c408
1 files changed, 195 insertions, 213 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index c1553fba7916..ae8ad5502db0 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -4878,6 +4878,130 @@ static void be_netdev_init(struct net_device *netdev)
4878 netdev->ethtool_ops = &be_ethtool_ops; 4878 netdev->ethtool_ops = &be_ethtool_ops;
4879} 4879}
4880 4880
4881static int lancer_recover_func(struct be_adapter *adapter)
4882{
4883 struct device *dev = &adapter->pdev->dev;
4884 int status;
4885
4886 status = lancer_test_and_set_rdy_state(adapter);
4887 if (status)
4888 goto err;
4889
4890 if (netif_running(adapter->netdev))
4891 be_close(adapter->netdev);
4892
4893 be_clear(adapter);
4894
4895 be_clear_all_error(adapter);
4896
4897 status = be_setup(adapter);
4898 if (status)
4899 goto err;
4900
4901 if (netif_running(adapter->netdev)) {
4902 status = be_open(adapter->netdev);
4903 if (status)
4904 goto err;
4905 }
4906
4907 dev_err(dev, "Adapter recovery successful\n");
4908 return 0;
4909err:
4910 if (status == -EAGAIN)
4911 dev_err(dev, "Waiting for resource provisioning\n");
4912 else
4913 dev_err(dev, "Adapter recovery failed\n");
4914
4915 return status;
4916}
4917
4918static void be_func_recovery_task(struct work_struct *work)
4919{
4920 struct be_adapter *adapter =
4921 container_of(work, struct be_adapter, func_recovery_work.work);
4922 int status = 0;
4923
4924 be_detect_error(adapter);
4925
4926 if (adapter->hw_error && lancer_chip(adapter)) {
4927 rtnl_lock();
4928 netif_device_detach(adapter->netdev);
4929 rtnl_unlock();
4930
4931 status = lancer_recover_func(adapter);
4932 if (!status)
4933 netif_device_attach(adapter->netdev);
4934 }
4935
4936 /* In Lancer, for all errors other than provisioning error (-EAGAIN),
4937 * no need to attempt further recovery.
4938 */
4939 if (!status || status == -EAGAIN)
4940 schedule_delayed_work(&adapter->func_recovery_work,
4941 msecs_to_jiffies(1000));
4942}
4943
4944static void be_log_sfp_info(struct be_adapter *adapter)
4945{
4946 int status;
4947
4948 status = be_cmd_query_sfp_info(adapter);
4949 if (!status) {
4950 dev_err(&adapter->pdev->dev,
4951 "Unqualified SFP+ detected on %c from %s part no: %s",
4952 adapter->port_name, adapter->phy.vendor_name,
4953 adapter->phy.vendor_pn);
4954 }
4955 adapter->flags &= ~BE_FLAGS_EVT_INCOMPATIBLE_SFP;
4956}
4957
4958static void be_worker(struct work_struct *work)
4959{
4960 struct be_adapter *adapter =
4961 container_of(work, struct be_adapter, work.work);
4962 struct be_rx_obj *rxo;
4963 int i;
4964
4965 /* when interrupts are not yet enabled, just reap any pending
4966 * mcc completions
4967 */
4968 if (!netif_running(adapter->netdev)) {
4969 local_bh_disable();
4970 be_process_mcc(adapter);
4971 local_bh_enable();
4972 goto reschedule;
4973 }
4974
4975 if (!adapter->stats_cmd_sent) {
4976 if (lancer_chip(adapter))
4977 lancer_cmd_get_pport_stats(adapter,
4978 &adapter->stats_cmd);
4979 else
4980 be_cmd_get_stats(adapter, &adapter->stats_cmd);
4981 }
4982
4983 if (be_physfn(adapter) &&
4984 MODULO(adapter->work_counter, adapter->be_get_temp_freq) == 0)
4985 be_cmd_get_die_temperature(adapter);
4986
4987 for_all_rx_queues(adapter, rxo, i) {
4988 /* Replenish RX-queues starved due to memory
4989 * allocation failures.
4990 */
4991 if (rxo->rx_post_starved)
4992 be_post_rx_frags(rxo, GFP_KERNEL, MAX_RX_POST);
4993 }
4994
4995 be_eqd_update(adapter);
4996
4997 if (adapter->flags & BE_FLAGS_EVT_INCOMPATIBLE_SFP)
4998 be_log_sfp_info(adapter);
4999
5000reschedule:
5001 adapter->work_counter++;
5002 schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000));
5003}
5004
4881static void be_unmap_pci_bars(struct be_adapter *adapter) 5005static void be_unmap_pci_bars(struct be_adapter *adapter)
4882{ 5006{
4883 if (adapter->csr) 5007 if (adapter->csr)
@@ -4909,6 +5033,12 @@ static int be_roce_map_pci_bars(struct be_adapter *adapter)
4909static int be_map_pci_bars(struct be_adapter *adapter) 5033static int be_map_pci_bars(struct be_adapter *adapter)
4910{ 5034{
4911 u8 __iomem *addr; 5035 u8 __iomem *addr;
5036 u32 sli_intf;
5037
5038 pci_read_config_dword(adapter->pdev, SLI_INTF_REG_OFFSET, &sli_intf);
5039 adapter->sli_family = (sli_intf & SLI_INTF_FAMILY_MASK) >>
5040 SLI_INTF_FAMILY_SHIFT;
5041 adapter->virtfn = (sli_intf & SLI_INTF_FT_MASK) ? 1 : 0;
4912 5042
4913 if (BEx_chip(adapter) && be_physfn(adapter)) { 5043 if (BEx_chip(adapter) && be_physfn(adapter)) {
4914 adapter->csr = pci_iomap(adapter->pdev, 2, 0); 5044 adapter->csr = pci_iomap(adapter->pdev, 2, 0);
@@ -4930,109 +5060,93 @@ pci_map_err:
4930 return -ENOMEM; 5060 return -ENOMEM;
4931} 5061}
4932 5062
4933static void be_ctrl_cleanup(struct be_adapter *adapter) 5063static void be_drv_cleanup(struct be_adapter *adapter)
4934{ 5064{
4935 struct be_dma_mem *mem = &adapter->mbox_mem_alloced; 5065 struct be_dma_mem *mem = &adapter->mbox_mem_alloced;
4936 5066 struct device *dev = &adapter->pdev->dev;
4937 be_unmap_pci_bars(adapter);
4938 5067
4939 if (mem->va) 5068 if (mem->va)
4940 dma_free_coherent(&adapter->pdev->dev, mem->size, mem->va, 5069 dma_free_coherent(dev, mem->size, mem->va, mem->dma);
4941 mem->dma);
4942 5070
4943 mem = &adapter->rx_filter; 5071 mem = &adapter->rx_filter;
4944 if (mem->va) 5072 if (mem->va)
4945 dma_free_coherent(&adapter->pdev->dev, mem->size, mem->va, 5073 dma_free_coherent(dev, mem->size, mem->va, mem->dma);
4946 mem->dma); 5074
5075 mem = &adapter->stats_cmd;
5076 if (mem->va)
5077 dma_free_coherent(dev, mem->size, mem->va, mem->dma);
4947} 5078}
4948 5079
4949static int be_ctrl_init(struct be_adapter *adapter) 5080/* Allocate and initialize various fields in be_adapter struct */
5081static int be_drv_init(struct be_adapter *adapter)
4950{ 5082{
4951 struct be_dma_mem *mbox_mem_alloc = &adapter->mbox_mem_alloced; 5083 struct be_dma_mem *mbox_mem_alloc = &adapter->mbox_mem_alloced;
4952 struct be_dma_mem *mbox_mem_align = &adapter->mbox_mem; 5084 struct be_dma_mem *mbox_mem_align = &adapter->mbox_mem;
4953 struct be_dma_mem *rx_filter = &adapter->rx_filter; 5085 struct be_dma_mem *rx_filter = &adapter->rx_filter;
4954 u32 sli_intf; 5086 struct be_dma_mem *stats_cmd = &adapter->stats_cmd;
4955 int status; 5087 struct device *dev = &adapter->pdev->dev;
4956 5088 int status = 0;
4957 pci_read_config_dword(adapter->pdev, SLI_INTF_REG_OFFSET, &sli_intf);
4958 adapter->sli_family = (sli_intf & SLI_INTF_FAMILY_MASK) >>
4959 SLI_INTF_FAMILY_SHIFT;
4960 adapter->virtfn = (sli_intf & SLI_INTF_FT_MASK) ? 1 : 0;
4961
4962 status = be_map_pci_bars(adapter);
4963 if (status)
4964 goto done;
4965 5089
4966 mbox_mem_alloc->size = sizeof(struct be_mcc_mailbox) + 16; 5090 mbox_mem_alloc->size = sizeof(struct be_mcc_mailbox) + 16;
4967 mbox_mem_alloc->va = dma_alloc_coherent(&adapter->pdev->dev, 5091 mbox_mem_alloc->va = dma_alloc_coherent(dev, mbox_mem_alloc->size,
4968 mbox_mem_alloc->size,
4969 &mbox_mem_alloc->dma, 5092 &mbox_mem_alloc->dma,
4970 GFP_KERNEL); 5093 GFP_KERNEL);
4971 if (!mbox_mem_alloc->va) { 5094 if (!mbox_mem_alloc->va)
4972 status = -ENOMEM; 5095 return -ENOMEM;
4973 goto unmap_pci_bars; 5096
4974 }
4975 mbox_mem_align->size = sizeof(struct be_mcc_mailbox); 5097 mbox_mem_align->size = sizeof(struct be_mcc_mailbox);
4976 mbox_mem_align->va = PTR_ALIGN(mbox_mem_alloc->va, 16); 5098 mbox_mem_align->va = PTR_ALIGN(mbox_mem_alloc->va, 16);
4977 mbox_mem_align->dma = PTR_ALIGN(mbox_mem_alloc->dma, 16); 5099 mbox_mem_align->dma = PTR_ALIGN(mbox_mem_alloc->dma, 16);
4978 memset(mbox_mem_align->va, 0, sizeof(struct be_mcc_mailbox)); 5100 memset(mbox_mem_align->va, 0, sizeof(struct be_mcc_mailbox));
4979 5101
4980 rx_filter->size = sizeof(struct be_cmd_req_rx_filter); 5102 rx_filter->size = sizeof(struct be_cmd_req_rx_filter);
4981 rx_filter->va = dma_zalloc_coherent(&adapter->pdev->dev, 5103 rx_filter->va = dma_zalloc_coherent(dev, rx_filter->size,
4982 rx_filter->size, &rx_filter->dma, 5104 &rx_filter->dma, GFP_KERNEL);
4983 GFP_KERNEL);
4984 if (!rx_filter->va) { 5105 if (!rx_filter->va) {
4985 status = -ENOMEM; 5106 status = -ENOMEM;
4986 goto free_mbox; 5107 goto free_mbox;
4987 } 5108 }
4988 5109
5110 if (lancer_chip(adapter))
5111 stats_cmd->size = sizeof(struct lancer_cmd_req_pport_stats);
5112 else if (BE2_chip(adapter))
5113 stats_cmd->size = sizeof(struct be_cmd_req_get_stats_v0);
5114 else if (BE3_chip(adapter))
5115 stats_cmd->size = sizeof(struct be_cmd_req_get_stats_v1);
5116 else
5117 stats_cmd->size = sizeof(struct be_cmd_req_get_stats_v2);
5118 stats_cmd->va = dma_zalloc_coherent(dev, stats_cmd->size,
5119 &stats_cmd->dma, GFP_KERNEL);
5120 if (!stats_cmd->va) {
5121 status = -ENOMEM;
5122 goto free_rx_filter;
5123 }
5124
4989 mutex_init(&adapter->mbox_lock); 5125 mutex_init(&adapter->mbox_lock);
4990 spin_lock_init(&adapter->mcc_lock); 5126 spin_lock_init(&adapter->mcc_lock);
4991 spin_lock_init(&adapter->mcc_cq_lock); 5127 spin_lock_init(&adapter->mcc_cq_lock);
4992
4993 init_completion(&adapter->et_cmd_compl); 5128 init_completion(&adapter->et_cmd_compl);
4994 pci_save_state(adapter->pdev);
4995 return 0;
4996
4997free_mbox:
4998 dma_free_coherent(&adapter->pdev->dev, mbox_mem_alloc->size,
4999 mbox_mem_alloc->va, mbox_mem_alloc->dma);
5000 5129
5001unmap_pci_bars: 5130 pci_save_state(adapter->pdev);
5002 be_unmap_pci_bars(adapter);
5003
5004done:
5005 return status;
5006}
5007
5008static void be_stats_cleanup(struct be_adapter *adapter)
5009{
5010 struct be_dma_mem *cmd = &adapter->stats_cmd;
5011 5131
5012 if (cmd->va) 5132 INIT_DELAYED_WORK(&adapter->work, be_worker);
5013 dma_free_coherent(&adapter->pdev->dev, cmd->size, 5133 INIT_DELAYED_WORK(&adapter->func_recovery_work, be_func_recovery_task);
5014 cmd->va, cmd->dma);
5015}
5016 5134
5017static int be_stats_init(struct be_adapter *adapter) 5135 adapter->rx_fc = true;
5018{ 5136 adapter->tx_fc = true;
5019 struct be_dma_mem *cmd = &adapter->stats_cmd;
5020 5137
5021 if (lancer_chip(adapter)) 5138 /* Must be a power of 2 or else MODULO will BUG_ON */
5022 cmd->size = sizeof(struct lancer_cmd_req_pport_stats); 5139 adapter->be_get_temp_freq = 64;
5023 else if (BE2_chip(adapter)) 5140 adapter->cfg_num_qs = netif_get_num_default_rss_queues();
5024 cmd->size = sizeof(struct be_cmd_req_get_stats_v0);
5025 else if (BE3_chip(adapter))
5026 cmd->size = sizeof(struct be_cmd_req_get_stats_v1);
5027 else
5028 /* ALL non-BE ASICs */
5029 cmd->size = sizeof(struct be_cmd_req_get_stats_v2);
5030 5141
5031 cmd->va = dma_zalloc_coherent(&adapter->pdev->dev, cmd->size, &cmd->dma,
5032 GFP_KERNEL);
5033 if (!cmd->va)
5034 return -ENOMEM;
5035 return 0; 5142 return 0;
5143
5144free_rx_filter:
5145 dma_free_coherent(dev, rx_filter->size, rx_filter->va, rx_filter->dma);
5146free_mbox:
5147 dma_free_coherent(dev, mbox_mem_alloc->size, mbox_mem_alloc->va,
5148 mbox_mem_alloc->dma);
5149 return status;
5036} 5150}
5037 5151
5038static void be_remove(struct pci_dev *pdev) 5152static void be_remove(struct pci_dev *pdev)
@@ -5054,9 +5168,8 @@ static void be_remove(struct pci_dev *pdev)
5054 /* tell fw we're done with firing cmds */ 5168 /* tell fw we're done with firing cmds */
5055 be_cmd_fw_clean(adapter); 5169 be_cmd_fw_clean(adapter);
5056 5170
5057 be_stats_cleanup(adapter); 5171 be_unmap_pci_bars(adapter);
5058 5172 be_drv_cleanup(adapter);
5059 be_ctrl_cleanup(adapter);
5060 5173
5061 pci_disable_pcie_error_reporting(pdev); 5174 pci_disable_pcie_error_reporting(pdev);
5062 5175
@@ -5074,141 +5187,15 @@ static int be_get_initial_config(struct be_adapter *adapter)
5074 if (status) 5187 if (status)
5075 return status; 5188 return status;
5076 5189
5077 /* Must be a power of 2 or else MODULO will BUG_ON */
5078 adapter->be_get_temp_freq = 64;
5079
5080 if (BEx_chip(adapter)) { 5190 if (BEx_chip(adapter)) {
5081 level = be_cmd_get_fw_log_level(adapter); 5191 level = be_cmd_get_fw_log_level(adapter);
5082 adapter->msg_enable = 5192 adapter->msg_enable =
5083 level <= FW_LOG_LEVEL_DEFAULT ? NETIF_MSG_HW : 0; 5193 level <= FW_LOG_LEVEL_DEFAULT ? NETIF_MSG_HW : 0;
5084 } 5194 }
5085 5195
5086 adapter->cfg_num_qs = netif_get_num_default_rss_queues();
5087 return 0;
5088}
5089
5090static int lancer_recover_func(struct be_adapter *adapter)
5091{
5092 struct device *dev = &adapter->pdev->dev;
5093 int status;
5094
5095 status = lancer_test_and_set_rdy_state(adapter);
5096 if (status)
5097 goto err;
5098
5099 if (netif_running(adapter->netdev))
5100 be_close(adapter->netdev);
5101
5102 be_clear(adapter);
5103
5104 be_clear_all_error(adapter);
5105
5106 status = be_setup(adapter);
5107 if (status)
5108 goto err;
5109
5110 if (netif_running(adapter->netdev)) {
5111 status = be_open(adapter->netdev);
5112 if (status)
5113 goto err;
5114 }
5115
5116 dev_err(dev, "Adapter recovery successful\n");
5117 return 0; 5196 return 0;
5118err:
5119 if (status == -EAGAIN)
5120 dev_err(dev, "Waiting for resource provisioning\n");
5121 else
5122 dev_err(dev, "Adapter recovery failed\n");
5123
5124 return status;
5125} 5197}
5126 5198
5127static void be_func_recovery_task(struct work_struct *work)
5128{
5129 struct be_adapter *adapter =
5130 container_of(work, struct be_adapter, func_recovery_work.work);
5131 int status = 0;
5132
5133 be_detect_error(adapter);
5134
5135 if (adapter->hw_error && lancer_chip(adapter)) {
5136 rtnl_lock();
5137 netif_device_detach(adapter->netdev);
5138 rtnl_unlock();
5139
5140 status = lancer_recover_func(adapter);
5141 if (!status)
5142 netif_device_attach(adapter->netdev);
5143 }
5144
5145 /* In Lancer, for all errors other than provisioning error (-EAGAIN),
5146 * no need to attempt further recovery.
5147 */
5148 if (!status || status == -EAGAIN)
5149 schedule_delayed_work(&adapter->func_recovery_work,
5150 msecs_to_jiffies(1000));
5151}
5152
5153static void be_log_sfp_info(struct be_adapter *adapter)
5154{
5155 int status;
5156
5157 status = be_cmd_query_sfp_info(adapter);
5158 if (!status) {
5159 dev_err(&adapter->pdev->dev,
5160 "Unqualified SFP+ detected on %c from %s part no: %s",
5161 adapter->port_name, adapter->phy.vendor_name,
5162 adapter->phy.vendor_pn);
5163 }
5164 adapter->flags &= ~BE_FLAGS_EVT_INCOMPATIBLE_SFP;
5165}
5166
5167static void be_worker(struct work_struct *work)
5168{
5169 struct be_adapter *adapter =
5170 container_of(work, struct be_adapter, work.work);
5171 struct be_rx_obj *rxo;
5172 int i;
5173
5174 /* when interrupts are not yet enabled, just reap any pending
5175 * mcc completions */
5176 if (!netif_running(adapter->netdev)) {
5177 local_bh_disable();
5178 be_process_mcc(adapter);
5179 local_bh_enable();
5180 goto reschedule;
5181 }
5182
5183 if (!adapter->stats_cmd_sent) {
5184 if (lancer_chip(adapter))
5185 lancer_cmd_get_pport_stats(adapter,
5186 &adapter->stats_cmd);
5187 else
5188 be_cmd_get_stats(adapter, &adapter->stats_cmd);
5189 }
5190
5191 if (be_physfn(adapter) &&
5192 MODULO(adapter->work_counter, adapter->be_get_temp_freq) == 0)
5193 be_cmd_get_die_temperature(adapter);
5194
5195 for_all_rx_queues(adapter, rxo, i) {
5196 /* Replenish RX-queues starved due to memory
5197 * allocation failures.
5198 */
5199 if (rxo->rx_post_starved)
5200 be_post_rx_frags(rxo, GFP_KERNEL, MAX_RX_POST);
5201 }
5202
5203 be_eqd_update(adapter);
5204
5205 if (adapter->flags & BE_FLAGS_EVT_INCOMPATIBLE_SFP)
5206 be_log_sfp_info(adapter);
5207
5208reschedule:
5209 adapter->work_counter++;
5210 schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000));
5211}
5212 5199
5213/* If any VFs are already enabled don't FLR the PF */ 5200/* If any VFs are already enabled don't FLR the PF */
5214static bool be_reset_required(struct be_adapter *adapter) 5201static bool be_reset_required(struct be_adapter *adapter)
@@ -5314,21 +5301,25 @@ static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
5314 if (!status) 5301 if (!status)
5315 dev_info(&pdev->dev, "PCIe error reporting enabled\n"); 5302 dev_info(&pdev->dev, "PCIe error reporting enabled\n");
5316 5303
5317 status = be_ctrl_init(adapter); 5304 status = be_map_pci_bars(adapter);
5318 if (status) 5305 if (status)
5319 goto free_netdev; 5306 goto free_netdev;
5320 5307
5308 status = be_drv_init(adapter);
5309 if (status)
5310 goto unmap_bars;
5311
5321 /* sync up with fw's ready state */ 5312 /* sync up with fw's ready state */
5322 if (be_physfn(adapter)) { 5313 if (be_physfn(adapter)) {
5323 status = be_fw_wait_ready(adapter); 5314 status = be_fw_wait_ready(adapter);
5324 if (status) 5315 if (status)
5325 goto ctrl_clean; 5316 goto drv_cleanup;
5326 } 5317 }
5327 5318
5328 if (be_reset_required(adapter)) { 5319 if (be_reset_required(adapter)) {
5329 status = be_cmd_reset_function(adapter); 5320 status = be_cmd_reset_function(adapter);
5330 if (status) 5321 if (status)
5331 goto ctrl_clean; 5322 goto drv_cleanup;
5332 5323
5333 /* Wait for interrupts to quiesce after an FLR */ 5324 /* Wait for interrupts to quiesce after an FLR */
5334 msleep(100); 5325 msleep(100);
@@ -5340,24 +5331,15 @@ static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
5340 /* tell fw we're ready to fire cmds */ 5331 /* tell fw we're ready to fire cmds */
5341 status = be_cmd_fw_init(adapter); 5332 status = be_cmd_fw_init(adapter);
5342 if (status) 5333 if (status)
5343 goto ctrl_clean; 5334 goto drv_cleanup;
5344
5345 status = be_stats_init(adapter);
5346 if (status)
5347 goto ctrl_clean;
5348 5335
5349 status = be_get_initial_config(adapter); 5336 status = be_get_initial_config(adapter);
5350 if (status) 5337 if (status)
5351 goto stats_clean; 5338 goto drv_cleanup;
5352
5353 INIT_DELAYED_WORK(&adapter->work, be_worker);
5354 INIT_DELAYED_WORK(&adapter->func_recovery_work, be_func_recovery_task);
5355 adapter->rx_fc = true;
5356 adapter->tx_fc = true;
5357 5339
5358 status = be_setup(adapter); 5340 status = be_setup(adapter);
5359 if (status) 5341 if (status)
5360 goto stats_clean; 5342 goto drv_cleanup;
5361 5343
5362 be_netdev_init(netdev); 5344 be_netdev_init(netdev);
5363 status = register_netdev(netdev); 5345 status = register_netdev(netdev);
@@ -5376,10 +5358,10 @@ static int be_probe(struct pci_dev *pdev, const struct pci_device_id *pdev_id)
5376 5358
5377unsetup: 5359unsetup:
5378 be_clear(adapter); 5360 be_clear(adapter);
5379stats_clean: 5361drv_cleanup:
5380 be_stats_cleanup(adapter); 5362 be_drv_cleanup(adapter);
5381ctrl_clean: 5363unmap_bars:
5382 be_ctrl_cleanup(adapter); 5364 be_unmap_pci_bars(adapter);
5383free_netdev: 5365free_netdev:
5384 free_netdev(netdev); 5366 free_netdev(netdev);
5385rel_reg: 5367rel_reg: