Skip to content

Commit

Permalink
iwlwifi: remove sync_cmd_mutex
Browse files Browse the repository at this point in the history
We now use priv->mutex to serialize sync command, remove old
priv->sync_cmd_mutex and add assertion that priv->mutex must be locked.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Stanislaw Gruszka authored and John W. Linville committed Apr 7, 2011
1 parent dc1a406 commit 8447c16
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 13 deletions.
4 changes: 0 additions & 4 deletions drivers/net/wireless/iwlwifi/iwl-agn.c
Original file line number Diff line number Diff line change
Expand Up @@ -2371,9 +2371,6 @@ static void __iwl_down(struct iwl_priv *priv)
priv->bt_full_concurrent = false;
priv->bt_ci_compliance = 0;

/* Unblock any waiting calls */
wake_up_interruptible_all(&priv->wait_command_queue);

/* Wipe out the EXIT_PENDING status bit if we are not actually
* exiting the module */
if (!exit_pending)
Expand Down Expand Up @@ -3620,7 +3617,6 @@ static int iwl_init_drv(struct iwl_priv *priv)
INIT_LIST_HEAD(&priv->free_frames);

mutex_init(&priv->mutex);
mutex_init(&priv->sync_cmd_mutex);

priv->ieee_channels = NULL;
priv->ieee_rates = NULL;
Expand Down
1 change: 0 additions & 1 deletion drivers/net/wireless/iwlwifi/iwl-dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -1307,7 +1307,6 @@ struct iwl_priv {
spinlock_t hcmd_lock; /* protect hcmd */
spinlock_t reg_lock; /* protect hw register access */
struct mutex mutex;
struct mutex sync_cmd_mutex; /* enable serialization of sync commands */

/* basic pci-network driver stuff */
struct pci_dev *pci_dev;
Expand Down
13 changes: 5 additions & 8 deletions drivers/net/wireless/iwlwifi/iwl-hcmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,14 +171,13 @@ int iwl_send_cmd_sync(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
int cmd_idx;
int ret;

BUG_ON(cmd->flags & CMD_ASYNC);
lockdep_assert_held(&priv->mutex);

/* A synchronous command can not have a callback set. */
BUG_ON(cmd->callback);
BUG_ON((cmd->flags & CMD_ASYNC) || cmd->callback);

IWL_DEBUG_INFO(priv, "Attempting to send sync command %s\n",
get_cmd_string(cmd->id));
mutex_lock(&priv->sync_cmd_mutex);

set_bit(STATUS_HCMD_ACTIVE, &priv->status);
IWL_DEBUG_INFO(priv, "Setting HCMD_ACTIVE for command %s\n",
Expand All @@ -189,7 +188,7 @@ int iwl_send_cmd_sync(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
ret = cmd_idx;
IWL_ERR(priv, "Error sending %s: enqueue_hcmd failed: %d\n",
get_cmd_string(cmd->id), ret);
goto out;
return ret;
}

ret = wait_event_interruptible_timeout(priv->wait_command_queue,
Expand Down Expand Up @@ -229,8 +228,7 @@ int iwl_send_cmd_sync(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
goto cancel;
}

ret = 0;
goto out;
return 0;

cancel:
if (cmd->flags & CMD_WANT_SKB) {
Expand All @@ -248,8 +246,7 @@ int iwl_send_cmd_sync(struct iwl_priv *priv, struct iwl_host_cmd *cmd)
iwl_free_pages(priv, cmd->reply_page);
cmd->reply_page = 0;
}
out:
mutex_unlock(&priv->sync_cmd_mutex);

return ret;
}

Expand Down

0 comments on commit 8447c16

Please sign in to comment.