1.06.2011

2.6.37カーネルのaptosidで、Broadcomの無線LANを使う。

aptosidのカーネルを 2.6.37-0.slh.1-aptosid-686 にしてから、その以前のバージョンで使えていたこのサイトで配布している Broadcom の無線LANドライバ(カーネルモジュール)が使えなくなってしまいました。

ちょろっと調べてみた感じだと、2.6.37カーネルのsemaphore.hヘッダから、init_MUTEXマクロが削除されたのが原因の様子。

このマクロはsema_init関数を特定の引数で呼び出すものなので、いくつか解決策が考えられそうです。
例えば、ヘッダー側に手を入れてinit_MUTEXマクロを追加しちゃうというのもひとつの手だと思いますし、ドライバ側のコードにマクロを追加するとか、コードを書き換えて対処するのも手でしょう。

僕は、次のようなパッチを作って対処しました。

--- src/wl/sys/wl_linux.c 2011-01-06 23:36:18.479934890 +0900
+++ src/wl/sys/wl_linux.c.org 2011-01-06 23:34:50.475934890 +0900
@@ -482,7 +482,7 @@
 #ifdef WL_ALL_PASSIVE
   spin_lock_init(&wl->txq_lock);
 #endif 
-  sema_init(&wl->sem, 1);
+  init_MUTEX(&wl->sem);
  }
 
  if (!(wl->wlc = wlc_attach((void *) wl, vendor, device, unit, wl->piomode,

Makefileの置いてあるディレクトリにこのパッチを配置してパッチを当てれば、一応makeが通るようになります。
あとはREADMEの通り。
MODULE_LICENSEマクロが実装されていない警告が出るけれども、とりあえず動作上は問題なし。

※このパッチもライセンス的にグレーかも知れません。(元のをよく読んでいないので。)ご利用は自己責任でお願いします。

0 件のコメント: