Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2af3fab authored by Sara Sharon's avatar Sara Sharon Committed by Luca Coelho
Browse files

iwlwifi: mvm: map cab_queue to different txq_id



cab_queue can now get bigger than u8, since in TVQM we will support
512 queues..
Support it by maintaining internal mapping between the actual number
and mac80211 queue (IWL_MVM_DQA_GCAST_QUEUE).
For pre-a000 the internal queue will be the same as the mac80211
queue.

Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
parent d4a7e708
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -467,6 +467,11 @@ static int iwl_mvm_mac_ctxt_allocate_resources(struct iwl_mvm *mvm,
			queue = IWL_MVM_DQA_GCAST_QUEUE;
		}

		/*
		 * For TVQM this will be overwritten later with the FW assigned
		 * queue value (when queue is enabled).
		 */
		mvmvif->cab_queue = queue;
		vif->cab_queue = queue;
	} else {
		vif->cab_queue = IEEE80211_INVAL_HW_QUEUE;
+2 −0
Original line number Diff line number Diff line
@@ -380,6 +380,8 @@ struct iwl_mvm_vif {
	bool associated;
	u8 ap_assoc_sta_count;

	u16 cab_queue;

	bool uploaded;
	bool ap_ibss_active;
	bool pm_enabled;
+2 −2
Original line number Diff line number Diff line
@@ -2128,7 +2128,7 @@ int iwl_mvm_add_mcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
						    msta->sta_id,
						    IWL_MAX_TID_COUNT,
						    timeout);
		vif->cab_queue = queue;
		mvmvif->cab_queue = queue;
	} else {
		iwl_mvm_enable_txq(mvm, vif->cab_queue, vif->cab_queue, 0,
				   &cfg, timeout);
@@ -2151,7 +2151,7 @@ int iwl_mvm_rm_mcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
	if (!iwl_mvm_is_dqa_supported(mvm))
		return 0;

	iwl_mvm_disable_txq(mvm, vif->cab_queue, vif->cab_queue,
	iwl_mvm_disable_txq(mvm, mvmvif->cab_queue, vif->cab_queue,
			    IWL_MAX_TID_COUNT, 0);

	ret = iwl_mvm_rm_sta_common(mvm, mvmvif->mcast_sta.sta_id);
+2 −0
Original line number Diff line number Diff line
@@ -630,6 +630,8 @@ int iwl_mvm_tx_skb_non_sta(struct iwl_mvm *mvm, struct sk_buff *skb)
			if (queue < 0)
				return -1;

			if (queue == info.control.vif->cab_queue)
				queue = mvmvif->cab_queue;
		} else if (info.control.vif->type == NL80211_IFTYPE_STATION &&
			   is_multicast_ether_addr(hdr->addr1)) {
			u8 ap_sta_id = ACCESS_ONCE(mvmvif->ap_sta_id);