• Bruno Randolf's avatar
    mac80211: enable IBSS merging · 9d9bf77d
    Bruno Randolf authored
    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: default avatarBruno Randolf <bruno@thinktube.com>
    Acked-by: default avatarJohannes Berg <johannes@sipsolutions.net>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    9d9bf77d
ieee80211_sta.c 109 KB