mac80211: Update IBSS beacon timestamp properly
authorSujith <Sujith.Manoharan@atheros.com>
Tue, 3 Mar 2009 04:45:10 +0000 (10:15 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 5 Mar 2009 19:39:40 +0000 (14:39 -0500)
In IBSS mode, the beacon timestamp has to be filled with the
BSS's timestamp when joining, and set to zero when creating
a new BSS.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/ibss.c

index a96ce9dfc6b5ac2e3a70e351a7c4ac8785a3b99d..f4becc12904eb3c830649292660a89067b27c4b5 100644 (file)
@@ -64,7 +64,7 @@ static int __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
                                     const int freq,
                                     const size_t supp_rates_len,
                                     const u8 *supp_rates,
-                                    const u16 capability)
+                                    const u16 capability, u64 tsf)
 {
        struct ieee80211_if_ibss *ifibss = &sdata->u.ibss;
        struct ieee80211_local *local = sdata->local;
@@ -127,6 +127,7 @@ static int __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
        memcpy(mgmt->bssid, ifibss->bssid, ETH_ALEN);
        mgmt->u.beacon.beacon_int =
                cpu_to_le16(local->hw.conf.beacon_int);
+       mgmt->u.beacon.timestamp = cpu_to_le64(tsf);
        mgmt->u.beacon.capab_info = cpu_to_le16(capability);
 
        pos = skb_put(skb, 2 + ifibss->ssid_len);
@@ -199,7 +200,8 @@ static int ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
                                         bss->cbss.beacon_interval,
                                         bss->cbss.channel->center_freq,
                                         bss->supp_rates_len, bss->supp_rates,
-                                        bss->cbss.capability);
+                                        bss->cbss.capability,
+                                        bss->cbss.tsf);
 }
 
 static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
@@ -502,7 +504,7 @@ static int ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata)
                                         bssid, local->hw.conf.beacon_int,
                                         local->hw.conf.channel->center_freq,
                                         sband->n_bitrates, supp_rates,
-                                        capability);
+                                        capability, 0);
 }
 
 static int ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)