2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-26 06:04:14 +08:00
linux-next/drivers/net/wireless
Wey-Yi Guy 7812b16730 iwlwifi: reliable entering of critical temperature state
When uCode detects critical temperature it should send "card state
notification" interrupt to driver and then shut itself down to prevent
overheating. There is a race condition where uCode shuts down before it
can deliver the interrupt to driver.
Additional method provided here for driver to enter CT_KILL state based
on temperature reading.

How it works:
Method 1:
If driver receive "card state notification" interrupt from uCode; it
enters "CT_KILL" state immediately

Method 2:
If the last temperature report by Card reach Critical temperature,
driver will send "statistic notification" request to uCode to verify the
temperature reading, if driver can not get reply from uCode within
300ms, driver will enter CT_KILL state automatically.

Method 3:
If the last temperature report by Card did not reach Critical
temperature, but uCode already shut down due to critical temperature.
All the host commands send to uCode will not get process by uCode;
when command queue reach the limit, driver will check the last reported
temperature reading, if it is within pre-defined margin, enter "CT_KILL"
state immediately. In this case, when uCode ready to exit from "CT_KILL" state,
driver need to restart the adapter in order to reset all the queues and
resume normal operation.

One additional issue being address here, when system is in CT_KILL
state, both tx and rx already stopped, but driver still can send host
command to uCode, it will flood the command queue since card was not
responding; adding STATUS_CT_KILL flag to reject enqueue host commands
to uCode if it is in CT_KILL state, when uCode is ready to come out of
CT_KILL, driver will clear  the STATUS_CT_KILL bit and allow enqueue the host
commands to uCode to recover from CT_KILL state.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-10-07 16:39:44 -04:00
..
ath atheros: define a common priv struct 2009-10-07 16:39:42 -04:00
b43 b43: Comment unused functions lpphy_restore_dig_flt_state and lpphy_disable_rx_gain_override 2009-10-07 16:39:41 -04:00
b43legacy b44/b43/b43legacy: Fix switch warnings introduced by SSB-SDIO 2009-09-09 11:19:03 -04:00
hostap wext: refactor 2009-10-07 16:39:43 -04:00
ipw2x00 wext: refactor 2009-10-07 16:39:43 -04:00
iwlwifi iwlwifi: reliable entering of critical temperature state 2009-10-07 16:39:44 -04:00
iwmc3200wifi debugfs: Change debugfs directory of IWMC3200 2009-09-15 09:50:48 -07:00
libertas libertas: Add auto deep sleep support for SD8385/SD8686/SD8688 2009-10-07 16:39:43 -04:00
libertas_tf mac80211: allow configure_filter callback to sleep 2009-08-20 11:35:58 -04:00
orinoco wext: refactor 2009-10-07 16:39:43 -04:00
p54 p54usb: add Zcomax XG-705A usbid 2009-09-23 11:35:41 -04:00
prism54 wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
rt2x00 rt2x00: Thrustmaster FunAccess WIFI USB and rt73usb 2009-09-29 17:25:16 -04:00
rtl818x Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-09-02 00:32:56 -07:00
wl12xx wl1251: remove wl1251_netlink.h 2009-10-07 16:39:43 -04:00
zd1211rw Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ 2009-09-24 15:13:11 -07:00
adm8211.c mac80211: allow configure_filter callback to sleep 2009-08-20 11:35:58 -04:00
adm8211.h
airo_cs.c
airo.c wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
airo.h
arlan-main.c wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
arlan-proc.c sysctl: remove "struct file *" argument of ->proc_handler 2009-09-24 07:21:04 -07:00
arlan.h
at76c50x-usb.c mac80211: remove deprecated API 2009-08-20 11:35:58 -04:00
at76c50x-usb.h
atmel_cs.c
atmel_pci.c
atmel.c trivial: fix typos "man[ae]g?ment" -> "management" 2009-09-21 15:14:56 +02:00
atmel.h
i82586.h
i82593.h
Kconfig wext: refactor 2009-10-07 16:39:43 -04:00
mac80211_hwsim.c mac80211_hwsim: Fix initial beacon timer configuration 2009-09-29 17:25:16 -04:00
Makefile
mwl8k.c mwl8k: separate driver and device info reporting during probe 2009-08-28 14:40:42 -04:00
netwave_cs.c wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
ray_cs.c wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: fix sparse endianess warnings 2009-09-01 12:48:22 -04:00
strip.c wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
wavelan_cs.c wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
wavelan_cs.h
wavelan_cs.p.h wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
wavelan.c wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
wavelan.h
wavelan.p.h wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
wl3501_cs.c wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
wl3501.h
zd1201.c wireless: convert drivers to netdev_tx_t 2009-09-01 01:14:04 -07:00
zd1201.h