mac80211: assure that certain drivers adhere to DONT_REORDER flag
Some drivers use skb->priority to determine on which queue to send a frame. An example is mt76x2u (this was tested on an AWUS036ACM). This means these drivers currently do not adhere to the DONT_REORDER flag. To fix this, we do not set skb->priority based on the QoS TID of injected frames when the DONT_REORDER flag is set. Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@kuleuven.be> Link: https://lore.kernel.org/r/20201104061823.197407-5-Mathy.Vanhoef@kuleuven.be Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
527d675969
commit
70c5e40ca9
|
@ -2271,8 +2271,13 @@ netdev_tx_t ieee80211_monitor_start_xmit(struct sk_buff *skb,
|
||||||
payload[7]);
|
payload[7]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize skb->priority for QoS frames */
|
/* Initialize skb->priority for QoS frames. If the DONT_REORDER flag
|
||||||
if (ieee80211_is_data_qos(hdr->frame_control)) {
|
* is set, stick to the default value for skb->priority to assure
|
||||||
|
* frames injected with this flag are not reordered relative to each
|
||||||
|
* other.
|
||||||
|
*/
|
||||||
|
if (ieee80211_is_data_qos(hdr->frame_control) &&
|
||||||
|
!(info->control.flags & IEEE80211_TX_CTRL_DONT_REORDER)) {
|
||||||
u8 *p = ieee80211_get_qos_ctl(hdr);
|
u8 *p = ieee80211_get_qos_ctl(hdr);
|
||||||
skb->priority = *p & IEEE80211_QOS_CTL_TAG1D_MASK;
|
skb->priority = *p & IEEE80211_QOS_CTL_TAG1D_MASK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue