Looks fine, one last question: > + if (mactime <= timestamp) { > + if (CONFIG_MAC80211_IBSS_DEBUG || net_ratelimit()) > + printk(KERN_DEBUG "%s: beacon TSF higher than " > + "local TSF - IBSS merge with BSSID %s\n", > + dev->name, print_mac(mac, mgmt->bssid)); I'd rewrite that as timestamp >= mactime and rename the two variables (maybe beacon_timestamp and phy_timestamp or so?), but that's not too important. However, in any case "<=" seems wrong, shouldn't we only merge when it's actually higher? If your hardware/firmware has synced properly and the PHY delay is accounted for properly etc. then every beacon from the own BSS will fulfil the == part of the condition, no? Also, the beacon timestamp is defined as follows: A STA sending a beacon shall set the value of the beacon’s timestamp so that it equals the value of the STA’s TSF timer at 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 [e.g., antenna, light-emitting diode (LED) emission surface]. (IEEE 802.11 11.1.2) Since we define the RX timestamp to be when the first data symbol of the frame hits the PHY, we here have to take into account the offset between the two, at 1 MBit that's 192 (=24 bytes * 8 usecs/byte) usecs earlier than the beacon timestamp. On the other hand, you're unlikely to hit that window, but I suppose it warrants at least a comment. johannes
Attachment:
signature.asc
Description: This is a digitally signed message part