mac80211: Fix IBSS merge
authorSujith <Sujith.Manoharan@atheros.com>
Mon, 2 Nov 2009 07:03:23 +0000 (12:33 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 4 Nov 2009 23:44:52 +0000 (18:44 -0500)
Currently, in IBSS mode, a single creator would go into
a loop trying to merge/scan. This happens because the IBSS timer is
rearmed on finishing a scan and the subsequent
timer invocation requests another scan immediately.

This patch fixes this issue by checking if we have just completed
a scan run trying to merge with other IBSS networks.

Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/ibss.c

index ca8ecce31d34ad1c995d9264bb833011741740f8..6ae288387a11873b4ba2d28330cc781ad7798099 100644 (file)
@@ -453,6 +453,10 @@ static void ieee80211_sta_merge_ibss(struct ieee80211_sub_if_data *sdata)
 
        ieee80211_sta_expire(sdata, IEEE80211_IBSS_INACTIVITY_LIMIT);
 
+       if (time_before(jiffies, ifibss->last_scan_completed +
+                      IEEE80211_IBSS_MERGE_INTERVAL))
+               return;
+
        if (ieee80211_sta_active_ibss(sdata))
                return;