mac80211: allow mode change if IBSS is not allowed
authorPavel Roskin <proski@gnu.org>
Mon, 22 Dec 2008 21:39:36 +0000 (16:39 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 12 Jan 2009 19:24:56 +0000 (14:24 -0500)
Changing mode on an interface is not allowed if IBSS is disabled for the
current channel.  That restriction should only apply when switching to
the ad-hoc mode, as it was prior to "cfg80211: handle SIOCGIWMODE/SIOCSIWMODE".

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/iface.c

index 5abbc3f..b907482 100644 (file)
@@ -699,7 +699,8 @@ int ieee80211_if_change_type(struct ieee80211_sub_if_data *sdata,
                return 0;
 
        /* Setting ad-hoc mode on non-IBSS channel is not supported. */
                return 0;
 
        /* Setting ad-hoc mode on non-IBSS channel is not supported. */
-       if (sdata->local->oper_channel->flags & IEEE80211_CHAN_NO_IBSS)
+       if (sdata->local->oper_channel->flags & IEEE80211_CHAN_NO_IBSS &&
+           type == NL80211_IFTYPE_ADHOC)
                return -EOPNOTSUPP;
 
        /*
                return -EOPNOTSUPP;
 
        /*