aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
diff options
context:
space:
mode:
authorAlexander Duyck <aduyck@mirantis.com>2015-09-22 14:35:41 -0700
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2015-11-23 11:08:49 -0800
commit5d6002b7b822c7423e75d4651e6790bfb5642b1b (patch)
tree38e9e489192df6b629ac4e5c48a2557c635d2492 /drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
parentfm10k: Fix handling of NAPI budget when multiple queues are enabled per vector (diff)
downloadlinux-dev-5d6002b7b822c7423e75d4651e6790bfb5642b1b.tar.xz
linux-dev-5d6002b7b822c7423e75d4651e6790bfb5642b1b.zip
ixgbe: Fix handling of NAPI budget when multiple queues are enabled per vector
This patch corrects an issue in which the polling routine would increase the budget for Rx to at least 1 per queue if multiple queues were present. This would result in Rx packets being processed when the budget was 0 which is meant to indicate that no Rx can be handled. Signed-off-by: Alexander Duyck <aduyck@mirantis.com> Tested-by: Darin Miller <darin.j.miller@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to '')
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index c9b7e5ef62aa..4fa94a3ca47c 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -2783,7 +2783,8 @@ int ixgbe_poll(struct napi_struct *napi, int budget)
ixgbe_for_each_ring(ring, q_vector->tx)
clean_complete &= !!ixgbe_clean_tx_irq(q_vector, ring);
- if (!ixgbe_qv_lock_napi(q_vector))
+ /* Exit if we are called by netpoll or busy polling is active */
+ if ((budget <= 0) || !ixgbe_qv_lock_napi(q_vector))
return budget;
/* attempt to distribute budget to each queue fairly, but don't allow