diff options
author | Bruno Randolf <bruno@thinktube.com> | 2008-02-17 21:21:36 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-02-29 15:37:12 -0500 |
commit | 9d9bf77d16ba527f6f63846ca18cf20ae6e8d697 (patch) | |
tree | a8ae534cb92ef2368fee0b5fb4d092530a8017ee /include | |
parent | a607268a0d5532d6ae3777ddd0339ff7d8b037a0 (diff) |
mac80211: enable IBSS merging
enable IBSS cell merging. if an IBSS beacon with the same channel, same ESSID
and a TSF higher than the local TSF (mactime) is received, we have to join its
BSSID. while this might not be immediately apparent from reading the 802.11
standard it is compliant and necessary to make IBSS mode functional in many
cases. most drivers have a similar behaviour.
* move the relevant code section (previously only containing debug code) down
to the end of the function, so we can reuse the bss structure.
* we have to compare the mactime (TSF at the time of packet receive) rather
than the current TSF. since mactime is defined as the time the first data
symbol arrived we add the time until byte 24 where the timestamp resides, since
this is how the beacon timestamp is defined. as some some drivers are not able
to give a reliable mactime we fall back to use the current TSF, which will be
enough to catch most (but not all) cases where an IBSS merge is necessary.
* in IBSS mode we want to allow beacons to override probe response info so we
can correctly do merges.
* we don't only configure beacons based on scan results, so change that
message.
* to enable this we have to let all beacons thru in IBSS mode, even if they
have a different BSSID.
Signed-off-by: Bruno Randolf <bruno@thinktube.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/mac80211.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 1a1d0d8203aa..784ab769b00b 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -276,7 +276,8 @@ struct ieee80211_tx_control { | |||
276 | * @RX_FLAG_FAILED_PLCP_CRC: Set this flag if the PCLP check failed on | 276 | * @RX_FLAG_FAILED_PLCP_CRC: Set this flag if the PCLP check failed on |
277 | * the frame. | 277 | * the frame. |
278 | * @RX_FLAG_TSFT: The timestamp passed in the RX status (@mactime field) | 278 | * @RX_FLAG_TSFT: The timestamp passed in the RX status (@mactime field) |
279 | * is valid. | 279 | * is valid. This is useful in monitor mode and necessary for beacon frames |
280 | * to enable IBSS merging. | ||
280 | */ | 281 | */ |
281 | enum mac80211_rx_flags { | 282 | enum mac80211_rx_flags { |
282 | RX_FLAG_MMIC_ERROR = 1<<0, | 283 | RX_FLAG_MMIC_ERROR = 1<<0, |