Commit d773ce2d authored by Don Skidmore's avatar Don Skidmore Committed by David S. Miller

ixgbe: modify behavior on receiving a HW ECC error.

Currently when we noticed a HW ECC error we would request the use reload
the driver to force a reset of the part.  This was done due to the mistaken
believe that a normal reset would not be sufficient.  Well it turns out it
would be so now we just schedule a reset upon seeing the ECC.
Signed-off-by: default avatarDon Skidmore <donald.c.skidmore@intel.com>
Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: default avatarAaron Brown <aaron.f.brown@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0b95227a
...@@ -2630,9 +2630,12 @@ static irqreturn_t ixgbe_msix_other(int irq, void *data) ...@@ -2630,9 +2630,12 @@ static irqreturn_t ixgbe_msix_other(int irq, void *data)
switch (hw->mac.type) { switch (hw->mac.type) {
case ixgbe_mac_82599EB: case ixgbe_mac_82599EB:
case ixgbe_mac_X540: case ixgbe_mac_X540:
if (eicr & IXGBE_EICR_ECC) if (eicr & IXGBE_EICR_ECC) {
e_info(link, "Received unrecoverable ECC Err, please " e_info(link, "Received ECC Err, initiating reset\n");
"reboot\n"); adapter->flags2 |= IXGBE_FLAG2_RESET_REQUESTED;
ixgbe_service_event_schedule(adapter);
IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_ECC);
}
/* Handle Flow Director Full threshold interrupt */ /* Handle Flow Director Full threshold interrupt */
if (eicr & IXGBE_EICR_FLOW_DIR) { if (eicr & IXGBE_EICR_FLOW_DIR) {
int reinit_count = 0; int reinit_count = 0;
...@@ -2846,9 +2849,12 @@ static irqreturn_t ixgbe_intr(int irq, void *data) ...@@ -2846,9 +2849,12 @@ static irqreturn_t ixgbe_intr(int irq, void *data)
ixgbe_check_sfp_event(adapter, eicr); ixgbe_check_sfp_event(adapter, eicr);
/* Fall through */ /* Fall through */
case ixgbe_mac_X540: case ixgbe_mac_X540:
if (eicr & IXGBE_EICR_ECC) if (eicr & IXGBE_EICR_ECC) {
e_info(link, "Received unrecoverable ECC err, please " e_info(link, "Received ECC Err, initiating reset\n");
"reboot\n"); adapter->flags2 |= IXGBE_FLAG2_RESET_REQUESTED;
ixgbe_service_event_schedule(adapter);
IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_ECC);
}
ixgbe_check_overtemp_event(adapter, eicr); ixgbe_check_overtemp_event(adapter, eicr);
break; break;
default: default:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment