iwlwifi: mvm: clarify stop_count, remove transport_stopped
authorJohannes Berg <johannes.berg@intel.com>
Fri, 1 Aug 2014 16:14:45 +0000 (18:14 +0200)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Wed, 3 Sep 2014 19:49:10 +0000 (22:49 +0300)
The queue handling is a bit unclear - we have an array for
stop_count[IWL_MAX_HW_QUEUES] but indices really are the
mac80211 queue numbers. Change the array to be only of the
right size for mac80211 queues (IEEE80211_MAX_QUEUES) and
rename it to be clearer.

While at it, also remove the unused transport queue stop
bitmap in mvm.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/iwlwifi/mvm/fw.c
drivers/net/wireless/iwlwifi/mvm/mvm.h
drivers/net/wireless/iwlwifi/mvm/ops.c

index c958a7d0458d4e3be6597b06fa53dbba8abdd63c..21d606028ca6a534528186e7c77103b7b7073b5d 100644 (file)
@@ -244,10 +244,10 @@ static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm,
                        mvm->queue_to_mac80211[i] = i;
                else
                        mvm->queue_to_mac80211[i] = IWL_INVALID_MAC80211_QUEUE;
-               atomic_set(&mvm->queue_stop_count[i], 0);
        }
 
-       mvm->transport_queue_stop = 0;
+       for (i = 0; i < IEEE80211_MAX_QUEUES; i++)
+               atomic_set(&mvm->mac80211_queue_stop_count[i], 0);
 
        mvm->ucode_loaded = true;
 
index b529cf64a5b60c60e5904dc5eec5dfa412a7cf4e..e292de96e09a00119b6155fa6fa8068e66d13098 100644 (file)
@@ -562,9 +562,8 @@ struct iwl_mvm {
 
        struct mvm_statistics_rx rx_stats;
 
-       unsigned long transport_queue_stop;
        u8 queue_to_mac80211[IWL_MAX_HW_QUEUES];
-       atomic_t queue_stop_count[IWL_MAX_HW_QUEUES];
+       atomic_t mac80211_queue_stop_count[IEEE80211_MAX_QUEUES];
 
        const char *nvm_file_name;
        struct iwl_nvm_data *nvm_data;
index d7ec07d48d98276fd9bf2e77254839d1b6415f51..87f278cc9b2c74655ba9d71c14dc9894f9396662 100644 (file)
@@ -703,14 +703,13 @@ static void iwl_mvm_stop_sw_queue(struct iwl_op_mode *op_mode, int queue)
        if (WARN_ON_ONCE(mq == IWL_INVALID_MAC80211_QUEUE))
                return;
 
-       if (atomic_inc_return(&mvm->queue_stop_count[mq]) > 1) {
+       if (atomic_inc_return(&mvm->mac80211_queue_stop_count[mq]) > 1) {
                IWL_DEBUG_TX_QUEUES(mvm,
                                    "queue %d (mac80211 %d) already stopped\n",
                                    queue, mq);
                return;
        }
 
-       set_bit(mq, &mvm->transport_queue_stop);
        ieee80211_stop_queue(mvm->hw, mq);
 }
 
@@ -722,15 +721,13 @@ static void iwl_mvm_wake_sw_queue(struct iwl_op_mode *op_mode, int queue)
        if (WARN_ON_ONCE(mq == IWL_INVALID_MAC80211_QUEUE))
                return;
 
-       if (atomic_dec_return(&mvm->queue_stop_count[mq]) > 0) {
+       if (atomic_dec_return(&mvm->mac80211_queue_stop_count[mq]) > 0) {
                IWL_DEBUG_TX_QUEUES(mvm,
-                                   "queue %d (mac80211 %d) already awake\n",
+                                   "queue %d (mac80211 %d) still stopped\n",
                                    queue, mq);
                return;
        }
 
-       clear_bit(mq, &mvm->transport_queue_stop);
-
        ieee80211_wake_queue(mvm->hw, mq);
 }