mac80211: ibss - do not scan if not needed when creating an IBSS
authorAntonio Quartulli <antonio@open-mesh.com>
Fri, 9 Aug 2013 16:58:32 +0000 (18:58 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 12 Aug 2013 16:08:34 +0000 (18:08 +0200)
In some cases mac80211 will scan before creating an IBSS
even if bssid and frequency have been forced by the user.
This is not needed and leads only to a delay in the IBSS
establishment phase.

Immediately create the cell if both bssid and frequency
(and fixed_freq is set) have been specified.

Signed-off-by: Antonio Quartulli <antonio@open-mesh.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/ibss.c

index e08387cdc8fdb26e374f56792d25a3305d7412b1..79e294e9b5cc279f3bc4efa5eb4260a9c5b6660d 100644 (file)
@@ -891,6 +891,17 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
                return;
        }
 
+       /* if a fixed bssid and a fixed freq have been provided create the IBSS
+        * directly and do not waste time scanning
+        */
+       if (ifibss->fixed_bssid && ifibss->fixed_channel) {
+               sdata_info(sdata, "Created IBSS using preconfigured BSSID %pM\n",
+                          bssid);
+               ieee80211_sta_create_ibss(sdata);
+               return;
+       }
+
+
        ibss_dbg(sdata, "sta_find_ibss: did not try to join ibss\n");
 
        /* Selected IBSS not found in current scan results - try to scan */