Search Linux Wireless

Re: [Greenmesh] [ath9k] mesh powersave hardware sleep + wakeup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Apr 17, 2012 at 7:02 PM, Johannes Berg
<johannes@xxxxxxxxxxxxxxxx> wrote:
> (...)
> Keep in mind that TSF == start of TSF field, while rx_status->timestamp
> == start of first symbol, which I didn't even remember when you guys did
> all the Toffset things, I'm guessing they're all wrong :-)

I think you guessed wrong :)

http://www.mail-archive.com/devel@xxxxxxxxxxxxxxxxxxxx/msg01552.html

+       if (rx_status->flag & RX_FLAG_MACTIME_MPDU && rx_status->mactime) {
+               /*
+                * The mactime is defined as the time the first data symbol
+                * of the frame hits the PHY, and the timestamp of the beacon
+                * is defined as "the time that the data symbol containing the
+                * first bit of the timestamp is transmitted to the PHY plus
+                * the transmitting STA's delays through its local PHY from the
+                * MAC-PHY interface to its interface with the WM" (802.11
+                * 11.1.2)
+                *
+                * T_r, in 13.13.2.2.2, is just defined as "the frame reception
+                * time" but we unless we interpret that time to be the same
+                * time of the beacon timestamp, the offset calculation will be
+                * off.  Below we adjust t_r to be "the time at which the first
+                * symbol of the timestamp element in the beacon is received".
+                * This correction depends on the rate.
+                *
+                * Based on similar code in ibss.c
+                */
+               int rate;
+
+               if (rx_status->flag & RX_FLAG_HT) {
+                       /* TODO:
+                        * In principle there could be HT-beacons (Dual Beacon
+                        * HT Operation options), but for now ignore them and
+                        * just use the primary (i.e. non-HT) beacons for
+                        * synchronization.
+                        * */
+                       goto no_sync;
+               } else
+                       rate = local->hw.wiphy->bands[rx_status->band]->
+                               bitrates[rx_status->rate_idx].bitrate;
+
+               /* 24 bytes of header * 8 bits/byte *
+                * 10*(100 Kbps)/Mbps / rate (100 Kbps)*/
+               t_r = rx_status->mactime + (24 * 8 * 10 / rate);
+       }


-- 
Javier Cardona
cozybit Inc.
http://www.cozybit.com
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux