前言 【程序编程相关:在 Linux 下访问无线局域网(ZT)】
【推荐阅读:给初学linux的一点忠告】rtl8139 可能是目前最受欢迎的网络卡,它的价格便宜,功能上也还能接受.虽然在效能上有时会略不及intel 的 eepro100,但因为价格实在太便宜了,所以芯片上的一点小问题通常也接忽略不计. 【扩展信息:红帽企业 Linux AS 4 的改进】 废 话少话,马上来说明 8139too 这个驱动程序.8139 虽然价格不高,但该有的功能一点也不缺.它内建了符合 mii 规格的 tranceiver,可以自动判断连接的网络是那一种型态.它也可以使用 dma 直接使用位于主记忆体的缓区来存网络上接收的封包,同样的,待传送的封包也可利用 dma 传送到网络卡上.所以虽然在 8139 芯片上只有 2k 的接收缓冲区与 2k 的传送缓冲区,其效能仍十分不错. 除了 realtek 本身外,有不少的厂商也使用相同的内核生产了与 8139 相容的网络芯片,包括了 smc 1211 mpx 5030 delta 8139 addtron 8139 dfe 538 可能还有更多. 驱动程序初始化 就像其它的驱动程序一样,驱动程序在使用 insmod 载入时,第一个初呼叫的函数是 init_module,在使用 rmmod 移除时,cleanuo_module 会被呼叫.在 init_module 中,我们注册了一个 pci 驱动程序 static struct pci_driver rtl8139_pci_driver = { name: modname, id_table: rtl8139_pci_tbl, probe: rtl8139_init_one, remove: rtl8139_remove_one, suspend: rtl8139_suspend, resume: rtl8139_resume, }; static int __init rtl8139_init_module (void) { return pci_module_init (&rtl8139_pci_driver); } 这 个结构与上次介绍的 sis900 其实差别不大.rtl8139_init_one 用来初始化一个 8139 芯片.pci 驱动程序最大的好处是 pci bus 提供了组态空间 (configuration space) 来存放驱动程序所需的 io 位址及中断号码等资料,我们不必再像 isa 驱动程序一样需要指定这些资源. rtl8139_init_one 会呼叫 rtl8139_init_board 来初始化芯片,基本上 8139 这个芯片算是一个很容易使用的芯片,基本的 pci 初始化后就可以直接使用了.... 下一页