diff options
Diffstat (limited to 'drivers/net/cxgb3/cxgb3_main.c')
-rw-r--r-- | drivers/net/cxgb3/cxgb3_main.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/net/cxgb3/cxgb3_main.c b/drivers/net/cxgb3/cxgb3_main.c index d8be89621bf7..2c2aaa741450 100644 --- a/drivers/net/cxgb3/cxgb3_main.c +++ b/drivers/net/cxgb3/cxgb3_main.c | |||
@@ -602,7 +602,6 @@ static int setup_sge_qsets(struct adapter *adap) | |||
602 | &adap->params.sge.qset[qset_idx], ntxq, dev, | 602 | &adap->params.sge.qset[qset_idx], ntxq, dev, |
603 | netdev_get_tx_queue(dev, j)); | 603 | netdev_get_tx_queue(dev, j)); |
604 | if (err) { | 604 | if (err) { |
605 | t3_stop_sge_timers(adap); | ||
606 | t3_free_sge_resources(adap); | 605 | t3_free_sge_resources(adap); |
607 | return err; | 606 | return err; |
608 | } | 607 | } |
@@ -1046,6 +1045,8 @@ static int cxgb_up(struct adapter *adap) | |||
1046 | setup_rss(adap); | 1045 | setup_rss(adap); |
1047 | if (!(adap->flags & NAPI_INIT)) | 1046 | if (!(adap->flags & NAPI_INIT)) |
1048 | init_napi(adap); | 1047 | init_napi(adap); |
1048 | |||
1049 | t3_start_sge_timers(adap); | ||
1049 | adap->flags |= FULL_INIT_DONE; | 1050 | adap->flags |= FULL_INIT_DONE; |
1050 | } | 1051 | } |
1051 | 1052 | ||
@@ -2870,6 +2871,9 @@ static void t3_io_resume(struct pci_dev *pdev) | |||
2870 | { | 2871 | { |
2871 | struct adapter *adapter = pci_get_drvdata(pdev); | 2872 | struct adapter *adapter = pci_get_drvdata(pdev); |
2872 | 2873 | ||
2874 | CH_ALERT(adapter, "adapter recovering, PEX ERR 0x%x\n", | ||
2875 | t3_read_reg(adapter, A_PCIE_PEX_ERR)); | ||
2876 | |||
2873 | t3_resume_ports(adapter); | 2877 | t3_resume_ports(adapter); |
2874 | } | 2878 | } |
2875 | 2879 | ||
@@ -3002,7 +3006,7 @@ static int __devinit init_one(struct pci_dev *pdev, | |||
3002 | static int version_printed; | 3006 | static int version_printed; |
3003 | 3007 | ||
3004 | int i, err, pci_using_dac = 0; | 3008 | int i, err, pci_using_dac = 0; |
3005 | unsigned long mmio_start, mmio_len; | 3009 | resource_size_t mmio_start, mmio_len; |
3006 | const struct adapter_info *ai; | 3010 | const struct adapter_info *ai; |
3007 | struct adapter *adapter = NULL; | 3011 | struct adapter *adapter = NULL; |
3008 | struct port_info *pi; | 3012 | struct port_info *pi; |
@@ -3082,7 +3086,7 @@ static int __devinit init_one(struct pci_dev *pdev, | |||
3082 | INIT_WORK(&adapter->fatal_error_handler_task, fatal_error_task); | 3086 | INIT_WORK(&adapter->fatal_error_handler_task, fatal_error_task); |
3083 | INIT_DELAYED_WORK(&adapter->adap_check_task, t3_adap_check_task); | 3087 | INIT_DELAYED_WORK(&adapter->adap_check_task, t3_adap_check_task); |
3084 | 3088 | ||
3085 | for (i = 0; i < ai->nports; ++i) { | 3089 | for (i = 0; i < ai->nports0 + ai->nports1; ++i) { |
3086 | struct net_device *netdev; | 3090 | struct net_device *netdev; |
3087 | 3091 | ||
3088 | netdev = alloc_etherdev_mq(sizeof(struct port_info), SGE_QSETS); | 3092 | netdev = alloc_etherdev_mq(sizeof(struct port_info), SGE_QSETS); |
@@ -3172,7 +3176,7 @@ static int __devinit init_one(struct pci_dev *pdev, | |||
3172 | 3176 | ||
3173 | out_free_dev: | 3177 | out_free_dev: |
3174 | iounmap(adapter->regs); | 3178 | iounmap(adapter->regs); |
3175 | for (i = ai->nports - 1; i >= 0; --i) | 3179 | for (i = ai->nports0 + ai->nports1 - 1; i >= 0; --i) |
3176 | if (adapter->port[i]) | 3180 | if (adapter->port[i]) |
3177 | free_netdev(adapter->port[i]); | 3181 | free_netdev(adapter->port[i]); |
3178 | 3182 | ||