summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/net/mac80211.h6
-rw-r--r--net/mac80211/ieee80211_sta.c9
2 files changed, 14 insertions, 1 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 5174eaa89500..01b32152b89e 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -197,6 +197,9 @@ enum ieee80211_bss_change {
* @aid: association ID number, valid only when @assoc is true
* @use_cts_prot: use CTS protection
* @use_short_preamble: use 802.11b short preamble
+ * @timestamp: beacon timestamp
+ * @beacon_int: beacon interval
+ * @assoc_capability: capabbilities taken from assoc resp
* @assoc_ht: association in HT mode
* @ht_conf: ht capabilities
* @ht_bss_conf: ht extended capabilities
@@ -208,6 +211,9 @@ struct ieee80211_bss_conf {
/* erp related data */
bool use_cts_prot;
bool use_short_preamble;
+ u16 beacon_int;
+ u16 assoc_capability;
+ u64 timestamp;
/* ht related data */
bool assoc_ht;
struct ieee80211_ht_info *ht_conf;
diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c
index 0e936233dac5..cb119d3b6353 100644
--- a/net/mac80211/ieee80211_sta.c
+++ b/net/mac80211/ieee80211_sta.c
@@ -509,9 +509,14 @@ static void ieee80211_set_associated(struct net_device *dev,
conf->channel->center_freq,
ifsta->ssid, ifsta->ssid_len);
if (bss) {
+ /* set timing information */
+ sdata->bss_conf.beacon_int = bss->beacon_int;
+ sdata->bss_conf.timestamp = bss->timestamp;
+
if (bss->has_erp_value)
changed |= ieee80211_handle_erp_ie(
sdata, bss->erp_value);
+
ieee80211_rx_bss_put(dev, bss);
}
@@ -2033,8 +2038,10 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
} else
rcu_read_unlock();
- /* set AID, ieee80211_set_associated() will tell the driver */
+ /* set AID and assoc capability,
+ * ieee80211_set_associated() will tell the driver */
bss_conf->aid = aid;
+ bss_conf->assoc_capability = capab_info;
ieee80211_set_associated(dev, ifsta, 1);
ieee80211_associated(dev, ifsta);