[PC周辺] Linux 2.6.27-rc4 git 20080825版 + ipw3945-source 1.2.2-1 (20080826)

という組合せで,ipw3945.ko が compile できないという問題.つまり,

% sudo module-assistant build ipw3945-source

で,.deb ができないという問題.で,調べてみた.

/usr/src/modules/ipw3945/ipw3945.c: In function 'ipw_start_association':
/usr/src/modules/ipw3945/ipw3945.c:4459: error: implicit declaration of function 'ieee80211_tx_frame'

という感じで remove ieee80211_tx_frame() という変更のため、文字通り ieee80211_tx_frame が無くなってしまったのが原因。

ということで

/usr/src/linux-source-2.6.25/net/ieee80211/ieee80211_tx.c

から

static struct ieee80211_txb *ieee80211_alloc_txb(...){...}
static int ieee80211_encrypt_fragment(...){...}
int ieee80211_tx_frame(...){...}

を ipw3945.c の適当な部分に copy。あと、

/usr/src/modules/ipw3945/Makefile

から

/usr/src/modules/ipw3945/snapshot/check_ieee80211_compat

という script で API の version を調べて -DIPW3945_COMPAT=1 とかしている(なってしまう)ようなので、

#if IPW3945_COMPAT >= 2
			rc = ieee80211_tx_frame(priv->ieee,
						&priv->assoc_sequence_frame->u.
						frame, 0,
						priv->assoc_sequence_frame->len,
						0);
#else
			rc = ieee80211_tx_frame(priv->ieee,
						&priv->assoc_sequence_frame->u.
						frame,
						priv->assoc_sequence_frame->
						len);
#endif

の箇所で、引数の数がおかしいと言われてコケる。 ということで無理矢理 -DIPW3945_COMPAT=2 を渡す (Makefile を修正するか、check_ieee80211_compat で echo 2 する)。

以下、自分用メモ。

% cd /usr/src/modules/ipw3945/
% sudo make -f debian/rules KVERS=`uname -r` KSRC=/usr/src/linux-headers-`uname -r` KDREV=0.1 binary-modules

で原因を探る([myn:2007090900])。

関連リンク


Last-modified: Thu Oct 23 22:36:06 +0900 2008

全インデックス