iwlwifi: pass txq to wake/stop queue
authorJohannes Berg <johannes.berg@intel.com>
Thu, 11 Nov 2010 02:25:44 +0000 (18:25 -0800)
committerWey-Yi Guy <wey-yi.w.guy@intel.com>
Tue, 16 Nov 2010 15:45:49 +0000 (07:45 -0800)
Instead of passing the txq->swq_id, pass the
txq struct directly to make sure that in the
future nobody will pass an invalid number.
Only three places actually change from using
the txq_id or the skb's queue_mapping to now
using txq->swq_id as well.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
drivers/net/wireless/iwlwifi/iwl-3945.c
drivers/net/wireless/iwlwifi/iwl-4965.c
drivers/net/wireless/iwlwifi/iwl-agn-lib.c
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
drivers/net/wireless/iwlwifi/iwl-helpers.h
drivers/net/wireless/iwlwifi/iwl3945-base.c

index 4503245211acb03444416bb9bfb7370fa30903a2..56f4ca7e49d960ef828f850310cefa484f93e1f1 100644 (file)
@@ -297,7 +297,7 @@ static void iwl3945_tx_queue_reclaim(struct iwl_priv *priv,
        if (iwl_queue_space(q) > q->low_mark && (txq_id >= 0) &&
                        (txq_id != IWL39_CMD_QUEUE_NUM) &&
                        priv->mac80211_registered)
-               iwl_wake_queue(priv, txq_id);
+               iwl_wake_queue(priv, txq);
 }
 
 /**
index 19400792a3fe247df15731b6e3faee05ce5b8de9..2ec868d328b94ce9b9616ee0eb5540a2adaa9d8e 100644 (file)
@@ -2239,7 +2239,7 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
                        if (priv->mac80211_registered &&
                            (iwl_queue_space(&txq->q) > txq->q.low_mark) &&
                            (agg->state != IWL_EMPTYING_HW_QUEUE_DELBA))
-                               iwl_wake_queue(priv, txq->swq_id);
+                               iwl_wake_queue(priv, txq);
                }
        } else {
                info->status.rates[0].count = tx_resp->failure_frame + 1;
@@ -2263,7 +2263,7 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
 
                if (priv->mac80211_registered &&
                    (iwl_queue_space(&txq->q) > txq->q.low_mark))
-                       iwl_wake_queue(priv, txq_id);
+                       iwl_wake_queue(priv, txq);
        }
        if (qc && likely(sta_id != IWL_INVALID_STATION))
                iwlagn_txq_check_empty(priv, sta_id, tid, txq_id);
index 2ba83b5bbb8e5724a2ab99f80bb8714223b30d3f..eef90b5c972827554fa595e2f2bb76ef2c28e99d 100644 (file)
@@ -446,7 +446,7 @@ static void iwlagn_rx_reply_tx(struct iwl_priv *priv,
                        if (priv->mac80211_registered &&
                            (iwl_queue_space(&txq->q) > txq->q.low_mark) &&
                            (agg->state != IWL_EMPTYING_HW_QUEUE_DELBA))
-                               iwl_wake_queue(priv, txq->swq_id);
+                               iwl_wake_queue(priv, txq);
                }
        } else {
                BUG_ON(txq_id != txq->swq_id);
@@ -456,7 +456,7 @@ static void iwlagn_rx_reply_tx(struct iwl_priv *priv,
 
                if (priv->mac80211_registered &&
                    (iwl_queue_space(&txq->q) > txq->q.low_mark))
-                       iwl_wake_queue(priv, txq_id);
+                       iwl_wake_queue(priv, txq);
        }
 
        iwlagn_txq_check_empty(priv, sta_id, tid, txq_id);
index 0fc86c9d8fd4445ffa049f824c37c34430e2f8f5..179a9c85045cbc89a5635e7019a9d2106bc960de 100644 (file)
@@ -783,7 +783,7 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
                        iwl_txq_update_write_ptr(priv, txq);
                        spin_unlock_irqrestore(&priv->lock, flags);
                } else {
-                       iwl_stop_queue(priv, txq->swq_id);
+                       iwl_stop_queue(priv, txq);
                }
        }
 
@@ -1408,7 +1408,7 @@ void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv,
                if ((iwl_queue_space(&txq->q) > txq->q.low_mark) &&
                    priv->mac80211_registered &&
                    (agg->state != IWL_EMPTYING_HW_QUEUE_DELBA))
-                       iwl_wake_queue(priv, txq->swq_id);
+                       iwl_wake_queue(priv, txq);
 
                iwlagn_txq_check_empty(priv, sta_id, tid, scd_flow);
        }
index 1aaef70deaecf58d85c7fac8d218578dee97c025..23fa8e88356b09b8d5bf8bbc8e7307db0ff20c18 100644 (file)
@@ -116,8 +116,10 @@ static inline u8 iwl_virtual_agg_queue_num(u8 ac, u8 hwq)
        return 0x80 | (hwq << 2) | ac;
 }
 
-static inline void iwl_wake_queue(struct iwl_priv *priv, u8 queue)
+static inline void iwl_wake_queue(struct iwl_priv *priv,
+                                 struct iwl_tx_queue *txq)
 {
+       u8 queue = txq->swq_id;
        u8 ac = queue;
        u8 hwq = queue;
 
@@ -131,8 +133,10 @@ static inline void iwl_wake_queue(struct iwl_priv *priv, u8 queue)
                        ieee80211_wake_queue(priv->hw, ac);
 }
 
-static inline void iwl_stop_queue(struct iwl_priv *priv, u8 queue)
+static inline void iwl_stop_queue(struct iwl_priv *priv,
+                                 struct iwl_tx_queue *txq)
 {
+       u8 queue = txq->swq_id;
        u8 ac = queue;
        u8 hwq = queue;
 
index a55b4623e1c8066e86cc100663a551b89843b4f6..b8c490624d26ed2bafe6e4656081555a46772a71 100644 (file)
@@ -662,7 +662,7 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
                        spin_unlock_irqrestore(&priv->lock, flags);
                }
 
-               iwl_stop_queue(priv, skb_get_queue_mapping(skb));
+               iwl_stop_queue(priv, txq);
        }
 
        return 0;