]> git.baikalelectronics.ru Git - kernel.git/commit
mac80211: properly process TXQ management frames
authorJohannes Berg <johannes.berg@intel.com>
Fri, 16 Apr 2021 11:47:04 +0000 (13:47 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 19 Apr 2021 10:00:24 +0000 (12:00 +0200)
commitcc3a12abfc89975532d290524a65387b9a6a15e8
treee2183d096534b417c2cbdd7d3eafdc9bd966d577
parenteb1100c213d4fbb7c563b2db2acd27fcc6ec60f0
mac80211: properly process TXQ management frames

My previous commit to not apply flow control to management frames
that are going over TXQs (which is currently only the case for
iwlwifi, I think) broke things, with iwlwifi firmware crashing on
certain frames. As it turns out, that was due to the frame being
too short: space for the MIC wasn't added at the end of encrypted
management frames.

Clearly, this is due to using the 'frags' queue - this is meant
only for frames that have already been processed for TX, and the
code in ieee80211_tx_dequeue() just returns them. This caused all
management frames to now not get any TX processing.

To fix this, use IEEE80211_TX_INTCFL_NEED_TXPROCESSING (which is
currently used only in other circumstances) to indicate that the
frames need processing, and clear it immediately after so that,
at least in theory, MMPDUs can be fragmented.

Fixes: 6784c86dc759 ("mac80211: don't apply flow control on management frames")
Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
Link: https://lore.kernel.org/r/20210416134702.ef8486a64293.If0a9025b39c71bb91b11dd6ac45547aba682df34@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/tx.c