2013-08-07 08:36:10

by Antonio Quartulli

[permalink] [raw]
Subject: [PATCH] mac80211: ibss - immediately create a cell if bssid and freq have been provided

From: Antonio Quartulli <[email protected]>

The current behaviour when not finding the cbss in the local
list is to always scan before creating the IBSS. However if
bssid and freq have been provided (and fixed_freq is set) it
is possible to immediately create the cell and avoid wasting
time with the scan operation.

Signed-off-by: Antonio Quartulli <[email protected]>
---
net/mac80211/ibss.c | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index e08387c..811207a 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -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 (!cbss && 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 */
--
1.8.1.5



2013-08-09 17:01:18

by Antonio Quartulli

[permalink] [raw]
Subject: [PATCHv2] mac80211: ibss - do not scan if not needed when creating an IBSS

From: Antonio Quartulli <[email protected]>

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 <[email protected]>
---
net/mac80211/ibss.c | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index e08387c..79e294e 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -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 */
--
1.8.1.5


2013-08-12 16:09:11

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCHv2] mac80211: ibss - do not scan if not needed when creating an IBSS

On Fri, 2013-08-09 at 18:58 +0200, Antonio Quartulli wrote:
> From: Antonio Quartulli <[email protected]>
>
> 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.

Applied.

johannes