提交 ac47246e 编写于 作者: D David Woodhouse 提交者: David S. Miller

libertas: kill adapter->nr_cmd_pending

Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 99c893f3
...@@ -1009,10 +1009,9 @@ void lbs_queue_cmd(struct lbs_adapter *adapter, ...@@ -1009,10 +1009,9 @@ void lbs_queue_cmd(struct lbs_adapter *adapter,
spin_lock_irqsave(&adapter->driver_lock, flags); spin_lock_irqsave(&adapter->driver_lock, flags);
if (addtail) { if (addtail)
list_add_tail(&cmdnode->list, &adapter->cmdpendingq); list_add_tail(&cmdnode->list, &adapter->cmdpendingq);
adapter->nr_cmd_pending++; else
} else
list_add(&cmdnode->list, &adapter->cmdpendingq); list_add(&cmdnode->list, &adapter->cmdpendingq);
spin_unlock_irqrestore(&adapter->driver_lock, flags); spin_unlock_irqrestore(&adapter->driver_lock, flags);
...@@ -1078,7 +1077,6 @@ static int DownloadcommandToStation(struct lbs_private *priv, ...@@ -1078,7 +1077,6 @@ static int DownloadcommandToStation(struct lbs_private *priv,
spin_lock_irqsave(&adapter->driver_lock, flags); spin_lock_irqsave(&adapter->driver_lock, flags);
adapter->cur_cmd_retcode = ret; adapter->cur_cmd_retcode = ret;
__lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd); __lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd);
adapter->nr_cmd_pending--;
adapter->cur_cmd = NULL; adapter->cur_cmd = NULL;
spin_unlock_irqrestore(&adapter->driver_lock, flags); spin_unlock_irqrestore(&adapter->driver_lock, flags);
goto done; goto done;
......
...@@ -791,7 +791,6 @@ int lbs_process_rx_command(struct lbs_private *priv) ...@@ -791,7 +791,6 @@ int lbs_process_rx_command(struct lbs_private *priv)
lbs_deb_host("invalid response!\n"); lbs_deb_host("invalid response!\n");
adapter->cur_cmd_retcode = -1; adapter->cur_cmd_retcode = -1;
__lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd); __lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd);
adapter->nr_cmd_pending--;
adapter->cur_cmd = NULL; adapter->cur_cmd = NULL;
spin_unlock_irqrestore(&adapter->driver_lock, flags); spin_unlock_irqrestore(&adapter->driver_lock, flags);
ret = -1; ret = -1;
...@@ -848,7 +847,6 @@ int lbs_process_rx_command(struct lbs_private *priv) ...@@ -848,7 +847,6 @@ int lbs_process_rx_command(struct lbs_private *priv)
} }
__lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd); __lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd);
adapter->nr_cmd_pending--;
adapter->cur_cmd = NULL; adapter->cur_cmd = NULL;
spin_unlock_irqrestore(&adapter->driver_lock, flags); spin_unlock_irqrestore(&adapter->driver_lock, flags);
...@@ -872,7 +870,6 @@ int lbs_process_rx_command(struct lbs_private *priv) ...@@ -872,7 +870,6 @@ int lbs_process_rx_command(struct lbs_private *priv)
} }
__lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd); __lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd);
adapter->nr_cmd_pending--;
adapter->cur_cmd = NULL; adapter->cur_cmd = NULL;
spin_unlock_irqrestore(&adapter->driver_lock, flags); spin_unlock_irqrestore(&adapter->driver_lock, flags);
...@@ -892,8 +889,6 @@ int lbs_process_rx_command(struct lbs_private *priv) ...@@ -892,8 +889,6 @@ int lbs_process_rx_command(struct lbs_private *priv)
if (adapter->cur_cmd) { if (adapter->cur_cmd) {
/* Clean up and Put current command back to cmdfreeq */ /* Clean up and Put current command back to cmdfreeq */
__lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd); __lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd);
adapter->nr_cmd_pending--;
WARN_ON(adapter->nr_cmd_pending > 128);
adapter->cur_cmd = NULL; adapter->cur_cmd = NULL;
} }
spin_unlock_irqrestore(&adapter->driver_lock, flags); spin_unlock_irqrestore(&adapter->driver_lock, flags);
......
...@@ -322,7 +322,8 @@ static ssize_t lbs_setuserscan(struct file *file, ...@@ -322,7 +322,8 @@ static ssize_t lbs_setuserscan(struct file *file,
lbs_scan_networks(priv, scan_cfg, 1); lbs_scan_networks(priv, scan_cfg, 1);
wait_event_interruptible(priv->adapter->cmd_pending, wait_event_interruptible(priv->adapter->cmd_pending,
priv->adapter->surpriseremoved || !priv->adapter->nr_cmd_pending); priv->adapter->surpriseremoved ||
(!priv->adapter->cur_cmd && list_empty(&priv->adapter->cmdpendingq)));
if (priv->adapter->surpriseremoved) if (priv->adapter->surpriseremoved)
goto out_scan_cfg; goto out_scan_cfg;
......
...@@ -231,7 +231,6 @@ struct lbs_adapter { ...@@ -231,7 +231,6 @@ struct lbs_adapter {
struct list_head cmdpendingq; struct list_head cmdpendingq;
wait_queue_head_t cmd_pending; wait_queue_head_t cmd_pending;
u8 nr_cmd_pending;
/* command related variables protected by adapter->driver_lock */ /* command related variables protected by adapter->driver_lock */
/** Async and Sync Event variables */ /** Async and Sync Event variables */
......
...@@ -929,14 +929,13 @@ static int lbs_thread(void *data) ...@@ -929,14 +929,13 @@ static int lbs_thread(void *data)
/* Wake-up command waiters which can't sleep in /* Wake-up command waiters which can't sleep in
* lbs_prepare_and_send_command * lbs_prepare_and_send_command
*/ */
if (!adapter->nr_cmd_pending) if (!list_empty(&adapter->cmdpendingq))
wake_up_all(&adapter->cmd_pending); wake_up_all(&adapter->cmd_pending);
lbs_tx_runqueue(priv); lbs_tx_runqueue(priv);
} }
del_timer(&adapter->command_timer); del_timer(&adapter->command_timer);
adapter->nr_cmd_pending = 0;
wake_up_all(&adapter->cmd_pending); wake_up_all(&adapter->cmd_pending);
lbs_deb_leave(LBS_DEB_THREAD); lbs_deb_leave(LBS_DEB_THREAD);
...@@ -1105,7 +1104,6 @@ static int lbs_init_adapter(struct lbs_private *priv) ...@@ -1105,7 +1104,6 @@ static int lbs_init_adapter(struct lbs_private *priv)
spin_lock_init(&adapter->driver_lock); spin_lock_init(&adapter->driver_lock);
init_waitqueue_head(&adapter->cmd_pending); init_waitqueue_head(&adapter->cmd_pending);
adapter->nr_cmd_pending = 0;
/* Allocate the command buffers */ /* Allocate the command buffers */
if (lbs_allocate_cmd_buffer(priv)) { if (lbs_allocate_cmd_buffer(priv)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册