iwlwifi: clear all the stop_queue flag after load firmware
authorWey-Yi Guy <wey-yi.w.guy@intel.com>
Tue, 9 Feb 2010 16:14:11 +0000 (08:14 -0800)
committerReinette Chatre <reinette.chatre@intel.com>
Thu, 11 Feb 2010 18:27:30 +0000 (10:27 -0800)
All the queues are awake and ready to use after loading firmware,
for firmware reload case, if any queues was stopped before
reload, mac80211 will wake those queues after restart hardware, so make
sure all the flag used to keep track of the queue status are
reset correctly.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
drivers/net/wireless/iwlwifi/iwl-4965.c
drivers/net/wireless/iwlwifi/iwl-5000.c

index e4794885d07907e0c107b3878da31b1ff2e58087..17e91ad3496c2b7186b909efad2c4189be35d1db 100644 (file)
@@ -581,6 +581,11 @@ static int iwl4965_alive_notify(struct iwl_priv *priv)
 
        iwl4965_set_wr_ptrs(priv, IWL_CMD_QUEUE_NUM, 0);
 
+       /* make sure all queue are not stopped */
+       memset(&priv->queue_stopped[0], 0, sizeof(priv->queue_stopped));
+       for (i = 0; i < 4; i++)
+               atomic_set(&priv->queue_stop_count[i], 0);
+
        /* reset to 0 to enable all the queue first */
        priv->txq_ctx_active_msk = 0;
        /* Map each Tx/cmd queue to its corresponding fifo */
index a7fa1ad7e6e5f6a65ef9a15a83cd734265a31c0f..94fc83671f20d5f42c43a91d1cf3617f3082407c 100644 (file)
@@ -648,6 +648,11 @@ int iwl5000_alive_notify(struct iwl_priv *priv)
 
        iwl5000_set_wr_ptrs(priv, IWL_CMD_QUEUE_NUM, 0);
 
+       /* make sure all queue are not stopped */
+       memset(&priv->queue_stopped[0], 0, sizeof(priv->queue_stopped));
+       for (i = 0; i < 4; i++)
+               atomic_set(&priv->queue_stop_count[i], 0);
+
        /* reset to 0 to enable all the queue first */
        priv->txq_ctx_active_msk = 0;
        /* map qos queues to fifos one-to-one */