freebsd-dev/sys/net80211
Adrian Chadd 9c75c3d4ba Fix the scan handling for 11b->11g upgrades in a world where, well,
it's not just 11b/11g.

The following was happening, and it's quite .. annoyingly grr-y.

* create vap, setup wpa_supplicant with no bgscanning, etc - there's
  no call to ieee80211_media_change, so vap->iv_des_mode is
  IEEE80211_MODE_AUTO;
* do ifconfig wlan0 scan - same thing, media_change doesn't get called,
  iv_des_mode stays as auto.
* But then, run wpa_cli and do 'scan' - it'll do a media change.
* if you're on 11ng, vap->iv_des_mode gets changed to IEEE80211_MODE_11NG
* Then makescanlist() is called.  There's a block of code that gets
  called if iv_des_mode != IEEE80211_MODE_AUTO, and it does this:

		if (vap->iv_des_mode != IEEE80211_MODE_11G ||
			    mode != IEEE80211_MODE_11B)
			continue;
		mode = IEEE80211_MODE_11G;	/* upgrade */

* .. now, iv_des_mode is not IEEE80211_MODE_11G, so it always runs
  'continue'
* .. and thus the scan list stays empty and no further channel
  scans occur. Ever.(1)

If you then disassociate and try associating to something, your
scan table has likely been purged / aged out and you'll never
see anything in the scan list.

(1) You need to do 'ifconfig wlan0 mode auto' or just destroy/re-create
    the VAP to get working wireless again.

Tested:

* iwn(4) - intel 5300 wifi; STA mode; using wpa_supplicant; bgscan
  enabled -and- wpa_supplicant scanning.

Thanks to:

* Everyone who kept poking me about this and wondering why the hell
  their wifi would eventually stop seeing scan lists.  Grr.
  I eventually snapped this evening and dug back into this code.
