wifi: mac80211: don't update rx_stats.last_rate for NDP
authorJohannes Berg <johannes.berg@intel.com>
Thu, 8 Jun 2023 13:36:05 +0000 (16:36 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 14 Jun 2023 10:20:08 +0000 (12:20 +0200)
If we get an NDP (null data packet), there's reason to
believe the peer is just sending it to probe, and that
would happen at a low rate. Don't track this packet for
purposes of last RX rate reporting.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230608163202.8af46c4ac094.I13d9d5019addeaa4aff3c8a05f56c9f5a86b1ebd@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/rx.c

index ed99394..77c7dac 100644 (file)
@@ -6,7 +6,7 @@
  * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net>
  * Copyright 2013-2014  Intel Mobile Communications GmbH
  * Copyright(c) 2015 - 2017 Intel Deutschland GmbH
- * Copyright (C) 2018-2022 Intel Corporation
+ * Copyright (C) 2018-2023 Intel Corporation
  */
 
 #include <linux/jiffies.h>
@@ -1732,7 +1732,7 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx)
                if (ether_addr_equal(bssid, rx->sdata->u.ibss.bssid) &&
                    test_sta_flag(sta, WLAN_STA_AUTHORIZED)) {
                        link_sta->rx_stats.last_rx = jiffies;
-                       if (ieee80211_is_data(hdr->frame_control) &&
+                       if (ieee80211_is_data_present(hdr->frame_control) &&
                            !is_multicast_ether_addr(hdr->addr1))
                                link_sta->rx_stats.last_rate =
                                        sta_stats_encode_rate(status);
@@ -1746,7 +1746,7 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx)
                 * match the current local configuration when processed.
                 */
                link_sta->rx_stats.last_rx = jiffies;
-               if (ieee80211_is_data(hdr->frame_control))
+               if (ieee80211_is_data_present(hdr->frame_control))
                        link_sta->rx_stats.last_rate = sta_stats_encode_rate(status);
        }