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

Commit 42c3aa6f authored by Michal Kazior's avatar Michal Kazior Committed by Kalle Valo
Browse files

ath10k: split tid calculation from tx function



Tidy up ath10k_tx().

Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent c322892f
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -1407,6 +1407,20 @@ static void ath10k_reg_notifier(struct wiphy *wiphy,
/* TX handlers */
/***************/

static u8 ath10k_tx_h_get_tid(struct ieee80211_hdr *hdr)
{
	if (ieee80211_is_mgmt(hdr->frame_control))
		return HTT_DATA_TX_EXT_TID_MGMT;

	if (!ieee80211_is_data_qos(hdr->frame_control))
		return HTT_DATA_TX_EXT_TID_NON_QOS_MCAST_BCAST;

	if (!is_unicast_ether_addr(ieee80211_get_DA(hdr)))
		return HTT_DATA_TX_EXT_TID_NON_QOS_MCAST_BCAST;

	return ieee80211_get_qos_ctl(hdr)[0] & IEEE80211_QOS_CTL_TID_MASK;
}

/*
 * Frames sent to the FW have to be in "Native Wifi" format.
 * Strip the QoS field from the 802.11 header.
@@ -1788,14 +1802,7 @@ static void ath10k_tx(struct ieee80211_hw *hw,

	/* we must calculate tid before we apply qos workaround
	 * as we'd lose the qos control field */
	tid = HTT_DATA_TX_EXT_TID_NON_QOS_MCAST_BCAST;
	if (ieee80211_is_mgmt(hdr->frame_control)) {
		tid = HTT_DATA_TX_EXT_TID_MGMT;
	} else if (ieee80211_is_data_qos(hdr->frame_control) &&
		   is_unicast_ether_addr(ieee80211_get_DA(hdr))) {
		u8 *qc = ieee80211_get_qos_ctl(hdr);
		tid = qc[0] & IEEE80211_QOS_CTL_TID_MASK;
	}
	tid = ath10k_tx_h_get_tid(hdr);

	/* it makes no sense to process injected frames like that */
	if (info->control.vif &&