diff options
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_main.c')
-rw-r--r-- | drivers/net/ixgbe/ixgbe_main.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 01d8b6b12be6..4a316e9c0541 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -2458,6 +2458,17 @@ static int ixgbe_up_complete(struct ixgbe_adapter *adapter) | |||
2458 | ixgbe_irq_enable(adapter); | 2458 | ixgbe_irq_enable(adapter); |
2459 | 2459 | ||
2460 | /* | 2460 | /* |
2461 | * If this adapter has a fan, check to see if we had a failure | ||
2462 | * before we enabled the interrupt. | ||
2463 | */ | ||
2464 | if (adapter->flags & IXGBE_FLAG_FAN_FAIL_CAPABLE) { | ||
2465 | u32 esdp = IXGBE_READ_REG(hw, IXGBE_ESDP); | ||
2466 | if (esdp & IXGBE_ESDP_SDP1) | ||
2467 | DPRINTK(DRV, CRIT, | ||
2468 | "Fan has stopped, replace the adapter\n"); | ||
2469 | } | ||
2470 | |||
2471 | /* | ||
2461 | * For hot-pluggable SFP+ devices, a new SFP+ module may have | 2472 | * For hot-pluggable SFP+ devices, a new SFP+ module may have |
2462 | * arrived before interrupts were enabled. We need to kick off | 2473 | * arrived before interrupts were enabled. We need to kick off |
2463 | * the SFP+ module setup first, then try to bring up link. | 2474 | * the SFP+ module setup first, then try to bring up link. |
@@ -3382,9 +3393,11 @@ static int __devinit ixgbe_sw_init(struct ixgbe_adapter *adapter) | |||
3382 | adapter->ring_feature[RING_F_RSS].indices = rss; | 3393 | adapter->ring_feature[RING_F_RSS].indices = rss; |
3383 | adapter->flags |= IXGBE_FLAG_RSS_ENABLED; | 3394 | adapter->flags |= IXGBE_FLAG_RSS_ENABLED; |
3384 | adapter->ring_feature[RING_F_DCB].indices = IXGBE_MAX_DCB_INDICES; | 3395 | adapter->ring_feature[RING_F_DCB].indices = IXGBE_MAX_DCB_INDICES; |
3385 | if (hw->mac.type == ixgbe_mac_82598EB) | 3396 | if (hw->mac.type == ixgbe_mac_82598EB) { |
3397 | if (hw->device_id == IXGBE_DEV_ID_82598AT) | ||
3398 | adapter->flags |= IXGBE_FLAG_FAN_FAIL_CAPABLE; | ||
3386 | adapter->max_msix_q_vectors = MAX_MSIX_Q_VECTORS_82598; | 3399 | adapter->max_msix_q_vectors = MAX_MSIX_Q_VECTORS_82598; |
3387 | else if (hw->mac.type == ixgbe_mac_82599EB) { | 3400 | } else if (hw->mac.type == ixgbe_mac_82599EB) { |
3388 | adapter->max_msix_q_vectors = MAX_MSIX_Q_VECTORS_82599; | 3401 | adapter->max_msix_q_vectors = MAX_MSIX_Q_VECTORS_82599; |
3389 | adapter->flags |= IXGBE_FLAG_RSC_CAPABLE; | 3402 | adapter->flags |= IXGBE_FLAG_RSC_CAPABLE; |
3390 | adapter->flags |= IXGBE_FLAG_RSC_ENABLED; | 3403 | adapter->flags |= IXGBE_FLAG_RSC_ENABLED; |
@@ -4915,6 +4928,17 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev, | |||
4915 | if (err) | 4928 | if (err) |
4916 | goto err_sw_init; | 4929 | goto err_sw_init; |
4917 | 4930 | ||
4931 | /* | ||
4932 | * If there is a fan on this device and it has failed log the | ||
4933 | * failure. | ||
4934 | */ | ||
4935 | if (adapter->flags & IXGBE_FLAG_FAN_FAIL_CAPABLE) { | ||
4936 | u32 esdp = IXGBE_READ_REG(hw, IXGBE_ESDP); | ||
4937 | if (esdp & IXGBE_ESDP_SDP1) | ||
4938 | DPRINTK(PROBE, CRIT, | ||
4939 | "Fan has stopped, replace the adapter\n"); | ||
4940 | } | ||
4941 | |||
4918 | /* reset_hw fills in the perm_addr as well */ | 4942 | /* reset_hw fills in the perm_addr as well */ |
4919 | err = hw->mac.ops.reset_hw(hw); | 4943 | err = hw->mac.ops.reset_hw(hw); |
4920 | if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) { | 4944 | if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) { |