staging: rtl8723au: Save timestamp for network in collect_bss_info() and report it...
authorJes Sorensen <Jes.Sorensen@redhat.com>
Thu, 19 Jun 2014 09:37:18 +0000 (11:37 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 19 Jun 2014 20:08:50 +0000 (13:08 -0700)
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8723au/core/rtw_mlme_ext.c
drivers/staging/rtl8723au/include/wlan_bssdef.h
drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c

index 84ca06b812228d3e2a23d92b04643fcbad05b1c5..823489b01f19a86c777c038eb23a85e6ea894a29 100644 (file)
@@ -4281,6 +4281,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
                capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info);
                bssid->BeaconPeriod =
                        get_unaligned_le16(&mgmt->u.beacon.beacon_int);
+               bssid->tsf = get_unaligned_le64(&mgmt->u.beacon.timestamp);
        } else  if (ieee80211_is_probe_req(mgmt->frame_control)) {
                ie_offset = offsetof(struct ieee80211_mgmt,
                                     u.probe_req.variable);
@@ -4288,6 +4289,7 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
                capab_info = 0;
                bssid->BeaconPeriod =
                        padapter->registrypriv.dev_network.BeaconPeriod;
+               bssid->tsf = 0;
        } else if (ieee80211_is_probe_resp(mgmt->frame_control)) {
                ie_offset = offsetof(struct ieee80211_mgmt,
                                     u.probe_resp.variable);
@@ -4295,12 +4297,14 @@ static struct wlan_bssid_ex *collect_bss_info(struct rtw_adapter *padapter,
                capab_info = get_unaligned_le16(&mgmt->u.probe_resp.capab_info);
                bssid->BeaconPeriod =
                        get_unaligned_le16(&mgmt->u.probe_resp.beacon_int);
+               bssid->tsf = get_unaligned_le64(&mgmt->u.probe_resp.timestamp);
        } else {
                bssid->reserved = 0;
                ie_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
                capab_info = get_unaligned_le16(&mgmt->u.beacon.capab_info);
                bssid->BeaconPeriod =
                        padapter->registrypriv.dev_network.BeaconPeriod;
+               bssid->tsf = 0;
        }
        ie_offset -= offsetof(struct ieee80211_mgmt, u);
 
index b7176874c396a3dae313b707aaf1b54fe27a86a2..60455e6e0b234ef177d5dbb2dd17157e51d72638 100644 (file)
@@ -93,6 +93,7 @@ struct wlan_bssid_ex {
        u32  Privacy;
        long  Rssi;/* in dBM, raw data , get from PHY) */
        u16 BeaconPeriod;       /*  units are Kusec */
+       u64 tsf;
        u32 ATIMWindow;         /*  units are Kusec */
        u32 DSConfig;           /*  Frequency, units are kHz */
        enum nl80211_iftype ifmode;
index 0a0c58d984579966c1bbdcf61e1bf5a60455b31b..2621a0ea7c89068cb41b2b83ca5dfd8cb46c79ae 100644 (file)
@@ -288,7 +288,8 @@ static int rtw_cfg80211_inform_bss(struct rtw_adapter *padapter,
        }
 
        bss = cfg80211_inform_bss(wiphy, notify_channel,
-                                 pnetwork->network.MacAddress, 0,
+                                 pnetwork->network.MacAddress,
+                                 pnetwork->network.tsf,
                                  notify_capability, notify_interval,
                                  notify_ie, notify_ielen,
                                  notify_signal, GFP_ATOMIC);