summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNgai-Mint Kwan <ngai-mint.kwan@intel.com>2018-10-15 21:18:27 +0200
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2018-10-31 18:31:24 +0100
commite69e40c8066c0e2fafd63a5919cb9b2fb9f81f2e (patch)
tree56fe6e2909ddf6d2644b24a0eda30c51d437353f
parentigb: shorten maximum PHC timecounter update interval (diff)
downloadlinux-e69e40c8066c0e2fafd63a5919cb9b2fb9f81f2e.tar.xz
linux-e69e40c8066c0e2fafd63a5919cb9b2fb9f81f2e.zip
fm10k: fix SM mailbox full condition
Current condition will always incorrectly report a full SM mailbox if an IES API application is not running. Due to this, the "fm10k_service_task" will be infinitely queued into the driver's workqueue. This, in turn, will cause a "kworker" thread to report 100% CPU utilization and might cause "soft lockup" events or system crashes. To fix this issue, a new condition is added to determine if the SM mailbox is in the correct state of FM10K_STATE_OPEN before proceeding. In other words, an instance of the IES API must be running. If there is, the remainder of the flow stays the same which is to determine if the SM mailbox capacity has been exceeded or not and take appropriate action. Signed-off-by: Ngai-Mint Kwan <ngai-mint.kwan@intel.com> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r--drivers/net/ethernet/intel/fm10k/fm10k_iov.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_iov.c b/drivers/net/ethernet/intel/fm10k/fm10k_iov.c
index e707d717012f..74160c2095ee 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_iov.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_iov.c
@@ -244,7 +244,8 @@ process_mbx:
}
/* guarantee we have free space in the SM mailbox */
- if (!hw->mbx.ops.tx_ready(&hw->mbx, FM10K_VFMBX_MSG_MTU)) {
+ if (hw->mbx.state == FM10K_STATE_OPEN &&
+ !hw->mbx.ops.tx_ready(&hw->mbx, FM10K_VFMBX_MSG_MTU)) {
/* keep track of how many times this occurs */
interface->hw_sm_mbx_full++;