aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mwifiex/util.c
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2011-04-25 14:34:25 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-04-25 14:34:25 -0400
commitcfef6047c4027a8448ec8dafeaf2bb362cc882e4 (patch)
treec254bd25aa8b4b0696b5b5cc45d8e30c7c1bb9dd /drivers/net/wireless/mwifiex/util.c
parentb71d1d426d263b0b6cb5760322efebbfc89d4463 (diff)
parent73b48099cc265f88fa1255f3f43e52fe6a94fd5c (diff)
downloadkernel_samsung_smdk4412-cfef6047c4027a8448ec8dafeaf2bb362cc882e4.zip
kernel_samsung_smdk4412-cfef6047c4027a8448ec8dafeaf2bb362cc882e4.tar.gz
kernel_samsung_smdk4412-cfef6047c4027a8448ec8dafeaf2bb362cc882e4.tar.bz2
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem
Conflicts: drivers/net/wireless/iwlwifi/iwl-core.c drivers/net/wireless/rt2x00/rt2x00queue.c drivers/net/wireless/rt2x00/rt2x00queue.h
Diffstat (limited to 'drivers/net/wireless/mwifiex/util.c')
-rw-r--r--drivers/net/wireless/mwifiex/util.c55
1 files changed, 15 insertions, 40 deletions
diff --git a/drivers/net/wireless/mwifiex/util.c b/drivers/net/wireless/mwifiex/util.c
index 205022a..7ab4fb2 100644
--- a/drivers/net/wireless/mwifiex/util.c
+++ b/drivers/net/wireless/mwifiex/util.c
@@ -55,18 +55,12 @@ int mwifiex_shutdown_fw_complete(struct mwifiex_adapter *adapter)
}
/*
- * IOCTL request handler to send function init/shutdown command
+ * This function sends init/shutdown command
* to firmware.
- *
- * This function prepares the correct firmware command and
- * issues it.
*/
-int mwifiex_misc_ioctl_init_shutdown(struct mwifiex_adapter *adapter,
- struct mwifiex_wait_queue *wait,
- u32 func_init_shutdown)
+int mwifiex_init_shutdown_fw(struct mwifiex_private *priv,
+ u32 func_init_shutdown)
{
- struct mwifiex_private *priv = adapter->priv[wait->bss_index];
- int ret;
u16 cmd;
if (func_init_shutdown == MWIFIEX_FUNC_INIT) {
@@ -74,19 +68,13 @@ int mwifiex_misc_ioctl_init_shutdown(struct mwifiex_adapter *adapter,
} else if (func_init_shutdown == MWIFIEX_FUNC_SHUTDOWN) {
cmd = HostCmd_CMD_FUNC_SHUTDOWN;
} else {
- dev_err(adapter->dev, "unsupported parameter\n");
+ dev_err(priv->adapter->dev, "unsupported parameter\n");
return -1;
}
- /* Send command to firmware */
- ret = mwifiex_prepare_cmd(priv, cmd, HostCmd_ACT_GEN_SET,
- 0, wait, NULL);
-
- if (!ret)
- ret = -EINPROGRESS;
-
- return ret;
+ return mwifiex_send_cmd_sync(priv, cmd, HostCmd_ACT_GEN_SET, 0, NULL);
}
+EXPORT_SYMBOL_GPL(mwifiex_init_shutdown_fw);
/*
* IOCTL request handler to set/get debug information.
@@ -222,31 +210,18 @@ int mwifiex_recv_complete(struct mwifiex_adapter *adapter,
* corresponding waiting function. Otherwise, it processes the
* IOCTL response and frees the response buffer.
*/
-int mwifiex_ioctl_complete(struct mwifiex_adapter *adapter,
- struct mwifiex_wait_queue *wait_queue,
- int status)
+int mwifiex_complete_cmd(struct mwifiex_adapter *adapter)
{
- enum mwifiex_error_code status_code =
- (enum mwifiex_error_code) wait_queue->status;
-
- atomic_dec(&adapter->ioctl_pending);
+ atomic_dec(&adapter->cmd_pending);
+ dev_dbg(adapter->dev, "cmd completed: status=%d\n",
+ adapter->cmd_wait_q.status);
- dev_dbg(adapter->dev, "cmd: IOCTL completed: status=%d,"
- " status_code=%#x\n", status, status_code);
+ adapter->cmd_wait_q.condition = true;
- if (wait_queue->enabled) {
- *wait_queue->condition = true;
- wait_queue->status = status;
- if (status && (status_code == MWIFIEX_ERROR_CMD_TIMEOUT))
- dev_err(adapter->dev, "cmd timeout\n");
- else
- wake_up_interruptible(wait_queue->wait);
- } else {
- if (status)
- dev_err(adapter->dev, "cmd failed: status_code=%#x\n",
- status_code);
- kfree(wait_queue);
- }
+ if (adapter->cmd_wait_q.status == -ETIMEDOUT)
+ dev_err(adapter->dev, "cmd timeout\n");
+ else
+ wake_up_interruptible(&adapter->cmd_wait_q.wait);
return 0;
}