ThinkPad X61 無線LANの省電力モード

気温があがってきて、ThinkPad X61パームレストも熱くなる季節になってきました。
以前は http://blog.tmtm.org/tommy/?date=20081006#p01 にあるような設定で、無線LANを省電力化できたのですが、最近は、iwconfig wlan0 power on とやればいいようです。
ところが、X61 ではこれは効きません。

# iwconfig wlan0 power on
Error for wireless request "Set Power Management" (8B2C) :
    SET failed on device wlan0 ; Operation not supported.

どうやら iwlagn の省電力機構に問題があるようで無効にされているようです。
https://bugs.launchpad.net/ubuntu/+bug/367121

とは言っても熱くてかなわんので、無効にしてあるのを無効にしました。

$ mkdir /tmp/x
$ cd /tmp/x
$ apt-get source linux-backports-modules-wireless-2.6.32-22-generic-pae
$ cd linux-backports-modules-2.6.32-2.6.32
$ vi updates/compat-wireless-2.6/drivers/net/wireless/iwlwifi/iwl-4965.c
2239行目の .broken_powersave = true を false に変更。
$ dpkg-buildpackage -d -rfakeroot -us -uc
...
$ cd ..
$ sudo dpkg -i linux-backports-modules-wireless-2.6.32-22-generic-pae_2.6.32-22.13_i386.deb

リブート後に「iwconfig wlan0 power on」すると、エラーにならず、「Power Management:on」となり、ちゃんと動いているようです。

% sudo iwconfig wlan0 power on
% iwconfig wlan0
wlan0     IEEE 802.11abgn  ESSID:"xxxxxxxxxxxx"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: xx:xx:xx:xx:xx:xx   
          Bit Rate=1 Mb/s   Tx-Power=15 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=60/70  Signal level=-50 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

ちゃんと測ったわけではないですが、パームレストの熱さもマシになったようです。

deb パッケージの作り方には詳しくないので、変なことしてるかもしれません。あと、何か不具合があって機能を無効にしてあったものなので、有効にすることで何か問題が起きるかもしれません。