Red Hat Linux 9.0与Tp-link 550G组建无线局域网的一种解决方案

Red Hat Linux 9.0与Tp-link 550G组建无线局域网的一种解决方案

  这两天根据实验室需要,一直在不停的找linux下面可用的无线网卡,也曾经GOOGLE了不少资料。但是这些资料看起来很多,但是实际上符合我的需求的可以说很少,主要有以下几个问题:

  一、大多是讲使用ndis wrapper的方式。这种方法对于内核版本2.4.20的好像有困难,对于其windows xp的驱动也不是100%可用。而RH 9.0恰恰用的是2.4.20,如果再需要换内核就比较麻烦了。最好是拿驱动编出模块来直接加载就能用。

  二、所讲的无线网卡多是PCMICA、USB的,对于标准PCI的讲的相对较少。

  三、 所讲的无线网卡在市场上不一定好买,比如说对于现在卖的较多的TP-link、D-Link的网卡,很难明确的找到是否可用的回答,往往回答都很含混。

  鉴于以上分析,我试用了madwifi的驱动(见论坛其它帖子里我的分析),使用了当前最好买也最便宜(当然假货也最多)的Tp-link 550G 802.11G网卡。这个网卡是标准PCI的,带tp-link的域展功能,是TP-link 802.11g的代表产品。之所以用tp-link主要是因为它便宜,也好买。

  下面我的讲述就不做什么分析了,完全按我实现的步骤。

  一、 在硅谷我一个做电脑生意的朋友处拿了个tp-link 541G的路由器,又拿了一个550G的无线网卡。550G只有“域展”(哟蟠?渚嗬耄?懦剖彝饪纱?00米,没有亲自试过)没有“速展”(最高速率做到了108Mb/s,而且与标准的54M设备兼容)。本来我是打算拿650G的网卡,因为650G是两者都有的新产品。但是人家说650G出货少,万一我试不成厂家那里不好退货。也不好强求所以就作罢了。550G也不错了。

  二、拿回来之后先调AP。先简单说一下我们现在的网络环境。我们就一个屋,20多台机器,从上面交换机接下来一根100M的对外的LAN线,交换机上分的子网是159.226.204.0/255.255.255.0.,网关159.226.204.199,然后是多个HUB一级一级的往下分。

  三、 AP的安装还是比较简单的。找个HUB口,把AP四个LAN口之一与HUB相连。找一台笔记本也接到这HUB上,改笔记本的IP为192.168.1.250/255.255.255.0,打开浏览器访问AP http://191.268.1.1:80,在这个WEB界面里先设AP的IP为159.226.204.250,设essid为wifiap,设WEB加密方式,128位共享口令wifi000000001(13位ASCII码)。设完后重启,找了个迅驰笔记本进windows先测试AP,可以连上没问题。

  四、 下面讲关键的无线网卡的配置。找台装好了windows xp和redhat 9.0双系统的机器,拆机箱把原来的LAN网卡拿掉,换上550G。

  五、开机先进windows,直接提示找到硬件。在随卡的驱动盘上找550G/650G的目录搜索驱动,(安装后好像是不用重启)。然后还在装TP-link的管理工具,在我的电脑里找光盘上550G/650G的目录,就一个setup.exe装完即可。搜索网络找到AP(记住essid为wifiap),填入密码就可以上网了。对于IP的设置也是一样。总之在windows下的安装很简单,说明书讲的很详细了。

  六、重启进red hat 9.0。启动过程中提示原来网卡找不到了,不用理会。先检查/usr/src/linuc下有没有源代码,如果没有就用rpm –hvi kernel-source-2.4.20-8.rpm(好像在第3张盘)装上。

  七、准备源代码目录:


# cd /usr/src/linux
# make menuconfig     // 在对话框出现后直接选exit,然后保存配置即可
# vi Makefile       // 找到版本号处的“EXTRAVERSION=8-custom”,改成“EXTRAVERSION=8”
# make dep       //注意只需make dep,不需make

  八、在http://madwifi.sourceforge.net下载最新的源代码包madwifi-cvs-current.tar.gz.

  九、编译安装驱动:


