linux/drivers/net/wireless
Johannes Berg 8e3bad65a5 mac80211: remove ieee80211_notify_mac
Before ieee80211_notify_mac() was added, it was presented with the
use case of using it to tell mac80211 that the association may
have been lost because the firmware crashed/reset.

Since then, it has also been used by iwlwifi to (slightly) speed
up re-association after resume, a workaround around the fact that
mac80211 has no suspend/resume handling yet. It is also not used
by any other drivers, so clearly it cannot be necessary for "good
enough" suspend/resume.

Unfortunately, the callback suffers from a severe problem: It only
works for station mode. If suspend/resume happens while in IBSS or
any other mode (but station), then the callback is pointless.

Recently, it has created a number of locking issues, first because
it required rtnl locking rather than RCU due to calling sleeping
functions within the critical section, and now because it's called
by iwlwifi from the mac80211 workqueue that may not use the rtnl
because it is flushed under rtnl.
(cf. http://bugzilla.kernel.org/show_bug.cgi?id=12046)

I think, therefore, that we should take a step back, remove it
entirely for now and add the small feature it provided properly.
For suspend and resume we will need to introduce new hooks, and for
the case where the firmware was reset the driver will probably
simply just pretend it has done a suspend/resume cycle to get
mac80211 to reprogram the hardware completely, not just try to
connect to the current AP again in station mode. When doing so, we
will need to take into account locking issues and possibly defer
to schedule_work from within mac80211 for the resume operation,
while the suspend operation must be done directly.

Proper suspend/resume should also not necessarily try to reconnect
to the current AP, the time spent in suspend may have been short
enough to not be disconnected from the AP, mac80211 will detect
that the AP went out of range quickly if it did, and if the
association is lost then the AP will disassoc as soon as a data
frame is sent. We might also take into account WWOL then, and
have mac80211 program the hardware into such a mode where it is
available and requested.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-11-18 17:26:26 -05:00
..
ath5k ath5k: correct handling of rx status fields 2008-11-06 16:37:11 -05:00
ath9k ath9k/mac80211: disallow fragmentation in ath9k, report to userspace 2008-10-14 21:12:37 -04:00
b43 Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
b43legacy mac80211: add multi-rate retry support 2008-10-06 18:14:57 -04:00
hostap hostap: pad the skb->cb usage in lieu of a proper fix 2008-11-12 16:54:22 -05:00
iwlwifi mac80211: remove ieee80211_notify_mac 2008-11-18 17:26:26 -05:00
libertas libertas: fix buffer overrun 2008-10-29 17:54:35 -04:00
libertas_tf libertas_tf: fix skb tail pointer 2008-11-18 17:26:26 -05:00
p54 p54: fix build warnings 2008-10-27 17:46:11 -04:00
prism54 wireless: replace __FUNCTION__ with __func__ 2008-08-22 16:29:56 -04:00
rt2x00 rt2x00: Fix build error when mac80211=M rt2x00=Y 2008-10-29 17:54:35 -04:00
zd1211rw zd1211rw: Add 2 device IDs 2008-11-06 16:37:10 -05:00
adm8211.c mac80211: use nl80211 interface types 2008-09-15 16:48:23 -04:00
adm8211.h
airo_cs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
airo.c wireless: Read scan flags correctly on x86-64 2008-09-24 16:17:58 -04:00
airo.h
airport.c orinoco: Invoke firmware download in main driver 2008-08-22 19:28:05 -04:00
arlan-main.c
arlan-proc.c
arlan.h
atmel_cs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
atmel_pci.c
atmel.c wireless: Read scan flags correctly on x86-64 2008-09-24 16:17:58 -04:00
atmel.h
hermes_dld.c orinoco: Extend hermes_dld routines for Agere firmware 2008-08-22 19:28:05 -04:00
hermes_dld.h orinoco: Extend hermes_dld routines for Agere firmware 2008-08-22 19:28:05 -04:00
hermes_rid.h orinoco: Add WE-18 ioctls for WPA 2008-08-22 19:28:06 -04:00
hermes.c orinoco: Add function to execute Hermes initialisation commands synchronously 2008-08-22 19:28:04 -04:00
hermes.h orinoco: Add MIC on TX and check on RX 2008-08-22 19:28:07 -04:00
i82586.h
i82593.h
ipw2100.c wireless: replace __FUNCTION__ with __func__ 2008-08-22 16:29:56 -04:00
ipw2100.h
ipw2200.c removed unused #include <version.h> 2008-08-18 11:05:15 -04:00
ipw2200.h wireless: replace __FUNCTION__ with __func__ 2008-08-22 16:29:56 -04:00
Kconfig orinoco: Add MIC on TX and check on RX 2008-08-22 19:28:07 -04:00
mac80211_hwsim.c device create: net: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
Makefile orinoco: Move firmware download functionality into new module 2008-08-22 19:28:04 -04:00
netwave_cs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
orinoco_cs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-10-16 11:26:26 -07:00
orinoco_nortel.c orinoco: Invoke firmware download in main driver 2008-08-22 19:28:05 -04:00
orinoco_pci.c orinoco: Invoke firmware download in main driver 2008-08-22 19:28:05 -04:00
orinoco_pci.h
orinoco_plx.c orinoco: Invoke firmware download in main driver 2008-08-22 19:28:05 -04:00
orinoco_tmd.c orinoco: Invoke firmware download in main driver 2008-08-22 19:28:05 -04:00
orinoco.c orinoco: reduce stack usage in firmware download path 2008-10-22 18:09:32 -04:00
orinoco.h orinoco: Add MIC on TX and check on RX 2008-08-22 19:28:07 -04:00
ray_cs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
ray_cs.h
rayctl.h
rndis_wlan.c wireless: Read scan flags correctly on x86-64 2008-09-24 16:17:58 -04:00
rtl818x.h rtl818x: merge tx/rx descriptor flags 2008-08-22 16:29:48 -04:00
rtl8180_dev.c mac80211: add multi-rate retry support 2008-10-06 18:14:57 -04:00
rtl8180_grf5101.c
rtl8180_grf5101.h
rtl8180_max2820.c
rtl8180_max2820.h
rtl8180_rtl8225.c
rtl8180_rtl8225.h
rtl8180_sa2400.c
rtl8180_sa2400.h
rtl8180.h rtl818x: merge tx/rx descriptor flags 2008-08-22 16:29:48 -04:00
rtl8187_dev.c rtl8187 : support for Sitecom WL-168 0001 v4 2008-11-12 16:49:57 -05:00
rtl8187_rtl8225.c
rtl8187_rtl8225.h
rtl8187.h rtl818x: merge tx/rx descriptor flags 2008-08-22 16:29:48 -04:00
spectrum_cs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-10-16 11:26:26 -07:00
strip.c
wavelan_cs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
wavelan_cs.h
wavelan_cs.p.h
wavelan.c net: Rationalise email address: Network Specific Parts 2008-10-13 19:01:08 -07:00
wavelan.h
wavelan.p.h net: Rationalise email address: Network Specific Parts 2008-10-13 19:01:08 -07:00
wl3501_cs.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2008-10-13 14:12:40 -07:00
wl3501.h
zd1201.c
zd1201.h