We can allow scan requests in AP mode as long as the interface has not
yet been configured to send out Beacon frames (or if beaconing has
been disabled prior to the scan request). This makes it easier to scan
for neighboring BSSes during AP initialization and makes it possible
to run a scan without setting the interface down, if needed. Without
this change, the only available option would be to set the interface
down, move into station mode, and set the interface up, prior to
requesting the scan.
Signed-off-by: Jouni Malinen <[email protected]>
---
net/mac80211/cfg.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- uml.orig/net/mac80211/cfg.c 2009-04-16 18:20:19.000000000 +0300
+++ uml/net/mac80211/cfg.c 2009-04-16 18:33:44.000000000 +0300
@@ -1167,7 +1167,8 @@ static int ieee80211_scan(struct wiphy *
if (sdata->vif.type != NL80211_IFTYPE_STATION &&
sdata->vif.type != NL80211_IFTYPE_ADHOC &&
- sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
+ sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
+ (sdata->vif.type != NL80211_IFTYPE_AP || sdata->u.ap.beacon))
return -EOPNOTSUPP;
return ieee80211_request_scan(sdata, req);
--
Jouni Malinen PGP id EFC895FA
On Thu, 2009-04-16 at 18:44 +0300, Jouni Malinen wrote:
> We can allow scan requests in AP mode as long as the interface has not
> yet been configured to send out Beacon frames (or if beaconing has
> been disabled prior to the scan request). This makes it easier to scan
> for neighboring BSSes during AP initialization and makes it possible
> to run a scan without setting the interface down, if needed. Without
> this change, the only available option would be to set the interface
> down, move into station mode, and set the interface up, prior to
> requesting the scan.
>
> Signed-off-by: Jouni Malinen <[email protected]>
>
> ---
> net/mac80211/cfg.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> --- uml.orig/net/mac80211/cfg.c 2009-04-16 18:20:19.000000000 +0300
> +++ uml/net/mac80211/cfg.c 2009-04-16 18:33:44.000000000 +0300
> @@ -1167,7 +1167,8 @@ static int ieee80211_scan(struct wiphy *
>
> if (sdata->vif.type != NL80211_IFTYPE_STATION &&
> sdata->vif.type != NL80211_IFTYPE_ADHOC &&
> - sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
> + sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
> + (sdata->vif.type != NL80211_IFTYPE_AP || sdata->u.ap.beacon))
> return -EOPNOTSUPP;
Should this return a different error code for AP then? Maybe -EBUSY for
AP && beacon? Then again, EBUSY is already returned for "already
scanning". hmm.
johannes
On Thu, 2009-04-16 at 19:00 +0300, Jouni Malinen wrote:
> On Thu, Apr 16, 2009 at 05:51:57PM +0200, Johannes Berg wrote:
> > On Thu, 2009-04-16 at 18:44 +0300, Jouni Malinen wrote:
> > > --- uml.orig/net/mac80211/cfg.c 2009-04-16 18:20:19.000000000 +0300
> > > +++ uml/net/mac80211/cfg.c 2009-04-16 18:33:44.000000000 +0300
> > > @@ -1167,7 +1167,8 @@ static int ieee80211_scan(struct wiphy *
> > >
> > > if (sdata->vif.type != NL80211_IFTYPE_STATION &&
> > > sdata->vif.type != NL80211_IFTYPE_ADHOC &&
> > > - sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
> > > + sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
> > > + (sdata->vif.type != NL80211_IFTYPE_AP || sdata->u.ap.beacon))
> > > return -EOPNOTSUPP;
> >
> > Should this return a different error code for AP then? Maybe -EBUSY for
> > AP && beacon? Then again, EBUSY is already returned for "already
> > scanning". hmm.
>
> I thought about that for a moment, but did not come up with a good error
> code.. ;-) EBUSY is not a good option here since that could be used by
> applications to decide that they should try again (which would not help
> here at all). If someone has a better one in mind, I would have no
> problems changing this, but I don't see much problems with EOPNOTSUPP
> either.
Ok. Good enough for me :)
johannes
On Thu, Apr 16, 2009 at 05:51:57PM +0200, Johannes Berg wrote:
> On Thu, 2009-04-16 at 18:44 +0300, Jouni Malinen wrote:
> > --- uml.orig/net/mac80211/cfg.c 2009-04-16 18:20:19.000000000 +0300
> > +++ uml/net/mac80211/cfg.c 2009-04-16 18:33:44.000000000 +0300
> > @@ -1167,7 +1167,8 @@ static int ieee80211_scan(struct wiphy *
> >
> > if (sdata->vif.type != NL80211_IFTYPE_STATION &&
> > sdata->vif.type != NL80211_IFTYPE_ADHOC &&
> > - sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
> > + sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
> > + (sdata->vif.type != NL80211_IFTYPE_AP || sdata->u.ap.beacon))
> > return -EOPNOTSUPP;
>
> Should this return a different error code for AP then? Maybe -EBUSY for
> AP && beacon? Then again, EBUSY is already returned for "already
> scanning". hmm.
I thought about that for a moment, but did not come up with a good error
code.. ;-) EBUSY is not a good option here since that could be used by
applications to decide that they should try again (which would not help
here at all). If someone has a better one in mind, I would have no
problems changing this, but I don't see much problems with EOPNOTSUPP
either.
--
Jouni Malinen PGP id EFC895FA