# tar zxvf madwifi-cvs-current.tar.gz
# cd madwifi
# make KERNELPATH=/usr/src/linux
# make install
# /sbin/modprobe ath_pci

以上各步都可能出问题,使用你的智慧和经验去解决吧。


# dmesg

成功配置后,在dmesg里最后的输出应该可以看到550G的信息。

  十、此时/sbin/ifconfig只能看到一个lo接口。


# /sbin/ifconfig ath0 159.226.204.197 netmask 255.255.255.0

上面一句配置接口ath0的属性。接口是建立起来了,但是是不通的。需要用iwconfig配置无线参数。


# /sbin/iwconfig ath0 essid “wifiap” mode managed key “s:wifi000000001” rate auto

然后用iwconfig应该可以看到网卡成功的连接,速率应该是54M. 这时ping ap应该可以ping通:


# ping 159.226.204.250

但是上外网还不行。因为路由没有配置。加一句默认路由:


# route add default gw 159.226.204.199

这时就可以上外网了。


# lynx www.google.com

  十一、配置成功之后,可以改系统配置使之重启机器能够自动生效。


# cd /etc/sysconfig/network-scripts
# cp ifcfg-eth0 ifcfg-ath0
# vi ifcfg-eth0   //把首部的ONBOOT=yes改成ONBOOT=no
# vi ifcfg-ath0   //把首部的DEVICE=eth0改成DEVICE=ath0
# vi etc/sysconfig/hwconfig //拷贝一段PCI的设备,把driver改成ath_pci,desc任意改。
# vi /etc/rc.d/rc.local // 最后加一句/sbin/iwconfig ath0 essid “wifiap” mode managed key “s:wifi000000001” rate auto

  十二、 重启动机器,再测试。All things done.


  以上是我建立无线AP和在linux下使用无线网卡的全过程,总之还算是比较简单的。这个madwifi驱动适用于几乎所有Atheros芯片的网卡(注意只支持PCI、mini PCI、pcmica的,不支持USB的),内核2.4、2.6都可以,也就是说从red hat7.3就可以用,而且不用重编内核。希望能对在linux下使用无线的人一点参考。
