真正禁用 Linux wifi 中的省电功能

真正禁用 Linux wifi 中的省电功能

我有一台笔记本电脑,其中装有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

相关内容