cxgb3: Leave interrupts for fatal errors asserted in common code.
authorCasey Leedom <leedom@chelsio.com>
Thu, 2 Sep 2010 13:07:31 +0000 (13:07 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 3 Sep 2010 17:03:51 +0000 (10:03 -0700)
Platform code needs to deal with them now.

Signed-off-by: Dimitris Michailidis <dm@chelsio.com>
Signed-off-by: Casey Leedom <leedom@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/cxgb3/t3_hw.c

index 14a56640dfa93ae81cff3a273c706174b11e0384..d307c9de59fbda00e425138355574a44ffc6bbdf 100644 (file)
@@ -1408,6 +1408,7 @@ static int t3_handle_intr_status(struct adapter *adapter, unsigned int reg,
                        fatal++;
                        CH_ALERT(adapter, "%s (0x%x)\n",
                                 acts->msg, status & acts->mask);
+                       status &= ~acts->mask;
                } else if (acts->msg)
                        CH_WARN(adapter, "%s (0x%x)\n",
                                acts->msg, status & acts->mask);
@@ -1843,11 +1844,10 @@ static int mac_intr_handler(struct adapter *adap, unsigned int idx)
                t3_os_link_fault_handler(adap, idx);
        }
 
-       t3_write_reg(adap, A_XGM_INT_CAUSE + mac->offset, cause);
-
        if (cause & XGM_INTR_FATAL)
                t3_fatal_err(adap);
 
+       t3_write_reg(adap, A_XGM_INT_CAUSE + mac->offset, cause);
        return cause != 0;
 }