fm10k: fix interrupt fault handling

The fm10k driver was reading the interrupt cause register but then
using the interrupt mask register defines to look at the bits.
The result is that if a fault happens, the driver would never clear
the fault and would get into an infinite cycle of interrupts.

Note: I don't work for Intel or have the hardware manuals (probably
requires NDA anyway), but this looks logical and matches how the
known working Linux driver handles these bits.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Jing Chen <jing.d.chen@intel.com>
This commit is contained in:
Stephen Hemminger 2015-07-16 17:33:22 -07:00 committed by Thomas Monjalon
parent 28d0cf90e0
commit 5fd61965ef

View File

@ -1779,7 +1779,7 @@ fm10k_dev_handle_fault(struct fm10k_hw *hw, uint32_t eicr)
const char *estr = "Unknown error";
/* Process PCA fault */
if (eicr & FM10K_EIMR_PCA_FAULT) {
if (eicr & FM10K_EICR_PCA_FAULT) {
err = fm10k_get_fault(hw, FM10K_PCA_FAULT, &fault);
if (err)
goto error;
@ -1807,7 +1807,7 @@ fm10k_dev_handle_fault(struct fm10k_hw *hw, uint32_t eicr)
}
/* Process THI fault */
if (eicr & FM10K_EIMR_THI_FAULT) {
if (eicr & FM10K_EICR_THI_FAULT) {
err = fm10k_get_fault(hw, FM10K_THI_FAULT, &fault);
if (err)
goto error;
@ -1825,7 +1825,7 @@ fm10k_dev_handle_fault(struct fm10k_hw *hw, uint32_t eicr)
}
/* Process FUM fault */
if (eicr & FM10K_EIMR_FUM_FAULT) {
if (eicr & FM10K_EICR_FUM_FAULT) {
err = fm10k_get_fault(hw, FM10K_FUM_FAULT, &fault);
if (err)
goto error;