YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-03-20 (水)


[一語一絵]

さむっ / 2009-12-18 (金)

さむっ
さむっ

博多でも初雪を観測です

まだまだ、ちらほら程度ですが

お〜さむさむ


[一語一絵/IT系]

madwifi@2.6.30 / 2009-12-18 (金)

昨日のGW-US54GXS@2.6.30の続報。

[External]www.ring.gr.jpよりダウンロードした[External]linux-2.6.30.tar.bz2に乗り換える事で[External]GW-US54GXSは使えるようになったが、今度はAtherosのWiFiデバイスが使えなくなった

これまで[External]madwifiを別途インストールせねばならなかったところ、2.6.30にはath5kが組み込まれているので「楽勝」と思っていたのだが、こいつがwpa_supplicant起動時に

ioctl[SIOCSIWAUTH]: Operation not supported
を吐いてしまい、WPA使えないという大誤算。

やっぱり[External]madwifiか…とrebuildしたら、net_deviceの構造体に変更があったらしくエラーの山が出たので、やむなく地道に手直し。本流に盛り込まれたtypedef irqreturn_tをif_athvar.hから除外し、逆に無くなった"__skb_append"ieee80211_var.hに追加。

…だけかと思ったら、164箇所の"dev->priv""netdev_priv(dev)"に置き換えるのが作業の中心で、差分が多くなったので全容はmadwifi-0.9.4-linux-2.6.30.patchに上げて、ここでは一部抜粋に留めておく。

*** madwifi-0.9.4.orig/ath/if_athvar.h  2008-02-12 15:05:28.000000000 +0900
--- madwifi-0.9.4/ath/if_athvar.h       2009-12-19 20:17:28.000000000 +0900
***************
*** 94,104 ****
  /*
   * Guess how the interrupt handler should work.
   */
! #if !defined(IRQ_NONE)
  typedef void irqreturn_t;
  #define       IRQ_NONE
  #define       IRQ_HANDLED
! #endif /* !defined(IRQ_NONE) */
  
  #ifndef SET_MODULE_OWNER
  #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
--- 94,111 ----
  /*
   * Guess how the interrupt handler should work.
   */
! #if !defined(_LINUX_IRQRETURN_H)
  typedef void irqreturn_t;
  #define       IRQ_NONE
  #define       IRQ_HANDLED
! #endif /* !defined(_LINUX_IRQRETURN_H) */
!
! #if !defined(HAVE_NETDEV_PRIV)
! static inline void *netdev_priv(const struct net_device *dev)
! {
!       return (dev->priv);
! }
! #endif /* !defined(HAVE_NETDEV_PRIV) */
  
  #ifndef SET_MODULE_OWNER
  #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
*** madwifi-0.9.4.orig/net80211/ieee80211_var.h 2007-12-25 12:15:19.000000000 +0900
--- madwifi-0.9.4/net80211/ieee80211_var.h      2009-12-19 22:05:12.000000000 +0900
***************
*** 695,698 ****
--- 695,705 ----
  #define       IEEE80211_NOTE_MAC(_vap, _m, _mac, _fmt, ...)
  #endif /* IEEE80211_DEBUG */
  
+ #if KERNEL_VERSION(2,6,25) < LINUX_VERSION_CODE
+ static inline void __skb_append(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list)
+ {
+       __skb_insert(newsk, old, old->next, list);
+ }
+ #endif /* KERNEL_VERSION(2,6,25) < LINUX_VERSION_CODE */
+
  #endif /* _NET80211_IEEE80211_VAR_H_ */
*** madwifi-0.9.4.orig/include/compat.h 2007-12-13 13:07:54.000000000 +0900
--- madwifi-0.9.4/include/compat.h      2009-12-19 14:50:45.000000000 +0900
***************
*** 134,140 ****
  #define IRQF_SHARED SA_SHIRQ
  #endif
  
! #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
  #include <linux/skbuff.h>
  static inline unsigned char *skb_end_pointer(const struct sk_buff *skb)
  {
--- 134,150 ----
  #define IRQF_SHARED SA_SHIRQ
  #endif
  
! #if KERNEL_VERSION(2,6,22) <= LINUX_VERSION_CODE
! #define       HAVE_SKB_END_POINTER
! #endif /* KERNEL_VERSION(2,6,22) <= LINUX_VERSION_CODE */
!
! #if !defined(HAVE_SKB_END_POINTER) && defined(RHEL_RELEASE_CODE)
! #if RHEL_RELEASE_VERSION(5,2) < RHEL_RELEASE_CODE
! #define       HAVE_SKB_END_POINTER
! #endif /* RHEL_RELEASE_VERSION */
! #endif /* defined(RHEL_RELEASE_CODE) */
!
! #if !defined(HAVE_SKB_END_POINTER)
  #include <linux/skbuff.h>
  static inline unsigned char *skb_end_pointer(const struct sk_buff *skb)
  {

madwifiをインストールしたあと、ath5kがロードされないよう/etc/modprobe.d/blacklist

# Atheros WiFi AR52xx ath5k->madwifi
blacklist ath5k
を追記してreboot。…したものの、ath0はアップせず。

/var/log/messagesを診たら

localhost kernel: ath_hal: module license 'Proprietary' taints kernel.
localhost kernel: ath_hal: 0.9.18.0 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
localhost kernel: ath_pci: 0.9.4
localhost kernel: ath_pci 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
localhost kernel: Unable to load needed module: ath_rate_sample; no support for automatic module loading<3>Error loading module "ath_rate_sample"
localhost kernel: ath_pci 0000:03:00.0: PCI INT A disabled
というエラーを吐いており、こちらも残念な感じ。トホホ。

【追記】2.6.28以前のkernelならmadwifi-0.9.4でOK。

【参照】
●SourceForge.net: MADWIFI http://sourceforge.net/projects/madwifi/
●Amazon.co.jp http://www.amazon.co.jp/
PLANEX ドラクエもモンハンもWi-Fi通信するならこれ! IEEE802.11b+g WLAN USBアダプタ GW-US54GXS 1,060円