netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
To: davem@davemloft.net
Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>,
	netdev@vger.kernel.org, nhorman@redhat.com, sassmann@redhat.com,
	jogreene@redhat.com, Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Subject: [net-next 06/17] i40e/i40evf: fix Tx hang workaround code
Date: Wed, 30 Sep 2015 05:52:30 -0700	[thread overview]
Message-ID: <1443617561-40490-7-git-send-email-jeffrey.t.kirsher@intel.com> (raw)
In-Reply-To: <1443617561-40490-1-git-send-email-jeffrey.t.kirsher@intel.com>

From: Jesse Brandeburg <jesse.brandeburg@intel.com>

The arm writeback (arm_wb) code is used for kicking the Tx ring to
make sure any pending work is completed even if interrupts are
disabled. It was running when it didn't need to, and not clearing
the ring->arm_wb state after it was set.  This caused Tx hangs
to still occur occasionally when there really was no hang.
Fix this by resetting the variable right after it was used.

Change-ID: I7bf75d552ba9c4bd203d40615213861a24bb5594
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e_txrx.c   | 1 +
 drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 3 +--
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 3ce4900..47dba9b0 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -1842,6 +1842,7 @@ int i40e_napi_poll(struct napi_struct *napi, int budget)
 	i40e_for_each_ring(ring, q_vector->tx) {
 		clean_complete &= i40e_clean_tx_irq(ring, vsi->work_limit);
 		arm_wb |= ring->arm_wb;
+		ring->arm_wb = false;
 	}
 
 	/* We attempt to distribute budget to each Rx queue fairly, but don't
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
index 8309793..aaee89f 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
@@ -254,8 +254,6 @@ static bool i40e_clean_tx_irq(struct i40e_ring *tx_ring, int budget)
 	    !test_bit(__I40E_DOWN, &tx_ring->vsi->state) &&
 	    (I40E_DESC_UNUSED(tx_ring) != tx_ring->count))
 		tx_ring->arm_wb = true;
-	else
-		tx_ring->arm_wb = false;
 
 	netdev_tx_completed_queue(netdev_get_tx_queue(tx_ring->netdev,
 						      tx_ring->queue_index),
@@ -1288,6 +1286,7 @@ int i40evf_napi_poll(struct napi_struct *napi, int budget)
 	i40e_for_each_ring(ring, q_vector->tx) {
 		clean_complete &= i40e_clean_tx_irq(ring, vsi->work_limit);
 		arm_wb |= ring->arm_wb;
+		ring->arm_wb = false;
 	}
 
 	/* We attempt to distribute budget to each Rx queue fairly, but don't
-- 
2.4.3

  parent reply	other threads:[~2015-09-30 12:52 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-30 12:52 [net-next 00/17][pull request] Intel Wired LAN Driver Updates 2015-09-30 Jeff Kirsher
2015-09-30 12:52 ` [net-next 01/17] i40evf: missing rtnl_unlock in i40evf_resume() Jeff Kirsher
2015-09-30 12:52 ` [net-next 02/17] i40e: rtnl_lock called twice in i40e_pci_error_resume() Jeff Kirsher
2015-09-30 12:52 ` [net-next 03/17] i40e/i40evf: fix up type clash in i40e_aq_rc_to_posix conversion Jeff Kirsher
2015-09-30 12:52 ` [net-next 04/17] i40e: Fix a port VLAN configuration bug Jeff Kirsher
2015-09-30 12:52 ` [net-next 05/17] i40e: fixup padding issue in get_cee_dcb_cfg_v1_resp Jeff Kirsher
2015-09-30 12:52 ` Jeff Kirsher [this message]
2015-09-30 12:52 ` [net-next 07/17] i40e: count drops in netstat interface Jeff Kirsher
2015-09-30 12:52 ` [net-next 08/17] i40e: use QOS field consistently Jeff Kirsher
2015-09-30 12:52 ` [net-next 09/17] i40e: limit debugfs io ops Jeff Kirsher
2015-09-30 12:52 ` [net-next 10/17] i40e: Remove useless message Jeff Kirsher
2015-09-30 12:52 ` [net-next 11/17] i40e/i40evf: add new device id 1588 Jeff Kirsher
2015-09-30 12:52 ` [net-next 12/17] i40e: Strip VEB stats if they are disabled in HW Jeff Kirsher
2015-09-30 12:52 ` [net-next 13/17] i40e: refactor interrupt enable Jeff Kirsher
2015-09-30 12:52 ` [net-next 14/17] i40e: warn on double free Jeff Kirsher
2015-09-30 12:52 ` [net-next 15/17] i40evf: tweak init timing Jeff Kirsher
2015-09-30 12:52 ` [net-next 16/17] i40e: fix kbuild warnings Jeff Kirsher
2015-09-30 12:52 ` [net-next 17/17] i40e: fix 32 bit build warnings Jeff Kirsher
2015-10-03 12:17 ` [net-next 00/17][pull request] Intel Wired LAN Driver Updates 2015-09-30 David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1443617561-40490-7-git-send-email-jeffrey.t.kirsher@intel.com \
    --to=jeffrey.t.kirsher@intel.com \
    --cc=davem@davemloft.net \
    --cc=jesse.brandeburg@intel.com \
    --cc=jogreene@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=nhorman@redhat.com \
    --cc=sassmann@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).