2014-12-18 05:17:18 +00:00
..
_ieee80211.h
ieee80211_acl.c
ieee80211_action.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
ieee80211_action.h
ieee80211_adhoc.c Mechanically convert to if_inc_counter(). 2014-09-19 09:20:55 +00:00
ieee80211_adhoc.h
ieee80211_ageq.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
ieee80211_ageq.h
ieee80211_alq.c - Provide necessary includes, that before came via if.h pollution. 2013-10-28 22:26:03 +00:00
ieee80211_alq.h
ieee80211_amrr.c After much toying around with this AMRR initial rate stuff, 2014-08-20 09:10:03 +00:00
ieee80211_amrr.h
ieee80211_crypto_ccmp.c
ieee80211_crypto_none.c
ieee80211_crypto_tkip.c
ieee80211_crypto_wep.c
ieee80211_crypto.c
ieee80211_crypto.h
ieee80211_ddb.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
ieee80211_dfs.c Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
ieee80211_dfs.h
ieee80211_freebsd.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
ieee80211_freebsd.h Add in some backwards compatability hacks to make -HEAD net80211 compile 2013-08-22 05:53:47 +00:00
ieee80211_hostap.c Mechanically convert to if_inc_counter(). 2014-09-19 09:20:55 +00:00
ieee80211_hostap.h Migrate the power-save functions to be overridable VAP methods. 2012-10-02 17:45:19 +00:00
ieee80211_ht.c Fix multiple incorrect SYSCTL arguments in the kernel: 2014-10-21 07:31:21 +00:00
ieee80211_ht.h
ieee80211_hwmp.c Fix multiple incorrect SYSCTL arguments in the kernel: 2014-10-21 07:31:21 +00:00
ieee80211_input.c Mechanically convert to if_inc_counter(). 2014-09-19 09:20:55 +00:00
ieee80211_input.h
ieee80211_ioctl.c Use logical rather than bitwise OR in if() expression. 2014-04-26 23:22:49 +00:00
ieee80211_ioctl.h Update net80211 mesh struct ieee80211_meshgann_ie. 2013-02-07 21:20:28 +00:00
ieee80211_mesh.c Fix multiple incorrect SYSCTL arguments in the kernel: 2014-10-21 07:31:21 +00:00
ieee80211_mesh.h HWMP: ic->raw_xmit didn't always point to correct ni. 2013-02-07 21:26:40 +00:00
ieee80211_monitor.c Mechanically convert to if_inc_counter(). 2014-09-19 09:20:55 +00:00
ieee80211_monitor.h
ieee80211_node.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
ieee80211_node.h Stop a mesh STA from flooding with peer frames. 2013-02-07 21:12:55 +00:00
ieee80211_output.c Mechanically convert to if_inc_counter(). 2014-09-19 09:20:55 +00:00
ieee80211_phy.c Provide includes that are needed in these files, and before were read 2013-10-26 18:18:50 +00:00
ieee80211_phy.h Implement basic 802.11n awareness in the PHY and AMRR rate control code. 2013-07-04 21:16:49 +00:00
ieee80211_power.c Begin fleshing out support for net80211 provided (legacy) sleep management. 2014-04-24 01:39:53 +00:00
ieee80211_power.h Begin fleshing out support for net80211 provided (legacy) sleep management. 2014-04-24 01:39:53 +00:00
ieee80211_proto.c Rename definition of IEEE80211_FC1_WEP to IEEE80211_FC1_PROTECTED. 2014-01-08 08:06:56 +00:00
ieee80211_proto.h Fix a use-after-free node reference issue when waiting for a return 2013-10-24 17:04:16 +00:00
ieee80211_radiotap.c Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
ieee80211_radiotap.h Add in the missing radiotap definitions from the sipsolutions.net 2013-01-08 06:59:21 +00:00
ieee80211_ratectl_none.c Provide includes that are needed in these files, and before were read 2013-10-26 18:18:50 +00:00
ieee80211_ratectl.c Provide includes that are needed in these files, and before were read 2013-10-26 18:18:50 +00:00
ieee80211_ratectl.h
ieee80211_regdomain.c Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
ieee80211_regdomain.h Add a new 900MHz GSM regulatory SKU for the Xagyl Communications XC900M. 2012-12-07 06:34:46 +00:00
ieee80211_rssadapt.c Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
ieee80211_rssadapt.h
ieee80211_scan_sta.c Fix the scan handling for 11b->11g upgrades in a world where, well, 2014-12-18 05:17:18 +00:00
ieee80211_scan.c Make sure any waiters on the scan results get notified if the scan task 2013-11-29 22:24:57 +00:00
ieee80211_scan.h
ieee80211_sta.c Mechanically convert to if_inc_counter(). 2014-09-19 09:20:55 +00:00
ieee80211_sta.h Handle ath-specific and WME IE's in adhoc mode. 2012-12-09 22:56:29 +00:00
ieee80211_superg.c Fix multiple incorrect SYSCTL arguments in the kernel: 2014-10-21 07:31:21 +00:00
ieee80211_superg.h Atheros SuperG bug fixes, as part of hunting down kern/174283. 2012-12-09 19:20:28 +00:00
ieee80211_tdma.c Don't return ENOTSUPP here - the net80211 pluggable ioctl API will treat 2013-08-18 23:40:30 +00:00
ieee80211_tdma.h
ieee80211_var.h Add a capability to indicate that the net80211 stack should be doing 2014-04-24 01:28:39 +00:00
ieee80211_wds.c Mechanically convert to if_inc_counter(). 2014-09-19 09:20:55 +00:00
ieee80211_wds.h
ieee80211_xauth.c
ieee80211.c Mechanically convert to if_inc_counter(). 2014-09-19 09:20:55 +00:00
ieee80211.h Rename definition of IEEE80211_FC1_WEP to IEEE80211_FC1_PROTECTED. 2014-01-08 08:06:56 +00:00