iwlwifi: mvm: set sta_id in SCD_QUEUE_CONFIG cmd
authorLiad Kaufman <liad.kaufman@intel.com>
Sun, 28 Feb 2016 14:15:07 +0000 (16:15 +0200)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Wed, 30 Mar 2016 13:24:47 +0000 (16:24 +0300)
Set the correct sta_id in the SCD_QUEUE_CONFIG command sent
to the FW when enabling/disabling queues. This is needed in
DQA-mode to allow the FW to associate between queue and STA.

Signed-off-by: Liad Kaufman <liad.kaufman@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
drivers/net/wireless/intel/iwlwifi/mvm/utils.c

index a9de2ad642bcd8283307a24892b8191e24450b44..cd5f16e9cab42ee3e49edef8b17cea3914a68c10 100644 (file)
@@ -665,6 +665,7 @@ struct iwl_mvm {
                /* Map to HW queue */
                u32 hw_queue_to_mac80211;
                u8 hw_queue_refcount;
+               u8 ra_sta_id; /* The RA this queue is mapped to, if exists */
                /*
                 * This is to mark that queue is reserved for a STA but not yet
                 * allocated. This is needed to make sure we have at least one
index 76866b9e56867af98b374d1604b0fceb1ba9dd28..486c98541afc69f4547ed4430b322e84f8765cf5 100644 (file)
@@ -608,6 +608,8 @@ void iwl_mvm_enable_txq(struct iwl_mvm *mvm, int queue, int mac80211_queue,
        mvm->queue_info[queue].hw_queue_refcount++;
        if (mvm->queue_info[queue].hw_queue_refcount > 1)
                enable_queue = false;
+       else
+               mvm->queue_info[queue].ra_sta_id = cfg->sta_id;
        mvm->queue_info[queue].tid_bitmap |= BIT(cfg->tid);
 
        IWL_DEBUG_TX_QUEUES(mvm,
@@ -693,6 +695,8 @@ void iwl_mvm_disable_txq(struct iwl_mvm *mvm, int queue, int mac80211_queue,
                return;
        }
 
+       cmd.sta_id = mvm->queue_info[queue].ra_sta_id;
+
        /* Make sure queue info is correct even though we overwrite it */
        WARN(mvm->queue_info[queue].hw_queue_refcount ||
             mvm->queue_info[queue].tid_bitmap ||