aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSrinivas Dasari <dasaris@qti.qualcomm.com>2015-08-12 15:54:54 +0530
committerDmitry Shmidt <dimitrysh@google.com>2015-08-24 18:24:29 +0000
commitf8467ce3721b7154974a1f8a6e0dff54d4493f4d (patch)
treeb5e92cfb988327816c436dd2b556a766195ff98f /src
parentf291c682d490cef0b520b68e694a2bf97126b441 (diff)
downloadandroid_external_wpa_supplicant_8-f8467ce3721b7154974a1f8a6e0dff54d4493f4d.tar.gz
android_external_wpa_supplicant_8-f8467ce3721b7154974a1f8a6e0dff54d4493f4d.tar.bz2
android_external_wpa_supplicant_8-f8467ce3721b7154974a1f8a6e0dff54d4493f4d.zip
nl80211: Use beacon TSF if it is newer than Probe Response TSF
cfg80211 sends TSF information with the attribute NL80211_BSS_BEACON_TSF if the scan results include information from Beacon frame. Probe Response frame information is included in NL80211_BSS_TSF. If the device receives only Beacon frames, NL80211_BSS_TSF might not carry updated TSF, which results an older TSF being used in wpa_supplicant. Fetch both possible TSF values (if available) and choose the latest TSF for the BSS entry. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> Bug: 22412559 Change-Id: I21a28265d5a9a2efec7a0deb51b353df368c4706
Diffstat (limited to 'src')
-rw-r--r--src/drivers/driver_nl80211_scan.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/drivers/driver_nl80211_scan.c b/src/drivers/driver_nl80211_scan.c
index 9cd3162f..f3d45e58 100644
--- a/src/drivers/driver_nl80211_scan.c
+++ b/src/drivers/driver_nl80211_scan.c
@@ -583,6 +583,11 @@ int bss_info_handler(struct nl_msg *msg, void *arg)
r->flags |= WPA_SCAN_LEVEL_INVALID | WPA_SCAN_QUAL_INVALID;
if (bss[NL80211_BSS_TSF])
r->tsf = nla_get_u64(bss[NL80211_BSS_TSF]);
+ if (bss[NL80211_BSS_BEACON_TSF]) {
+ u64 tsf = nla_get_u64(bss[NL80211_BSS_BEACON_TSF]);
+ if (tsf > r->tsf)
+ r->tsf = tsf;
+ }
if (bss[NL80211_BSS_SEEN_MS_AGO])
r->age = nla_get_u32(bss[NL80211_BSS_SEEN_MS_AGO]);
r->ie_len = ie_len;