mac80211: don't overwrite QoS TID of injected frames
authorMathy Vanhoef <Mathy.Vanhoef@kuleuven.be>
Wed, 4 Nov 2020 06:18:21 +0000 (10:18 +0400)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 6 Nov 2020 10:02:42 +0000 (11:02 +0100)
commit527d675969a1dff17baa270d4447ac1c87058299
tree54bdfabe6d94f49f43bb72c618efb9c80e2d8156
parent66d06c84730c8b148d93909ffbddf074fd771a48
mac80211: don't overwrite QoS TID of injected frames

Currently ieee80211_set_qos_hdr sets the QoS TID of all frames based
on the value assigned to skb->priority. This means it will also
overwrite the QoS TID of injected frames. The commit 753ffad3d624
("mac80211: fix TID field in monitor mode transmit") prevented
injected frames from being modified because of this by setting
skb->priority to the TID of the injected frame, which assured the
QoS TID will not be changed to a different value. Unfortunately,
this workaround complicates the handling of injected frames because
we can't set skb->priority without affecting the TID value in the
QoS field of injected frames.

To avoid this, and to simplify the next patch, detect if a frame is
injected in ieee80211_set_qos_hdr and if so do not change its QoS
field.

Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@kuleuven.be>
Link: https://lore.kernel.org/r/20201104061823.197407-4-Mathy.Vanhoef@kuleuven.be
[fix typos in commit message]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/tx.c
net/mac80211/wme.c