我有一台笔记本电脑,其中装有Intel Corporation Centrino Advanced-N 6205 [Taylor Peak] (rev 34)
(使用iwlwifi
内核模块)。尽管power_save
(模块参数)已禁用,但我可以看到 802.11 控制帧包含电源管理数据包,通知接入点它将要进入睡眠状态。接入点停止向笔记本电脑发送数据包,直到它看到笔记本电脑发出的另一个数据包。
我如何才能真正阻止笔记本电脑向接入点发送省电数据包?(或者,我如何才能阻止接入点遵守这些数据包?)
我确定power_save
它已被禁用,因为当我启用它时,省电数据包会更频繁地发送(几乎每秒一次)。
接入点正在运行驱动hostapd
程序ath9k
。接入点和笔记本电脑都运行带有 686-pae 3.2 内核的 debian wheezy。我尝试将 3.10 iwlwifi 驱动程序放在笔记本电脑上,但没有任何变化。
编辑:我尝试过另一台采用其他iwlwifi
芯片组的笔记本电脑Intel Corporation Centrino Ultimate-N 6300 (rev 35)
,它并没有出现这个问题。每个省电数据包后面都有一个非省电 QoS 空数据包,因此接入点可能会在几分之一秒内停止发送数据包。
编辑:我尝试在第一台笔记本电脑上安装另一张 mini PCIe wifi 卡,但它似乎被锁定了,因此操作系统无法检测到另一张 mini PCIe 卡。
答案1
我查看了 iwlwifi 的源代码。在标题中iwl-modparams.h有一段代码:
* struct iwl_mod_params
*
* Holds the module parameters
*
* @sw_crypto: using hardware encryption, default = 0
* @disable_11n: disable 11n capabilities, default = 0,
* use IWL_DISABLE_HT_* constants
* @amsdu_size_8K: enable 8K amsdu size, default = 0
* @restart_fw: restart firmware, default = 1
* @wd_disable: enable stuck queue check, default = 0
* @bt_coex_active: enable bt coex, default = true
* @led_mode: system default, default = 0
* @power_save: disable power save, default = false
* @power_level: power level, default = 1
* @debug_level: levels are IWL_DL_*
* @ant_coupling: antenna coupling in dB, default = 0
*/
这表明,禁用省电的正确方法是
insmod iwlwifi power_save=true
这与 modinfo 的输出完全相反。我会尝试一下。
答案2
模块iwlwifi
使用iwlmvm
模块进行固件处理。
您需要设置此项以进行省电控制。您需要设置
options iwlmvm power_scheme=1