diff mbox series

[net-next,1/3] fm10k: fix SM mailbox full condition

Message ID 20181015191829.17115-2-jacob.e.keller@intel.com
State Accepted
Delegated to: Jeff Kirsher
Headers show
Series fm10k: driver updates | expand

Commit Message

Jacob Keller Oct. 15, 2018, 7:18 p.m. UTC
From: Ngai-Mint Kwan <ngai-mint.kwan@intel.com>

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>
---
 drivers/net/ethernet/intel/fm10k/fm10k_iov.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Singh, Krishneil K Nov. 1, 2018, 6 p.m. UTC | #1
> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces@osuosl.org] On Behalf
> Of Jacob Keller
> Sent: Monday, October 15, 2018 12:18 PM
> To: Intel Wired LAN <intel-wired-lan@lists.osuosl.org>
> Cc: Kwan, Ngai-mint <ngai-mint.kwan@intel.com>
> Subject: [Intel-wired-lan] [net-next 1/3] fm10k: fix SM mailbox full condition
> 
> From: Ngai-Mint Kwan <ngai-mint.kwan@intel.com>
> 
> 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>
> ---

Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
diff mbox series

Patch

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 @@  s32 fm10k_iov_mbx(struct fm10k_intfc *interface)
 		}
 
 		/* 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++;