summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-03-06 13:30:41 -0800
committerJohn W. Linville <linville@tuxdriver.com>2012-03-07 13:51:49 -0500
commit2cc39c94c15ba1d5f6f71ab73f3369f9c17856ad (patch)
tree99bf63efa8fb8d8ef9943c64595ad55f7bfb1b3a /drivers/net/wireless/iwlwifi/iwl-agn-lib.c
parent721c32f72d8007dc0148ee88c046a4ade794a7b7 (diff)
downloadop-kernel-dev-2cc39c94c15ba1d5f6f71ab73f3369f9c17856ad.zip
op-kernel-dev-2cc39c94c15ba1d5f6f71ab73f3369f9c17856ad.tar.gz
iwlwifi: move lockdep assertion into DVM
The fact that the mutex must be held is an implementation detail of DVM, but something has to ensure that no two synchronous cmds are submitted concurrently. Move the lockdep assertion into the DVM-specific code, but also make the transport abort if there are two concurrently commands. The assertion is much more useful though as the transport check can only catch it when it actually happens, while the assertion makes sure it can't possibly happen. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn-lib.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-lib.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index 11f2411..238f824 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -1298,6 +1298,14 @@ int iwl_dvm_send_cmd(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
return -EIO;
}
+ /*
+ * Synchronous commands from this op-mode must hold
+ * the mutex, this ensures we don't try to send two
+ * (or more) synchronous commands at a time.
+ */
+ if (cmd->flags & CMD_SYNC)
+ lockdep_assert_held(&priv->shrd->mutex);
+
return iwl_trans_send_cmd(trans(priv), cmd);
}
OpenPOWER on IntegriCloud