From: Jacob Keller Date: Sat, 21 Sep 2013 05:05:44 +0000 (+0000) Subject: ixgbe: fix qv_lock_napi call in ixgbe_napi_disable_all X-Git-Tag: v3.13-rc1~105^2~100^2~8 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27d9ce4fd0e2e75c2907f6d3dc0487012a3e4298;p=pandora-kernel.git ixgbe: fix qv_lock_napi call in ixgbe_napi_disable_all ixgbe_napi_disable_all calls napi_disable on each queue, however the busy polling code introduced a local_bh_disable()d context around the napi_disable. The original author did not realize that napi_disable might sleep, which would cause a sleep while atomic BUG. In addition, on a single processor system, the ixgbe_qv_lock_napi loop shouldn't have to mdelay. This patch adds an ixgbe_qv_disable along with a new IXGBE_QV_STATE_DISABLED bit, which it uses to indicate to the poll and napi routines that the q_vector has been disabled. Now the ixgbe_napi_disable_all function will wait until all pending work has been finished and prevent any future work from being started. Signed-off-by: Jacob Keller Cc: Eliezer Tamir Cc: Alexander Duyck Cc: Hyong-Youb Kim Cc: Amir Vadai Cc: Dmitry Kravkov Tested-by: Phil Schmitt Signed-off-by: Jeff Kirsher --- Reading git-diff-tree failed