]> git.proxmox.com Git - mirror_ubuntu-hirsute-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)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 5 Nov 2021 09:18:52 +0000 (10:18 +0100)
BugLink: https://bugs.launchpad.net/bugs/1947781
[ Upstream commit 8678fd31f2d3eb14f2b8b39c9bc266f16fa24b22 ]

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
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Kelsey Skunberg <kelsey.skunberg@canonical.com>
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)) {