Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 286671
b: refs/heads/master
c: 375b27c
h: refs/heads/master
i:
  286669: 7a6ddc9
  286667: ebe535e
  286663: e831e57
  286655: f56ccf5
v: v3
  • Loading branch information
Greg Rose authored and David S. Miller committed Jan 19, 2012
1 parent 53d2e14 commit 2f14e40
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 19 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: 795be954dcc4a72329c8591aafe5eadb03b264af
refs/heads/master: 375b27cf5db963e2bc2a34dc5643d0d7ceca1ee2
39 changes: 21 additions & 18 deletions trunk/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -917,31 +917,34 @@ static irqreturn_t ixgbevf_msix_mbx(int irq, void *data)
struct ixgbe_hw *hw = &adapter->hw;
u32 eicr;
u32 msg;
bool got_ack = false;

eicr = IXGBE_READ_REG(hw, IXGBE_VTEICS);
IXGBE_WRITE_REG(hw, IXGBE_VTEICR, eicr);

if (!hw->mbx.ops.check_for_ack(hw)) {
/*
* checking for the ack clears the PFACK bit. Place
* it back in the v2p_mailbox cache so that anyone
* polling for an ack will not miss it. Also
* avoid the read below because the code to read
* the mailbox will also clear the ack bit. This was
* causing lost acks. Just cache the bit and exit
* the IRQ handler.
*/
hw->mbx.v2p_mailbox |= IXGBE_VFMAILBOX_PFACK;
goto out;
}
if (!hw->mbx.ops.check_for_ack(hw))
got_ack = true;

/* Not an ack interrupt, go ahead and read the message */
hw->mbx.ops.read(hw, &msg, 1);
if (!hw->mbx.ops.check_for_msg(hw)) {
hw->mbx.ops.read(hw, &msg, 1);

if ((msg & IXGBE_MBVFICR_VFREQ_MASK) == IXGBE_PF_CONTROL_MSG)
mod_timer(&adapter->watchdog_timer,
round_jiffies(jiffies + 1));
if ((msg & IXGBE_MBVFICR_VFREQ_MASK) == IXGBE_PF_CONTROL_MSG)
mod_timer(&adapter->watchdog_timer,
round_jiffies(jiffies + 1));

if (msg & IXGBE_VT_MSGTYPE_NACK)
pr_warn("Last Request of type %2.2x to PF Nacked\n",
msg & 0xFF);
goto out;
}

/*
* checking for the ack clears the PFACK bit. Place
* it back in the v2p_mailbox cache so that anyone
* polling for an ack will not miss it
*/
if (got_ack)
hw->mbx.v2p_mailbox |= IXGBE_VFMAILBOX_PFACK;
out:
return IRQ_HANDLED;
}
Expand Down

0 comments on commit 2f14e40

Please sign in to comment.