diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c | 11 |
2 files changed, 16 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c index 11f24110d3f..238f824c2f3 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) | |||
1298 | return -EIO; | 1298 | return -EIO; |
1299 | } | 1299 | } |
1300 | 1300 | ||
1301 | /* | ||
1302 | * Synchronous commands from this op-mode must hold | ||
1303 | * the mutex, this ensures we don't try to send two | ||
1304 | * (or more) synchronous commands at a time. | ||
1305 | */ | ||
1306 | if (cmd->flags & CMD_SYNC) | ||
1307 | lockdep_assert_held(&priv->shrd->mutex); | ||
1308 | |||
1301 | return iwl_trans_send_cmd(trans(priv), cmd); | 1309 | return iwl_trans_send_cmd(trans(priv), cmd); |
1302 | } | 1310 | } |
1303 | 1311 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c index c85975e63d7..ca4ceeacc98 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c | |||
@@ -973,8 +973,6 @@ static int iwl_send_cmd_sync(struct iwl_trans *trans, struct iwl_host_cmd *cmd) | |||
973 | int cmd_idx; | 973 | int cmd_idx; |
974 | int ret; | 974 | int ret; |
975 | 975 | ||
976 | lockdep_assert_held(&trans->shrd->mutex); | ||
977 | |||
978 | IWL_DEBUG_INFO(trans, "Attempting to send sync command %s\n", | 976 | IWL_DEBUG_INFO(trans, "Attempting to send sync command %s\n", |
979 | get_cmd_string(cmd->id)); | 977 | get_cmd_string(cmd->id)); |
980 | 978 | ||
@@ -983,7 +981,14 @@ static int iwl_send_cmd_sync(struct iwl_trans *trans, struct iwl_host_cmd *cmd) | |||
983 | get_cmd_string(cmd->id)); | 981 | get_cmd_string(cmd->id)); |
984 | return -EIO; | 982 | return -EIO; |
985 | } | 983 | } |
986 | set_bit(STATUS_HCMD_ACTIVE, &trans->shrd->status); | 984 | |
985 | if (WARN_ON(test_and_set_bit(STATUS_HCMD_ACTIVE, | ||
986 | &trans->shrd->status))) { | ||
987 | IWL_ERR(trans, "Command %s: a command is already active!\n", | ||
988 | get_cmd_string(cmd->id)); | ||
989 | return -EIO; | ||
990 | } | ||
991 | |||
987 | IWL_DEBUG_INFO(trans, "Setting HCMD_ACTIVE for command %s\n", | 992 | IWL_DEBUG_INFO(trans, "Setting HCMD_ACTIVE for command %s\n", |
988 | get_cmd_string(cmd->id)); | 993 | get_cmd_string(cmd->id)); |
989 | 994 | ||