Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 134647
b: refs/heads/master
c: 5403750
h: refs/heads/master
i:
  134645: 838fcb7
  134643: 1f1c92a
  134639: 7ee58b9
v: v3
  • Loading branch information
Don Skidmore authored and David S. Miller committed Feb 21, 2009
1 parent faa570a commit 97629a9
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cd4d8fdad1f13205c769266dfa99015e226b6e07
refs/heads/master: 54037505a5278ce85df66531f384109ad94947e3
17 changes: 16 additions & 1 deletion trunk/drivers/net/ixgbe/ixgbe_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -936,7 +936,16 @@ static irqreturn_t ixgbe_msix_lsc(int irq, void *data)
struct net_device *netdev = data;
struct ixgbe_adapter *adapter = netdev_priv(netdev);
struct ixgbe_hw *hw = &adapter->hw;
u32 eicr = IXGBE_READ_REG(hw, IXGBE_EICR);
u32 eicr;

/*
* Workaround for Silicon errata. Use clear-by-write instead
* of clear-by-read. Reading with EICS will return the
* interrupt causes without clearing, which later be done
* with the write to EICR.
*/
eicr = IXGBE_READ_REG(hw, IXGBE_EICS);
IXGBE_WRITE_REG(hw, IXGBE_EICR, eicr);

if (eicr & IXGBE_EICR_LSC)
ixgbe_check_lsc(adapter);
Expand Down Expand Up @@ -1355,6 +1364,12 @@ static irqreturn_t ixgbe_intr(int irq, void *data)
struct ixgbe_hw *hw = &adapter->hw;
u32 eicr;

/*
* Workaround for silicon errata. Mask the interrupts
* before the read of EICR.
*/
IXGBE_WRITE_REG(hw, IXGBE_EIMC, IXGBE_IRQ_CLEAR_MASK);

/* for NAPI, using EIAM to auto-mask tx/rx interrupt bits on read
* therefore no explict interrupt disable is necessary */
eicr = IXGBE_READ_REG(hw, IXGBE_EICR);
Expand Down

0 comments on commit 97629a9

Please sign in to comment.