]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: mac80211: skip rate verification for not captured PSDUs
authorBenjamin Berg <benjamin.berg@intel.com>
Mon, 10 Nov 2025 12:26:18 +0000 (14:26 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Dec 2025 11:45:17 +0000 (12:45 +0100)
[ Upstream commit 7fe0d21f5633af8c3fab9f0ef0706c6156623484 ]

If for example the sniffer did not follow any AIDs in an MU frame, then
some of the information may not be filled in or is even expected to be
invalid. As an example, in that case it is expected that Nss is zero.

Fixes: 2ff5e52e7836 ("radiotap: add 0-length PSDU "not captured" type")
Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20251110142554.83a2858ee15b.I9f78ce7984872f474722f9278691ae16378f0a3e@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/mac80211/rx.c

index 4c805530edfb666db81031e3985831bb5a872595..e8e72271fbb8fa12c1baa99c57d5088ef8706d94 100644 (file)
@@ -4669,10 +4669,14 @@ void ieee80211_rx_napi(struct ieee80211_hw *hw, struct ieee80211_sta *pubsta,
        if (WARN_ON(!local->started))
                goto drop;
 
-       if (likely(!(status->flag & RX_FLAG_FAILED_PLCP_CRC))) {
+       if (likely(!(status->flag & RX_FLAG_FAILED_PLCP_CRC) &&
+                  !(status->flag & RX_FLAG_NO_PSDU &&
+                    status->zero_length_psdu_type ==
+                    IEEE80211_RADIOTAP_ZERO_LEN_PSDU_NOT_CAPTURED))) {
                /*
-                * Validate the rate, unless a PLCP error means that
-                * we probably can't have a valid rate here anyway.
+                * Validate the rate, unless there was a PLCP error which may
+                * have an invalid rate or the PSDU was not capture and may be
+                * missing rate information.
                 */
 
                switch (status->encoding) {