On 3/24/21 11:14 AM, greearb@xxxxxxxxxxxxxxx wrote:
From: Ben Greear <greearb@xxxxxxxxxxxxxxx>
I noticed 'iw dev wlan6 station dump' showed almost no rx-packets
one one of my radios. The rx-amsdu path did not appear to gather
any stats, and after code inspection, neither did the rx-data
handler.
Add common method to deal with these stats. Verified in AX
and /a mode, stats look at least generally correct now.
Signed-off-by: Ben Greear <greearb@xxxxxxxxxxxxxxx>
---
@@ -2706,6 +2727,8 @@ ieee80211_rx_h_amsdu(struct ieee80211_rx_data *rx)
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
__le16 fc = hdr->frame_control;
+ ieee80211_rx_result rv;
+ int orig_len = skb->len;
if (!(status->rx_flags & IEEE80211_RX_AMSDU))
return RX_CONTINUE;
@@ -2734,7 +2757,12 @@ ieee80211_rx_h_amsdu(struct ieee80211_rx_data *rx)
if (is_multicast_ether_addr(hdr->addr1))
return RX_DROP_UNUSABLE;
- return __ieee80211_rx_h_amsdu(rx, 0);
+ rv = __ieee80211_rx_h_amsdu(rx, 0);
+ if ((rv == RX_QUEUED) && (rx->sta)) {
+ struct ieee80211_sta_rx_stats *stats = &rx->sta->rx_stats;
+ ieee80211_update_data_rx_stats(rx, stats, status, orig_len);
+ }
+ return rv;
}
I noticed this is buggy in several ways (potential use-after-free, bogus
status field).
I noticed too that upcoming changes changed some API that made later patches
in this series not apply cleanly..needed a bit of re-work.
Maybe best if I wait and rebase it against 5.13 when it is ready, unless
someone is actually interested enough in this to want to apply it earlier?
Thanks,
Ben
--
Ben Greear <greearb@xxxxxxxxxxxxxxx>
Candela Technologies Inc http://www.candelatech.com