Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7bb417d authored by Don Skidmore's avatar Don Skidmore Committed by David S. Miller
Browse files

ixgbevf: cleanup redundant mailbox read failure check



Since we are already checking for read failure in check_link we don't need
to do it here. Instead just make sure the watchdog task gets scheduled, if
we are up, and it can be done there. This will better follow igbvf method
of handling a mailbox event and message timeout.

Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: default avatarDon Skidmore <donald.c.skidmore@intel.com>
Tested-by: default avatarStephen Ko <stephen.s.ko@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fa07f10d
Loading
Loading
Loading
Loading
+2 −27
Original line number Diff line number Diff line
@@ -756,37 +756,12 @@ static void ixgbevf_set_itr(struct ixgbevf_q_vector *q_vector)
static irqreturn_t ixgbevf_msix_other(int irq, void *data)
{
	struct ixgbevf_adapter *adapter = data;
	struct pci_dev *pdev = adapter->pdev;
	struct ixgbe_hw *hw = &adapter->hw;
	u32 msg;
	bool got_ack = false;

	hw->mac.get_link_status = 1;
	if (!hw->mbx.ops.check_for_ack(hw))
		got_ack = true;

	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));
			adapter->link_up = false;
		}

		if (msg & IXGBE_VT_MSGTYPE_NACK)
			dev_info(&pdev->dev,
				 "Last Request of type %2.2x to PF Nacked\n",
				 msg & 0xFF);
		hw->mbx.v2p_mailbox |= IXGBE_VFMAILBOX_PFSTS;
	}

	/* 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;
	if (!test_bit(__IXGBEVF_DOWN, &adapter->state))
		mod_timer(&adapter->watchdog_timer, jiffies);

	IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, adapter->eims_other);