linux/drivers/net/wireless/iwlwifi
Zhu Yi 5a66926aa9 iwlwifi: delay firmware loading from pci_probe to network interface open
This patch moves the firmware loading (read firmware from disk and load
it into the device SRAM) from pci_probe time to the first network
interface open time. There are two reasons for doing this:

1. To support kernel buildin iwlwifi drivers. Because kernel initializes
   network devices subsystem before hard disk and SATA subsystem, it is
   impossible to get the firmware image from hard disk in the PCI probe
   handler. Thus delaying the firmware loading into the network
   interface open time is the way to go. Note, we only read the firmware
   image from hard disk the first time the interface is open. After this
   is succeeded, we cache the firmware image into the host memory. This
   is a performance gain when user open and close the interface multiple
   times and is necessary for device suspend and resume.

2. For better power saving. When the iwlwifi modules are loaded (or
   buildin the kernel) but the wireless network interface is not being
   used, it is a good practice the wireless device consumes as less
   power as possible. Unloading the firmware from the wireless device
   and unregister the driver's interrupt handler in the network
   interface close handler provides users a way to achieve this. User
   space network configuration tools (i.e NetworkManager) can also
   contribute here when it detects a wired cable is connected and
   close the wireless interface automatically.

This patch also includes the pci_save/restore_state() fixed by Ian Schram
upon the first version.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: Ian Schram <ischram@telenet.be>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-01-28 15:09:57 -08:00
..
iwl3945-base.c iwlwifi: delay firmware loading from pci_probe to network interface open 2008-01-28 15:09:57 -08:00
iwl4965-base.c iwlwifi: delay firmware loading from pci_probe to network interface open 2008-01-28 15:09:57 -08:00
iwl-3945-commands.h iwlwifi: document scan command 2008-01-28 15:09:56 -08:00
iwl-3945-debug.h iwlwifi: cleanup namespace 2008-01-28 15:04:35 -08:00
iwl-3945-hw.h iwlwifi: 802.11n add support to 8K A-MSDU Rx frames 2008-01-28 15:05:46 -08:00
iwl-3945-io.h iwlwifi: cleanup namespace 2008-01-28 15:04:35 -08:00
iwl-3945-rs.c mac80211: Fix rate reporting regression 2008-01-28 15:09:42 -08:00
iwl-3945-rs.h iwlwifi: clean up and clarify some comments after 3945/4965 split 2008-01-28 15:05:17 -08:00
iwl-3945.c iwlwifi: delay firmware loading from pci_probe to network interface open 2008-01-28 15:09:57 -08:00
iwl-3945.h mac80211: dont use interface indices in drivers 2008-01-28 15:09:36 -08:00
iwl-4965-commands.h iwlwifi: document scan command 2008-01-28 15:09:56 -08:00
iwl-4965-debug.h iwlwifi: cleanup namespace 2008-01-28 15:04:35 -08:00
iwl-4965-hw.h iwlwifi: 802.11n add support to 8K A-MSDU Rx frames 2008-01-28 15:05:46 -08:00
iwl-4965-io.h iwlwifi: cleanup namespace 2008-01-28 15:04:35 -08:00
iwl-4965-rs.c mac80211: Fix rate reporting regression 2008-01-28 15:09:42 -08:00
iwl-4965-rs.h iwlwifi: Move is_legacy() macro family from iwl-4965-hw.h to iwl-4965-rs.h 2008-01-28 15:05:18 -08:00
iwl-4965.c iwlwifi: delay firmware loading from pci_probe to network interface open 2008-01-28 15:09:57 -08:00
iwl-4965.h iwlwifi: remove iwl4965_tx_cmd 2008-01-28 15:09:55 -08:00
iwl-helpers.h iwlwifi: move iwl4965_get_dma_hi_address function to iwl-helpers.h 2008-01-28 15:09:55 -08:00
iwl-prph.h iwlwifi: document 4965 Tx scheduler 2008-01-28 15:05:31 -08:00
iwl-spectrum.h
Kconfig iwlwifi: fix typo in 'drivers/net/wireless/iwlwifi/Kconfig' 2008-01-28 15:09:13 -08:00
Makefile [IWLWIFI]: remove per-file CFLAGS for IWL define 2007-10-10 16:52:16 -07:00