# make KERNELPATH=/usr/src/linux-2.4.20-8   我的机器没有linux文件夹,只有linux-2.4.20-8
运行命令结束后得到:
if_ath.c:4101: invalid suffix on integer constant
if_ath.c:4101: warning: null format string
if_ath.c:4101: called object is not a function
if_ath.c:4149: invalid suffix on integer constant
if_ath.c:4149: warning: null format string
if_ath.c:4149: called object is not a function
if_ath.c: In function `ath_beacon_send':
if_ath.c:4235: invalid suffix on integer constant
if_ath.c:4235: warning: null format string
if_ath.c:4235: called object is not a function
if_ath.c:4243: invalid suffix on integer constant
if_ath.c:4243: warning: null format string
if_ath.c:4243: called object is not a function
if_ath.c:4265: invalid suffix on integer constant
if_ath.c:4265: warning: null format string
if_ath.c:4265: called object is not a function
if_ath.c:4334: invalid suffix on integer constant
if_ath.c:4334: warning: null format string
if_ath.c:4334: called object is not a function
if_ath.c:4349: invalid suffix on integer constant
if_ath.c:4349: warning: null format string
if_ath.c:4349: called object is not a function
if_ath.c: In function `ath_bstuck_tasklet':
if_ath.c:4377: invalid suffix on integer constant
if_ath.c:4377: warning: null format string
if_ath.c:4378: called object is not a function
if_ath.c: In function `ath_beacon_start_adhoc':
if_ath.c:4399: invalid suffix on integer constant
if_ath.c:4399: warning: null format string
if_ath.c:4399: called object is not a function
if_ath.c:4431: invalid suffix on integer constant
if_ath.c:4431: warning: null format string
if_ath.c:4431: called object is not a function
if_ath.c: In function `ath_beacon_config':
if_ath.c:4530: invalid suffix on integer constant
if_ath.c:4530: warning: null format string
if_ath.c:4530: called object is not a function
if_ath.c:4627: invalid suffix on integer constant
if_ath.c:4627: warning: null format string
if_ath.c:4627: called object is not a function
if_ath.c:4629: invalid suffix on integer constant
if_ath.c: In function `ath_descdma_setup':
if_ath.c:4691: invalid suffix on integer constant
if_ath.c:4691: warning: null format string
if_ath.c:4691: called object is not a function
if_ath.c:4706: invalid suffix on integer constant
if_ath.c:4706: warning: null format string
if_ath.c:4706: called object is not a function
if_ath.c:4710: invalid suffix on integer constant
if_ath.c:4710: called object is not a function
if_ath.c: In function `ath_descdma_cleanup':
if_ath.c:4768: invalid suffix on integer constant
if_ath.c:4768: called object is not a function
if_ath.c: In function `ath_node_alloc':
if_ath.c:4824: invalid suffix on integer constant
if_ath.c:4824: called object is not a function
if_ath.c:4847: invalid suffix on integer constant
if_ath.c:4847: warning: null format string
if_ath.c:4847: called object is not a function
if_ath.c: In function `ath_rxbuf_init':
if_ath.c:5318: invalid suffix on integer constant
if_ath.c:5318: warning: null format string
if_ath.c:5318: called object is not a function
if_ath.c:5342: invalid suffix on integer constant
if_ath.c:5342: warning: null format string
if_ath.c:5342: called object is not a function
if_ath.c: In function `ath_rx_capture':
if_ath.c:5419: invalid suffix on integer constant
if_ath.c:5419: warning: null format string
if_ath.c:5419: called object is not a function
if_ath.c: In function `ath_tx_capture':
if_ath.c:5466: invalid suffix on integer constant
if_ath.c:5466: warning: null format string
if_ath.c:5466: called object is not a function
if_ath.c:5486: invalid suffix on integer constant
if_ath.c:5486: warning: null format string
if_ath.c:5486: called object is not a function
if_ath.c: In function `ath_recv_mgmt':
if_ath.c:5545: invalid suffix on integer constant
if_ath.c:5545: warning: null format string
if_ath.c:5545: called object is not a function
if_ath.c: In function `ath_rx_tasklet':
if_ath.c:5586: invalid suffix on integer constant
if_ath.c:5586: warning: null format string
if_ath.c:5586: called object is not a function
if_ath.c:5590: invalid suffix on integer constant
if_ath.c:5590: warning: null format string
if_ath.c:5590: called object is not a function
if_ath.c:5612: invalid suffix on integer constant
if_ath.c:5612: warning: null format string
if_ath.c:5612: called object is not a function
if_ath.c:5758: invalid suffix on integer constant
if_ath.c:5758: warning: null format string
if_ath.c:5758: called object is not a function
if_ath.c:5846: invalid suffix on integer constant
if_ath.c:5861: invalid suffix on integer constant
if_ath.c:5861: called object is not a function
if_ath.c: In function `ath_grppoll_txq_setup':
if_ath.c:5980: invalid suffix on integer constant
if_ath.c:5980: warning: null format string
if_ath.c:5981: called object is not a function
if_ath.c: In function `ath_grppoll_start':
if_ath.c:6053: invalid suffix on integer constant
if_ath.c:6053: called object is not a function
if_ath.c:6060: invalid suffix on integer constant
if_ath.c:6060: called object is not a function
if_ath.c:6064: invalid suffix on integer constant
if_ath.c:6064: warning: null format string
if_ath.c:6064: called object is not a function
if_ath.c:6142: invalid suffix on integer constant
if_ath.c:6142: warning: null format string
if_ath.c:6142: called object is not a function
if_ath.c:6148: invalid suffix on integer constant
if_ath.c:6148: warning: null format string
if_ath.c:6148: called object is not a function
if_ath.c: In function `ath_txq_setup':
if_ath.c:6343: invalid suffix on integer constant
if_ath.c:6343: warning: null format string
if_ath.c:6344: called object is not a function
if_ath.c: In function `ath_tx_setup':
if_ath.c:6390: invalid suffix on integer constant
if_ath.c:6390: warning: null format string
if_ath.c:6391: called object is not a function
if_ath.c: In function `ath_txq_update':
if_ath.c:6423: invalid suffix on integer constant
if_ath.c:6423: warning: null format string
if_ath.c:6425: called object is not a function
if_ath.c: In function `ath_tx_uapsdqueue':
if_ath.c:6584: invalid suffix on integer constant
if_ath.c:6584: warning: null format string
if_ath.c:6584: called object is not a function
if_ath.c:6604: invalid suffix on integer constant
if_ath.c:6604: warning: null format string
if_ath.c:6604: called object is not a function
if_ath.c:6632: invalid suffix on integer constant
if_ath.c:6632: warning: null format string
if_ath.c:6632: called object is not a function
if_ath.c:6646: invalid suffix on integer constant
if_ath.c:6646: warning: null format string
if_ath.c:6646: called object is not a function
if_ath.c: In function `ath_tx_start':
if_ath.c:6775: invalid suffix on integer constant
if_ath.c:6775: warning: null format string
if_ath.c:6775: called object is not a function
if_ath.c:6781: invalid suffix on integer constant
if_ath.c:6781: warning: null format string
if_ath.c:6781: called object is not a function
if_ath.c:6799: invalid suffix on integer constant
if_ath.c:6799: warning: null format string
if_ath.c:6799: called object is not a function
if_ath.c:6903: invalid suffix on integer constant
if_ath.c:6903: warning: null format string
if_ath.c:6904: called object is not a function
if_ath.c:7033: invalid suffix on integer constant
if_ath.c:7033: warning: null format string
if_ath.c:7033: called object is not a function
if_ath.c:7121: invalid suffix on integer constant
if_ath.c:7121: warning: null format string
if_ath.c:7122: called object is not a function
if_ath.c:7131: invalid suffix on integer constant
if_ath.c:7131: warning: null format string
if_ath.c:7131: called object is not a function
if_ath.c:7208: invalid suffix on integer constant
if_ath.c:7208: warning: null format string
if_ath.c:7208: called object is not a function
if_ath.c:7228: invalid suffix on integer constant
if_ath.c:7228: warning: null format string
if_ath.c:7228: called object is not a function
if_ath.c:7237: invalid suffix on integer constant
if_ath.c:7237: warning: null format string
if_ath.c:7237: called object is not a function
if_ath.c: In function `ath_tx_processq':
if_ath.c:7276: invalid suffix on integer constant
if_ath.c:7276: warning: null format string
if_ath.c:7276: called object is not a function
if_ath.c:7279: invalid suffix on integer constant
if_ath.c:7279: warning: null format string
if_ath.c:7279: called object is not a function
if_ath.c:7302: invalid suffix on integer constant
if_ath.c:7302: warning: null format string
if_ath.c:7302: called object is not a function
if_ath.c:7357: invalid suffix on integer constant
if_ath.c:7357: warning: null format string
if_ath.c:7357: called object is not a function
if_ath.c:7394: invalid suffix on integer constant
if_ath.c:7394: warning: null format string
if_ath.c:7394: called object is not a function
if_ath.c:7397: invalid suffix on integer constant
if_ath.c:7397: warning: null format string
if_ath.c:7397: called object is not a function
if_ath.c:7413: invalid suffix on integer constant
if_ath.c:7413: warning: null format string
if_ath.c:7413: called object is not a function
if_ath.c:7417: invalid suffix on integer constant
if_ath.c:7417: warning: null format string
if_ath.c:7417: called object is not a function
if_ath.c:7433: invalid suffix on integer constant
if_ath.c:7433: warning: null format string
if_ath.c:7433: called object is not a function
if_ath.c:7441: invalid suffix on integer constant
if_ath.c:7441: warning: null format string
if_ath.c:7441: called object is not a function
if_ath.c:7462: invalid suffix on integer constant
if_ath.c:7462: warning: null format string
if_ath.c:7462: called object is not a function
if_ath.c: In function `ath_tx_timeout':
if_ath.c:7578: invalid suffix on integer constant
if_ath.c:7578: warning: null format string
if_ath.c:7578: called object is not a function
if_ath.c: In function `ath_tx_stopdma':
if_ath.c:7652: invalid suffix on integer constant
if_ath.c:7652: warning: null format string
if_ath.c:7652: called object is not a function
if_ath.c: In function `ath_draintxq':
if_ath.c:7668: invalid suffix on integer constant
if_ath.c:7668: warning: null format string
if_ath.c:7668: called object is not a function
if_ath.c:7673: invalid suffix on integer constant
if_ath.c: In function `ath_stoprecv':
if_ath.c:7695: `eae3dfd6' undeclared (first use in this function)
if_ath.c:7695: called object is not a function
if_ath.c:7695: invalid suffix on floating constant
if_ath.c:7695: called object is not a function
if_ath.c:7695: called object is not a function
if_ath.c:7695: invalid suffix on floating constant
if_ath.c:7695: called object is not a function
if_ath.c:7701: invalid suffix on integer constant
if_ath.c:7701: warning: null format string
if_ath.c:7702: called object is not a function
if_ath.c: In function `ath_startrecv':
if_ath.c:7738: invalid suffix on integer constant
if_ath.c:7738: warning: null format string
if_ath.c:7738: called object is not a function
if_ath.c: In function `ath_chan_set':
if_ath.c:7827: invalid suffix on integer constant
if_ath.c:7827: warning: null format string
if_ath.c:7827: called object is not a function
if_ath.c:7833: invalid suffix on integer constant
if_ath.c:7833: warning: null format string
if_ath.c:7833: called object is not a function
if_ath.c:7859: invalid suffix on integer constant
if_ath.c:7859: warning: null format string
if_ath.c:7864: called object is not a function
if_ath.c:7874: invalid suffix on integer constant
if_ath.c:7874: warning: null format string
if_ath.c:7874: called object is not a function
if_ath.c:7884: invalid suffix on integer constant
if_ath.c:7884: warning: null format string
if_ath.c:7885: called object is not a function
if_ath.c:7900: `fc62f16d' undeclared (first use in this function)
if_ath.c:7900: called object is not a function
if_ath.c:7902: invalid suffix on integer constant
if_ath.c:7902: warning: null format string
if_ath.c:7902: called object is not a function
if_ath.c:7906: invalid suffix on integer constant
if_ath.c:7908: `a19eacf8' undeclared (first use in this function)
if_ath.c:7908: called object is not a function
if_ath.c:7912: invalid suffix on integer constant
if_ath.c:7912: invalid suffix on integer constant
if_ath.c:7912: called object is not a function
if_ath.c: In function `ath_calibrate':
if_ath.c:7947: invalid suffix on integer constant
if_ath.c:7947: warning: null format string
if_ath.c:7947: called object is not a function
if_ath.c:7960: invalid suffix on integer constant
if_ath.c:7960: warning: null format string
if_ath.c:7960: called object is not a function
if_ath.c:7964: invalid suffix on integer constant
if_ath.c:7964: called object is not a function
if_ath.c:7966: invalid suffix on integer constant
if_ath.c:7966: warning: null format string
if_ath.c:7966: called object is not a function
if_ath.c:7987: invalid suffix on integer constant
if_ath.c:7987: called object is not a function
if_ath.c:7995: invalid suffix on integer constant
if_ath.c:7996: `a19eacf8' undeclared (first use in this function)
if_ath.c:7996: called object is not a function
if_ath.c: In function `ath_scan_start':
if_ath.c:8016: invalid suffix on integer constant
if_ath.c:8016: warning: null format string
if_ath.c:8016: called object is not a function
if_ath.c: In function `ath_scan_end':
if_ath.c:8034: invalid suffix on integer constant
if_ath.c:8034: warning: null format string
if_ath.c:8034: called object is not a function
if_ath.c: In function `ath_newstate':
if_ath.c:8098: invalid suffix on integer constant
if_ath.c:8098: warning: null format string
if_ath.c:8098: called object is not a function
if_ath.c:8100: `fc62f16d' undeclared (first use in this function)
if_ath.c:8100: called object is not a function
if_ath.c:8141: invalid suffix on integer constant
if_ath.c:8141: warning: null format string
if_ath.c:8141: called object is not a function
if_ath.c:8171: invalid suffix on integer constant
if_ath.c:8171: warning: null format string
if_ath.c:8171: called object is not a function
if_ath.c:8280: invalid suffix on integer constant
if_ath.c:8280: warning: null format string
if_ath.c:8280: called object is not a function
if_ath.c:8288: called object is not a function
if_ath.c:8291: invalid suffix on integer constant
if_ath.c:8291: warning: null format string
if_ath.c:8291: called object is not a function
if_ath.c:8316: invalid suffix on integer constant
if_ath.c:8316: invalid suffix on integer constant
if_ath.c:8316: called object is not a function
if_ath.c: In function `ath_check_dfs_clear':
if_ath.c:8373: invalid suffix on integer constant
if_ath.c:8373: warning: null format string
if_ath.c:8373: called object is not a function
if_ath.c:8376: invalid suffix on integer constant
if_ath.c:8376: invalid suffix on integer constant
if_ath.c:8376: called object is not a function
if_ath.c:8392: invalid suffix on integer constant
if_ath.c:8394: `a19eacf8' undeclared (first use in this function)
if_ath.c:8394: called object is not a function
if_ath.c: In function `ath_setup_stationwepkey':
if_ath.c:8515: invalid suffix on integer constant
if_ath.c:8515: warning: null format string
if_ath.c:8515: called object is not a function
if_ath.c:8517: invalid suffix on integer constant
if_ath.c:8517: warning: null format string
if_ath.c:8517: called object is not a function
if_ath.c: In function `ath_setup_keycacheslot':
if_ath.c:8610: invalid suffix on integer constant
if_ath.c:8610: warning: null format string
if_ath.c:8610: called object is not a function
if_ath.c: In function `ath_getchannels':
if_ath.c:8669: invalid suffix on integer constant
if_ath.c:8669: called object is not a function
if_ath.c:8671: invalid suffix on integer constant
if_ath.c:8671: warning: null format string
if_ath.c:8671: called object is not a function
if_ath.c:8680: invalid suffix on integer constant
if_ath.c:8680: warning: null format string
if_ath.c:8682: called object is not a function
if_ath.c:8683: invalid suffix on integer constant
if_ath.c:8683: called object is not a function
if_ath.c:8701: invalid suffix on integer constant
if_ath.c:8701: called object is not a function
if_ath.c: In function `ath_led_off':
if_ath.c:8724: invalid suffix on integer constant
if_ath.c:8725: `a19eacf8' undeclared (first use in this function)
if_ath.c:8725: called object is not a function
if_ath.c: In function `ath_led_blink':
if_ath.c:8734: invalid suffix on integer constant
if_ath.c:8734: warning: null format string
if_ath.c:8734: called object is not a function
if_ath.c:8739: invalid suffix on integer constant
if_ath.c:8740: `a19eacf8' undeclared (first use in this function)
if_ath.c:8740: called object is not a function
if_ath.c: At top level:
if_ath.c:8744: invalid suffix on integer constant
if_ath.c:8744: parse error before numeric constant
if_ath.c:8744: warning: function declaration isn't a prototype
if_ath.c:8745: conflicting types for `ath_led_event'
if_ath.c:222: previous declaration of `ath_led_event'
if_ath.c: In function `ath_led_event':
if_ath.c:8747: invalid suffix on integer constant
if_ath.c:8750: invalid suffix on integer constant
if_ath.c: In function `ath_xr_rate_setup':
if_ath.c:8845: invalid suffix on integer constant
if_ath.c:8845: warning: null format string
if_ath.c:8845: called object is not a function
if_ath.c: In function `ath_setup_subrates':
if_ath.c:8874: invalid suffix on integer constant
if_ath.c:8874: warning: null format string
if_ath.c:8874: called object is not a function
if_ath.c:8890: invalid suffix on integer constant
if_ath.c:8890: warning: null format string
if_ath.c:8890: called object is not a function
if_ath.c: In function `ath_rate_setup':
if_ath.c:8929: invalid suffix on integer constant
if_ath.c:8929: warning: null format string
if_ath.c:8929: called object is not a function
if_ath.c:8938: invalid suffix on integer constant
if_ath.c:8938: warning: null format string
if_ath.c:8938: called object is not a function
if_ath.c: In function `ath_setcurmode':
if_ath.c:8979: invalid suffix on integer constant
if_ath.c:8979: warning: null format string
if_ath.c:8979: called object is not a function
if_ath.c: In function `athff_can_aggregate':
if_ath.c:9094: invalid suffix on integer constant
if_ath.c:9094: warning: null format string
if_ath.c:9094: called object is not a function
if_ath.c: In function `ath_printrxbuf':
if_ath.c:9113: invalid suffix on integer constant
if_ath.c:9113: warning: null format string
if_ath.c:9118: called object is not a function
if_ath.c: In function `ath_printtxbuf':
if_ath.c:9126: invalid suffix on integer constant
if_ath.c:9126: warning: null format string
if_ath.c:9131: called object is not a function
if_ath.c: In function `ath_set_mac_address':
if_ath.c:9172: invalid suffix on integer constant
if_ath.c:9172: warning: null format string
if_ath.c:9172: called object is not a function
if_ath.c:9178: invalid suffix on integer constant
if_ath.c:9178: warning: null format string
if_ath.c:9178: called object is not a function
if_ath.c: In function `ath_change_mtu':
if_ath.c:9201: invalid suffix on integer constant
if_ath.c:9201: warning: null format string
if_ath.c:9201: called object is not a function
if_ath.c:9204: invalid suffix on integer constant
if_ath.c:9204: warning: null format string
if_ath.c:9204: called object is not a function
if_ath.c: In function `ath_ioctl_diag':
if_ath.c:9240: invalid suffix on integer constant
if_ath.c:9240: called object is not a function
if_ath.c:9245: invalid suffix on integer constant
if_ath.c:9245: called object is not a function
if_ath.c:9258: invalid suffix on integer constant
if_ath.c:9258: called object is not a function
if_ath.c:9268: `d523fdd3' undeclared (first use in this function)
if_ath.c:9268: called object is not a function
if_ath.c:9274: invalid suffix on integer constant
if_ath.c:9274: called object is not a function
if_ath.c:9276: invalid suffix on integer constant
if_ath.c:9276: called object is not a function
if_ath.c: In function `ath_ioctl':
if_ath.c:9293: `d523fdd3' undeclared (first use in this function)
if_ath.c:9293: called object is not a function
if_ath.c:9305: invalid suffix on integer constant
if_ath.c:9305: called object is not a function
if_ath.c: In function `ath_dynamic_sysctl_register':
if_ath.c:9699: invalid suffix on integer constant
if_ath.c:9699: called object is not a function
if_ath.c:9701: invalid suffix on integer constant
if_ath.c:9701: warning: null format string
if_ath.c:9701: called object is not a function
if_ath.c:9712: invalid suffix on integer constant
if_ath.c:9712: called object is not a function
if_ath.c:9714: invalid suffix on integer constant
if_ath.c:9714: warning: null format string
if_ath.c:9714: called object is not a function
if_ath.c:9743: invalid suffix on integer constant
if_ath.c:9743: warning: null format string
if_ath.c:9743: called object is not a function
if_ath.c:9744: invalid suffix on integer constant
if_ath.c:9744: called object is not a function
if_ath.c:9745: invalid suffix on integer constant
if_ath.c:9745: called object is not a function
if_ath.c: In function `ath_dynamic_sysctl_unregister':
if_ath.c:9763: invalid suffix on integer constant
if_ath.c:9763: called object is not a function
if_ath.c:9767: invalid suffix on integer constant
if_ath.c:9767: called object is not a function
if_ath.c: In function `ath_announce':
if_ath.c:9783: invalid suffix on integer constant
if_ath.c:9783: warning: null format string
if_ath.c:9785: called object is not a function
if_ath.c:9795: invalid suffix on integer constant
if_ath.c:9795: warning: null format string
if_ath.c:9799: called object is not a function
if_ath.c:9801: invalid suffix on integer constant
if_ath.c:9801: warning: null format string
if_ath.c:9802: called object is not a function
if_ath.c:9804: invalid suffix on integer constant
if_ath.c:9804: warning: null format string
if_ath.c:9805: called object is not a function
if_ath.c:9806: invalid suffix on integer constant
if_ath.c:9806: warning: null format string
if_ath.c:9806: called object is not a function
if_ath.c:9811: invalid suffix on integer constant
if_ath.c:9811: warning: null format string
if_ath.c:9813: called object is not a function
if_ath.c:9815: invalid suffix on integer constant
if_ath.c:9815: warning: null format string
if_ath.c:9816: called object is not a function
if_ath.c:9817: invalid suffix on integer constant
if_ath.c:9817: warning: null format string
if_ath.c:9818: called object is not a function
if_ath.c: In function `ath_sysctl_register':
if_ath.c:9898: floating constant exponent has no digits
if_ath.c:9898: called object is not a function
if_ath.c: In function `ath_sysctl_unregister':
if_ath.c:9907: `fe769456' undeclared (first use in this function)
if_ath.c:9907: called object is not a function
if_ath.c: At top level:
if_ath.c:9922: invalid suffix on integer constant
if_ath.c:9922: parse error before numeric constant
if_ath.c:9922: warning: function declaration isn't a prototype
if_ath.c:9924: conflicting types for `ath_rcv_dev_event'
if_ath.c:251: previous declaration of `ath_rcv_dev_event'
if_ath.c: In function `ath_rcv_dev_event':
if_ath.c:9931: invalid suffix on integer constant
/usr/src/linux-2.4.20-8/include/linux/skbuff.h: In function `kunmap_skb_frag':
/usr/src/linux-2.4.20-8/include/linux/skbuff.h:1129: warning: asm operand 1 probably doesn't match constraints
make[3]: *** [if_ath.o] Error 1
make[3]: Leaving directory `/root/download/tmp/madwifi/ath'
make[2]: *** [_mod_/root/download/tmp/madwifi/ath] Error 2
make[2]: Leaving directory `/usr/src/linux-2.4.20-8'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/root/download/tmp/madwifi/ath'
make: *** [modules] Error 1
[root@localhost madwifi]# make install
sh scripts/find-madwifi-modules.sh 2.4.208
for i in ath/ ath_hal/ ath_rate/ net80211/; do \
        make -C $i install || exit 1; \
done
make[1]: Entering directory `/root/download/tmp/madwifi/ath'
test -d //lib/modules/2.4.208/net || mkdir -p //lib/modules/2.4.208/net
install ath_pci.o //lib/modules/2.4.208/net
install: cannot stat `ath_pci.o': No such file or directory
make[1]: *** [install] Error 1
make[1]: Leaving directory `/root/download/tmp/madwifi/ath'
make: *** [install-modules] Error 1
[root@localhost madwifi]# /sbin/modprobe ath_pci
modprobe: Can't locate module ath_pci
[root@localhost madwifi]#

然后就进行不下去了,我该怎么办?能帮帮我吗?
对了,我的网卡是TP-LINKE 610G
系统是REDHAT 9.0