]> git.baikalelectronics.ru Git - kernel.git/commitdiff
wcn36xx: Fix missing frame timestamp for beacon/probe-resp
authorLoic Poulain <loic.poulain@linaro.org>
Thu, 26 Aug 2021 15:46:08 +0000 (17:46 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Sun, 29 Aug 2021 07:11:36 +0000 (10:11 +0300)
When receiving a beacon or probe response, we should update the
boottime_ns field which is the timestamp the frame was received at.
(cf mac80211.h)

This fixes a scanning issue with Android since it relies on this
timestamp to determine when the AP has been seen for the last time
(via the nl80211 BSS_LAST_SEEN_BOOTTIME parameter).

Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/1629992768-23785-1-git-send-email-loic.poulain@linaro.org
drivers/net/wireless/ath/wcn36xx/txrx.c

index 1b831157ede17af62a45c066f6ef0ca5e531ddb8..cab196bb38cd4c92f6cf2c40d9df180e13789ca3 100644 (file)
@@ -287,6 +287,10 @@ int wcn36xx_rx_skb(struct wcn36xx *wcn, struct sk_buff *skb)
                status.rate_idx = 0;
        }
 
+       if (ieee80211_is_beacon(hdr->frame_control) ||
+           ieee80211_is_probe_resp(hdr->frame_control))
+               status.boottime_ns = ktime_get_boottime_ns();
+
        memcpy(IEEE80211_SKB_RXCB(skb), &status, sizeof(status));
 
        if (ieee80211_is_beacon(hdr->frame_control)) {