mwifiex: simplify mwifiex_complete_cmd
authorAndreas Fenkart <afenkart@gmail.com>
Fri, 17 Jul 2015 07:13:06 +0000 (09:13 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 6 Aug 2015 07:09:13 +0000 (10:09 +0300)
600f5d909a54("mwifiex: cleanup ioctl wait queue and abstraction layer")
introduced the wakeup_interruptible suppression in mwifiex_complete_cmd
b1a47aa5e1e1("mwifiex: fix system hang issue in cmd timeout error case")
then added wakup_interruptible to mwifiex_cmd_timeout_func the single
place setting a status of ETIMEDOUT.
Instead of doing extra work, using the standard call-chain will have the
same effect:
mwifiex_cancel_pending_ioctl
-> mwifiex_recycle_cmd_node
-> mwifiex_insert_cmd_to_free_q
-> mwifiex_complete_cmd
-> wake_up_interruptible

The difference is that previously the condition was not set to true,
but that's probably just an oversight in b1a47aa5e1e1 and shouldn't
have any consequence

Signed-off-by: Andreas Fenkart <afenkart@gmail.com>
Acked-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/mwifiex/cmdevt.c
drivers/net/wireless/mwifiex/sta_ioctl.c
drivers/net/wireless/mwifiex/util.c

index 6458e17..27b778d 100644 (file)
@@ -976,7 +976,6 @@ mwifiex_cmd_timeout_func(unsigned long function_context)
 
                if (cmd_node->wait_q_enabled) {
                        adapter->cmd_wait_q.status = -ETIMEDOUT;
-                       wake_up_interruptible(&adapter->cmd_wait_q.wait);
                        mwifiex_cancel_pending_ioctl(adapter);
                }
        }
index d8b7d9c..a6c8a4f 100644 (file)
@@ -66,8 +66,8 @@ int mwifiex_wait_queue_complete(struct mwifiex_adapter *adapter,
        if (status <= 0) {
                if (status == 0)
                        status = -ETIMEDOUT;
-               mwifiex_dbg(adapter, ERROR,
-                           "cmd_wait_q terminated: %d\n", status);
+               mwifiex_dbg(adapter, ERROR, "cmd_wait_q terminated: %d\n",
+                           status);
                mwifiex_cancel_all_pending_cmd(adapter);
                return status;
        }
index 2504e42..a5f34f2 100644 (file)
@@ -496,16 +496,12 @@ int mwifiex_recv_packet(struct mwifiex_private *priv, struct sk_buff *skb)
 int mwifiex_complete_cmd(struct mwifiex_adapter *adapter,
                         struct cmd_ctrl_node *cmd_node)
 {
-       mwifiex_dbg(adapter, CMD,
-                   "cmd completed: status=%d\n",
+       WARN_ON(!cmd_node->wait_q_enabled);
+       mwifiex_dbg(adapter, CMD, "cmd completed: status=%d\n",
                    adapter->cmd_wait_q.status);
 
-       *(cmd_node->condition) = true;
-
-       if (adapter->cmd_wait_q.status == -ETIMEDOUT)
-               mwifiex_dbg(adapter, ERROR, "cmd timeout\n");
-       else
-               wake_up_interruptible(&adapter->cmd_wait_q.wait);
+       *cmd_node->condition = true;
+       wake_up_interruptible(&adapter->cmd_wait_q.wait);
 
        return 0;
 }