Oliver Neukum b6a1de
From e6dfbc3ba90cc2b619229be56b485f085a0a8e1c Mon Sep 17 00:00:00 2001
Oliver Neukum b6a1de
From: Loic Poulain <loic.poulain@linaro.org>
Oliver Neukum b6a1de
Date: Tue, 28 Sep 2021 14:00:47 +0300
Oliver Neukum b6a1de
Subject: [PATCH] ath10k: Fix missing frame timestamp for beacon/probe-resp
Oliver Neukum b6a1de
Git-commit: e6dfbc3ba90cc2b619229be56b485f085a0a8e1c
Oliver Neukum b6a1de
References: git-fixes
Oliver Neukum b6a1de
Patch-mainline: v5.16-rc1
Oliver Neukum b6a1de
Oliver Neukum b6a1de
When receiving a beacon or probe response, we should update the
Oliver Neukum b6a1de
boottime_ns field which is the timestamp the frame was received at.
Oliver Neukum b6a1de
(cf mac80211.h)
Oliver Neukum b6a1de
Oliver Neukum b6a1de
This fixes a scanning issue with Android since it relies on this
Oliver Neukum b6a1de
timestamp to determine when the AP has been seen for the last time
Oliver Neukum b6a1de
(via the nl80211 BSS_LAST_SEEN_BOOTTIME parameter).
Oliver Neukum b6a1de
Oliver Neukum b6a1de
Fixes: 5e3dd157d7e7 ("ath10k: mac80211 driver for Qualcomm Atheros 802.11ac CQA98xx devices")
Oliver Neukum b6a1de
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
Oliver Neukum b6a1de
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Oliver Neukum b6a1de
Link: https://lore.kernel.org/r/1629811733-7927-1-git-send-email-loic.poulain@linaro.org
Oliver Neukum b6a1de
Signed-off-by: Oliver Neukum <oneukum@suse.com>
Oliver Neukum b6a1de
---
Oliver Neukum b6a1de
 drivers/net/wireless/ath/ath10k/wmi.c |    4 ++++
Oliver Neukum b6a1de
 1 file changed, 4 insertions(+)
Oliver Neukum b6a1de
Oliver Neukum b6a1de
--- a/drivers/net/wireless/ath/ath10k/wmi.c
Oliver Neukum b6a1de
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
Oliver Neukum b6a1de
@@ -2477,6 +2477,10 @@ int ath10k_wmi_event_mgmt_rx(struct ath1
Oliver Neukum b6a1de
 	if (ieee80211_is_beacon(hdr->frame_control))
Oliver Neukum b6a1de
 		ath10k_mac_handle_beacon(ar, skb);
Oliver Neukum b6a1de
 
Oliver Neukum b6a1de
+	if (ieee80211_is_beacon(hdr->frame_control) ||
Oliver Neukum b6a1de
+	    ieee80211_is_probe_resp(hdr->frame_control))
Oliver Neukum b6a1de
+		status->boottime_ns = ktime_get_boot_ns();
Oliver Neukum b6a1de
+
Oliver Neukum b6a1de
 	ath10k_dbg(ar, ATH10K_DBG_MGMT,
Oliver Neukum b6a1de
 		   "event mgmt rx skb %pK len %d ftype %02x stype %02x\n",
Oliver Neukum b6a1de
 		   skb, skb->len,