diff options
author | John W. Linville <linville@tuxdriver.com> | 2012-11-21 14:43:51 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-11-21 14:43:51 -0500 |
commit | 75c8ec71fb29ed59c4b9bda2f411ed3b09164cf7 (patch) | |
tree | c1dfd91e624b48ccefa71db573d043b639fe088f /net/mac80211/ibss.c | |
parent | 1e60896fe07307baa5f3ca1a220dfa9792657352 (diff) | |
parent | 77d2ece6fde80631193054edc9c9a3edad519565 (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.c | 29 |
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 |