aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ibss.c
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2012-11-21 14:43:51 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-11-21 14:43:51 -0500
commit75c8ec71fb29ed59c4b9bda2f411ed3b09164cf7 (patch)
treec1dfd91e624b48ccefa71db573d043b639fe088f /net/mac80211/ibss.c
parent1e60896fe07307baa5f3ca1a220dfa9792657352 (diff)
parent77d2ece6fde80631193054edc9c9a3edad519565 (diff)
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Diffstat (limited to 'net/mac80211/ibss.c')
-rw-r--r--net/mac80211/ibss.c29
1 files changed, 5 insertions, 24 deletions
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 67774b053535..7aa02da52125 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -543,30 +543,11 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
543 if (ether_addr_equal(cbss->bssid, sdata->u.ibss.bssid)) 543 if (ether_addr_equal(cbss->bssid, sdata->u.ibss.bssid))
544 goto put_bss; 544 goto put_bss;
545 545
546 if (rx_status->flag & RX_FLAG_MACTIME_MPDU) { 546 if (ieee80211_have_rx_timestamp(rx_status)) {
547 /* 547 /* time when timestamp field was received */
548 * For correct IBSS merging we need mactime; since mactime is 548 rx_timestamp =
549 * defined as the time the first data symbol of the frame hits 549 ieee80211_calculate_rx_timestamp(local, rx_status,
550 * the PHY, and the timestamp of the beacon is defined as "the 550 len + FCS_LEN, 24);
551 * time that the data symbol containing the first bit of the
552 * timestamp is transmitted to the PHY plus the transmitting
553 * STA's delays through its local PHY from the MAC-PHY
554 * interface to its interface with the WM" (802.11 11.1.2)
555 * - equals the time this bit arrives at the receiver - we have
556 * to take into account the offset between the two.
557 *
558 * E.g. at 1 MBit that means mactime is 192 usec earlier
559 * (=24 bytes * 8 usecs/byte) than the beacon timestamp.
560 */
561 int rate;
562
563 if (rx_status->flag & RX_FLAG_HT)
564 rate = 65; /* TODO: HT rates */
565 else
566 rate = local->hw.wiphy->bands[band]->
567 bitrates[rx_status->rate_idx].bitrate;
568
569 rx_timestamp = rx_status->mactime + (24 * 8 * 10 / rate);
570 } else { 551 } else {
571 /* 552 /*
572 * second best option: get current TSF 553 * second best option: get current TSF