发信人: mark7312(小马哥)
整理人: qiaoqian(2002-05-06 01:21:56), 站内信件
|
4 3Com的技术信息
如果对3Com网卡驱动程序的工作感兴趣,可以从3Com公司获取技术资料。Cameron友好地告诉了我们该如何做:
在我们的“技术参考文献”里给出了3Com的以太网适配器驱动程序程序员需要了解的资料。这些手册描述了板上的程序员接口,但没有提及诊断、安装程序等终端用户所看到的东西。
网络适配器分部的市场部有技术参考资料分发。为了使这个计划更有效,我们把它集中到一个称作“CardFacts”的自动电话系统里。你可以打电话来,然后它把资料传真给你。要索取技术参考资料,打电话到408-727-7021。索取开发人员的订单,资料号是9070。在打电话前准备好你的传真号码。填完订单后把它传真到408-764-5004。手册会由联邦速递的次日服务送到。
有人认为我们的手册不该免费,他们也在寻找此系统过于昂贵或占用的时间和努力太多的证据。到目前为止,3Com的顾客确实很好,向我们提出的要求也很合理。我们需要你们的继续合作并把这样的服务维持下去。
5 基于AMD PCnet/LANCE的网卡的注意事项
AMD的LANCE(以太网的局域网控制器)是最早提供的,已经被“PCnet-ISA”芯片所取代,否则又名为79C960。注意,名称“LANCE”有毛病,有些人会用老名称称呼新芯片。AMD的网络产品分部的Dave Roberts友好地提供了下面有关该芯片的信息:
“从功能上来看,它等同与NE1500。它的寄存器组与使用附加1500/2100结构的老式LANCE一样。PCnet-ISA可以使用较早的1500/2100驱动程序。NE1500和NE2100的结构基本上是相同的。开始Novell把它称为2100,但后来想区分同轴电缆与10BASE-T网卡。属于10BASE-T的就只采用1500范围的编号。这是仅有的区别。
许多公司提供基于PCnet-ISA的产品,包括HP、Racal-Datacom、Allied Telesis、Boca Research、Kingston Technology等等。除了有些制造商增加了“无跳线”特性允许软件配置网卡外,这些网卡基本上都是一样的。大多数制造商没有增加这一特性。AMD提供了一个使用PCnet-ISA的网卡的标准设计软件包,许多制造商不加改变地直接使用我们的设计。这也就是说,如果想编写大多数基于PCnet-ISA的网卡的驱动程序,只需要从AMD获取数据资料。打电话给我们的资料分发中心(800)222-9323,索取PCnet-ISA的数据资料Am79C960。这是免费的。
要迅速了解一块网卡是否“标准”网卡只需要看一下它。如果是标准的,网卡上只有一块大的芯片、一块晶振、一块小的IEEE地址PROM、可能还有一个启动ROM的插座和一个连接器(依照提供的媒介选项可能是1、2或3)。注意,如果是同轴电缆网卡,卡上就应该有一些收发器缓存,它们靠近连接器,远离PCnet-ISA。”
一个可能的网卡黑客需要注意,不同的LANCE产品采用不同的“重起”方法。有些恢复到上次离开网络环路的地方,另一些从环路的开头开始,就象刚被初始化一样。
6 广播与混杂模式
Donald所做的另一件事是实现广播与混杂模式的钩子。所有发布的(即不是ALPHA的)ISA驱动程序现在都支持混杂模式。
Donald写道:“我准备从讨论混杂模式开始,它从概念上来说很容易实现。对大多数硬件,你只需要设置一个寄存器位,然后就可以接收到线路上的每一个数据包。对,差不多就这么简单;对有些硬件,你必须先关闭板卡(可能会丢失若干数据包),重新配置它,然后重新启用以太网卡。对吧,就这么简单,下面要讨论的就不是这么明显了:广播模式。它可以用两种方式实现:
使用混杂模式和一个如Berkeley包过滤器(BPF)的数据包过滤器。BPF是一个模式匹配指令语言,可以编写一个程序挑出感兴趣的地址。它的优点在于它很普遍和可编程。其缺点是没有一个一般性的方法可以让内核避免打开混杂模式和通过每一个注册的包过滤器运行每一个线路上的数据包。参见Berkeley包过滤器以了解更多信息。
使用绝大多数以太网芯片内建的广播包过滤器。
我想应该列出几个以太网卡/芯片提供的广播包过滤器:
芯片/网卡 混杂模式 广播包过滤器
----------------------------------------
Seeq8001/3c501 Yes Binary filter (1)
3Com/3c509 Yes Binary filter (1)
8390 Yes Autodin II six bit hash (2) (3)
LANCE Yes Autodin II six bit hash (2) (3)
i82586 Yes Hidden Autodin II six bit hash (2) (4)
这些网卡声称有一个过滤器,但只是简单地对“accept all multicast packets”或“accept no multicast packets”回答yes/no。
AUTODIN II是标准的以太网CRC校验多项式。在这种方式下,广播地址被哈希运算后在哈希表里进行查找。如果启用了相应的比特位,则数据包被接收。以太网数据包的设计使得硬件在如此处理时的开销很小——(一般)只要在前6个八进制数(目标地址)之后锁定CRC电路(用来进行错误检查)的6个比特位,把它们作为哈希表的索引(6比特——一个64比特的表)。
这些芯片使用6比特哈希,必须由主机计算并载入哈希表。这也就是说内核必须包含CRC代码。
82586内部使用6比特哈希,但是由自己从接受的广播地址列表计算出哈希表。
注意,这些芯片的过滤效果都不好,还需要一个中间层次的模块完成最后的过滤。同时还要注意,在每种情况下都必须保持一个完整的接受广播地址列表,在出现变化时以重新计算哈希表。
---- 小马哥
美丽的梦和美丽的诗一样,都是可遇而不可求的,
常常在最没能料到的时候里出现
|
|