libertas: kill adapter->nr_cmd_pending
authorDavid Woodhouse <dwmw2@infradead.org>
Sat, 8 Dec 2007 00:35:00 +0000 (00:35 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Jan 2008 23:06:15 +0000 (15:06 -0800)
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/libertas/cmd.c
drivers/net/wireless/libertas/cmdresp.c
drivers/net/wireless/libertas/debugfs.c
drivers/net/wireless/libertas/dev.h
drivers/net/wireless/libertas/main.c

index cf1ab8a345fe96cd60bdccf6f9cce47e8ea04aa9..092c295e3802ed7bf621edd10f30a70ace22ea62 100644 (file)
@@ -1009,10 +1009,9 @@ void lbs_queue_cmd(struct lbs_adapter *adapter,
 
        spin_lock_irqsave(&adapter->driver_lock, flags);
 
-       if (addtail) {
+       if (addtail)
                list_add_tail(&cmdnode->list, &adapter->cmdpendingq);
-               adapter->nr_cmd_pending++;
-       } else
+       else
                list_add(&cmdnode->list, &adapter->cmdpendingq);
 
        spin_unlock_irqrestore(&adapter->driver_lock, flags);
@@ -1078,7 +1077,6 @@ static int DownloadcommandToStation(struct lbs_private *priv,
                spin_lock_irqsave(&adapter->driver_lock, flags);
                adapter->cur_cmd_retcode = ret;
                __lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd);
-               adapter->nr_cmd_pending--;
                adapter->cur_cmd = NULL;
                spin_unlock_irqrestore(&adapter->driver_lock, flags);
                goto done;
index f6c1016b2bb6f8ec5be42716527c3df5f56d39cb..44865bf12ba41b79d6c7fa22008416ae1b359f15 100644 (file)
@@ -791,7 +791,6 @@ int lbs_process_rx_command(struct lbs_private *priv)
                lbs_deb_host("invalid response!\n");
                adapter->cur_cmd_retcode = -1;
                __lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd);
-               adapter->nr_cmd_pending--;
                adapter->cur_cmd = NULL;
                spin_unlock_irqrestore(&adapter->driver_lock, flags);
                ret = -1;
@@ -848,7 +847,6 @@ int lbs_process_rx_command(struct lbs_private *priv)
                }
 
                __lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd);
-               adapter->nr_cmd_pending--;
                adapter->cur_cmd = NULL;
                spin_unlock_irqrestore(&adapter->driver_lock, flags);
 
@@ -872,7 +870,6 @@ int lbs_process_rx_command(struct lbs_private *priv)
                }
 
                __lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd);
-               adapter->nr_cmd_pending--;
                adapter->cur_cmd = NULL;
                spin_unlock_irqrestore(&adapter->driver_lock, flags);
 
@@ -892,8 +889,6 @@ int lbs_process_rx_command(struct lbs_private *priv)
        if (adapter->cur_cmd) {
                /* Clean up and Put current command back to cmdfreeq */
                __lbs_cleanup_and_insert_cmd(priv, adapter->cur_cmd);
-               adapter->nr_cmd_pending--;
-               WARN_ON(adapter->nr_cmd_pending > 128);
                adapter->cur_cmd = NULL;
        }
        spin_unlock_irqrestore(&adapter->driver_lock, flags);
index b0a76c5bec66abbc9a1a098bc6b6b108bf1759db..9a041e5b209cd32e4db337f442f9db65592ac201 100644 (file)
@@ -322,7 +322,8 @@ static ssize_t lbs_setuserscan(struct file *file,
 
        lbs_scan_networks(priv, scan_cfg, 1);
        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)
                goto out_scan_cfg;
index 96a34c5bce808eb6ec3040ac43e9535ae417e59c..fb26f18e446ef43465a39ac68390584c981a3cdf 100644 (file)
@@ -231,7 +231,6 @@ struct lbs_adapter {
        struct list_head cmdpendingq;
 
        wait_queue_head_t cmd_pending;
-       u8 nr_cmd_pending;
        /* command related variables protected by adapter->driver_lock */
 
        /** Async and Sync Event variables */
index a5b573ce54546322370cad239ff4d827d1453034..500357ba48dba9a207fbbd8efaf16c9d8800cc44 100644 (file)
@@ -929,14 +929,13 @@ static int lbs_thread(void *data)
                /* Wake-up command waiters which can't sleep in
                 * lbs_prepare_and_send_command
                 */
-               if (!adapter->nr_cmd_pending)
+               if (!list_empty(&adapter->cmdpendingq))
                        wake_up_all(&adapter->cmd_pending);
 
                lbs_tx_runqueue(priv);
        }
 
        del_timer(&adapter->command_timer);
-       adapter->nr_cmd_pending = 0;
        wake_up_all(&adapter->cmd_pending);
 
        lbs_deb_leave(LBS_DEB_THREAD);
@@ -1105,7 +1104,6 @@ static int lbs_init_adapter(struct lbs_private *priv)
 
        spin_lock_init(&adapter->driver_lock);
        init_waitqueue_head(&adapter->cmd_pending);
-       adapter->nr_cmd_pending = 0;
 
        /* Allocate the command buffers */
        if (lbs_allocate_cmd_buffer(priv)) {