contents
下一主题: PLIP 驱动程序 上一层: 以太网安装 前一主题: 支持的网卡

以太网自动探测

在启动时,以太网代码将尝试定位您的网卡并确定其类型。 将在以下地址和以下顺序探测网卡
      ------------------------------------------------------
      +--------------+-------------------------------------+
      |Board         | Addresses probed for                |
      +--------------+-------------------------------------+
      |WD/SMC        | 0x300, 0x280, 0x380, 0x240          |
      |SMC 16 Ultra  | 0x300, 0x280                        |
      |3c501         | 0x280                               |
      |3c503         | 0x300, 0x310, 0x330, 0x350, 0x250,  |
      |              | 0x280, 0x2a0, 0x2e0                 |
      |NEx000        | 0x300, 0x280, 0x320, 0x340, 0x360   |
      |HP            | 0x300, 0x320, 0x340, 0x280, 0x2C0,  |
      |              | 0x200, 0x240                        |
      |DEPCA         | 0x300, 0x320, 0x340, 0x360          |
      +--------------+-------------------------------------+
      +--------------+-------------------------------------+

自动探测代码有两个限制。 首先,它可能无法正确识别所有网卡。 对于一些常见网卡的廉价克隆产品,以及一些 WD80x3 网卡来说,尤其如此。 第二个问题是,内核目前不会自动探测多个网卡。 这是一个特性,因为假设您希望控制哪个网卡被分配给哪个接口。

如果您正在使用多个网卡,或者如果自动探测未能检测到您的网卡,您必须显式地告诉内核关于网卡的基地址和名称。

在 Net-3 中,您可以使用两种不同的方案来完成此操作。 一种方法是在内核源代码的 drivers/net/Space.c 文件中更改或添加信息,该文件包含有关驱动程序的所有信息。 仅当您熟悉网络代码时才推荐这样做。 更好的方法是在启动时向内核提供此信息。 如果您使用 lilo 启动系统,则可以通过在 lilo.conf 中的 append 选项中指定参数来将参数传递给内核。 要将以太网设备信息告知内核,您可以传递以下参数

           ether=irq,base addr,param1,param2,name
前四个参数是数值,而最后一个是设备名称。 所有数值都是可选的; 如果省略或设置为零,内核将尝试通过探测来检测该值,或使用默认值。

第一个参数设置分配给设备的 IRQ。 默认情况下,内核将尝试自动检测设备的 IRQ 通道。 3c503 驱动程序有一个特殊功能,可以从列表 5、9、3、4 中选择一个空闲的 IRQ,并将网卡配置为使用此线路。

base_addr 参数给出网卡的 I/O 基地址; 值为零表示内核探测上面列出的地址。

剩余的两个参数可能被不同的驱动程序以不同的方式使用。 对于像 WD80x3 这样的共享内存网卡,它们指定共享内存区域的起始地址和结束地址。 其他网卡通常使用 param1 来设置正在显示的调试信息的级别。 值 1 到 7 表示详细程度递增,而 8 则完全关闭它们; 0 表示默认值。 3c503 驱动程序使用 param2 来选择内部收发器(默认)或外部收发器(值为 1)。 前者使用网卡的 BNC 连接器; 后者使用其 AUI 端口。

如果您有两个以太网网卡,您可以让自动探测检测一个网卡,并使用 lilo 传递第二个网卡的参数。 但是,您必须确保驱动程序不会意外地首先找到第二个网卡,否则另一个网卡将根本不会被注册。 您可以通过将 reserve 选项传递给 lilo 来做到这一点,该选项显式地告诉内核避免探测第二个网卡占用的 I/O 空间。

例如,要安装第二个地址为 0x300 的以太网网卡作为 eth1,您需要将以下参数传递给内核

           reserve=0x300,32 ether=0,0x300,eth1
 
reserve 选项确保在探测某些设备时,没有驱动程序访问网卡的 I/O 空间。 您还可以使用内核参数来覆盖 eth0 的自动探测。
           reserve=0x340,32 ether=0,0x340,eth0
要完全关闭自动探测,您可以指定 base_addr 参数为 -1。
           ether=0,-1,eth0
 


contents
下一主题: PLIP 驱动程序 上一层: 以太网安装 前一主题: 支持的网卡

Andrew Anderson
1996 年 3 月 7 日星期四 23:22:06 EST