android_kernel_google_msm/net/wireless
Liang Li 510f1d143b cfg80211: fix interface combinations check for ADHOC(IBSS)
partial of commit 8e8b41f9d8 upstream.

As part of commit 463454b5db ("cfg80211: fix interface
combinations check"), this extra check was introduced:

       if ((all_iftypes & used_iftypes) != used_iftypes)
               goto cont;

However, most wireless NIC drivers did not advertise ADHOC in
wiphy.iface_combinations[i].limits[] and hence we'll get -EBUSY
when we bring up a ADHOC wlan with commands similar to:

 # iwconfig wlan0 mode ad-hoc && ifconfig wlan0 up

In commit 8e8b41f9d8 ("cfg80211: enforce lack of interface
combinations"), the change below fixes the issue:

       if (total == 1)
               return 0;

But it also introduces other dependencies for stable. For example,
a full cherry pick of 8e8b41f9d8 would introduce additional
regressions unless we also start cherry picking driver specific
fixes like the following:

  9b4760e  ath5k: add possible wiphy interface combinations
  1ae2fc2  mac80211_hwsim: advertise interface combinations
  20c8e8d  ath9k: add possible wiphy interface combinations

And the purpose of the 'if (total == 1)' is to cover the specific
use case (IBSS, adhoc) that was mentioned above. So we just pick
the specific part out from 8e8b41f9d8 here.

Doing so gives stable kernels a way to fix the change introduced
by 463454b5db, without having to make cherry picks specific to
various NIC drivers.

Signed-off-by: Liang Li <liang.li@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-08-15 08:10:33 -07:00
..
.gitignore
chan.c nl80211: Parse channel type attribute in an ibss join request 2011-12-06 16:05:24 -05:00
core.c cfg80211: process pending events when unregistering net device 2012-08-15 08:10:32 -07:00
core.h cfg80211: process pending events when unregistering net device 2012-08-15 08:10:32 -07:00
db.txt
debugfs.c simple_open: automatically convert to simple_open() 2012-04-05 15:25:50 -07:00
debugfs.h
ethtool.c
ethtool.h
genregdb.awk cfg80211: relicense reg.c reg.h and genregdb.awk to ISC 2012-01-04 14:30:41 -05:00
ibss.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
Kconfig wireless: disable wext sysfs by default 2011-12-07 15:19:39 -05:00
lib80211.c lib80211: remove exports for functions not called by other modules 2011-08-09 15:42:36 -04:00
lib80211_crypt_ccmp.c wireless: Remove unnecessary OOM logging messages 2011-09-13 15:45:02 -04:00
lib80211_crypt_tkip.c wireless: Remove unnecessary OOM logging messages 2011-09-13 15:45:02 -04:00
lib80211_crypt_wep.c wireless: Remove unnecessary OOM logging messages 2011-09-13 15:45:02 -04:00
Makefile
mesh.c {nl,cfg,mac}80211: Implement RSSI threshold for mesh peering 2012-03-05 15:23:15 -05:00
mlme.c cfg80211/mac80211: report signal strength for mgmt frames 2012-03-06 15:16:05 -05:00
nl80211.c nl80211: ensure interface is up in various APIs 2012-04-09 15:54:46 -04:00
nl80211.h cfg80211/mac80211: report signal strength for mgmt frames 2012-03-06 15:16:05 -05:00
radiotap.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
reg.c wireless: reg: restore previous behaviour of chan->max_power calculations 2012-08-15 08:10:10 -07:00
reg.h cfg80211: relicense reg.c reg.h and genregdb.awk to ISC 2012-01-04 14:30:41 -05:00
regdb.h cfg80211: relicense reg.c reg.h and genregdb.awk to ISC 2012-01-04 14:30:41 -05:00
scan.c cfg80211: clarify timestamp in cfg80211_inform_bss 2012-03-13 14:54:20 -04:00
sme.c cfg80211: stop tracking authenticated state 2012-02-06 14:50:37 -05:00
sysfs.c mac80211: fix suspend/resume races with unregister hw 2011-08-22 14:21:40 -04:00
sysfs.h
util.c cfg80211: fix interface combinations check for ADHOC(IBSS) 2012-08-15 08:10:33 -07:00
wext-compat.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux 2011-11-22 14:05:46 -05:00
wext-compat.h cfg80211: remove unused wext handler exports 2011-08-08 14:26:29 -04:00
wext-core.c net/wireless/wext-core.c: add missing kfree 2012-04-09 15:54:50 -04:00
wext-priv.c
wext-proc.c
wext-sme.c cfg80211: Add background scan period attribute. 2012-03-12 14:19:34 -04:00
wext-spy.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00