Logo

Linux 内核

6.16.0-rc4

快速搜索

目录

  • 开发流程
  • 提交补丁
  • 行为准则
  • 维护者手册
  • 所有开发流程文档
  • 核心 API
  • 驱动 API
  • 子系统
    • 核心子系统
    • 人机界面
    • 网络接口
      • 网络
      • NetLabel
      • InfiniBand
      • ISDN
      • MHI
    • 存储接口
    • 其他子系统
  • 锁
  • 许可规则
  • 编写文档
  • 开发工具
  • 测试指南
  • 黑客指南
  • 追踪
  • 故障注入
  • Livepatching
  • Rust
  • 管理
  • 构建系统
  • 报告问题
  • 用户空间工具
  • 用户空间 API
  • 固件
  • 固件和设备树
  • CPU 架构
  • 未分类的文档
  • 翻译

本页

  • 显示源代码

基于 D-Link DL2000 的千兆以太网适配器安装¶

2002 年 5 月 23 日

兼容性列表¶

适配器支持

  • D-Link DGE-550T 千兆以太网适配器。

  • D-Link DGE-550SX 千兆以太网适配器。

  • 基于 D-Link DL2000 的千兆以太网适配器。

该驱动支持 Linux 内核 2.4.7 及更高版本。我们已经在以下环境中进行了测试。

. Red Hat v6.2 (更新内核到 2.4.7) . Red Hat v7.0 (更新内核到 2.4.7) . Red Hat v7.1 (内核 2.4.7) . Red Hat v7.2 (内核 2.4.7-10)

快速安装¶

按照以下命令安装 Linux 驱动程序

1. make all
2. insmod dl2k.ko
3. ifconfig eth0 up 10.xxx.xxx.xxx netmask 255.0.0.0
                    ^^^^^^^^^^^^^^^\            ^^^^^^^^\
                                    IP                   NETMASK

现在 eth0 应该处于活动状态,您可以通过“ping”对其进行测试,或者通过“ifconfig”获取更多信息。 如果测试通过,请继续下一步。

  1. cp dl2k.ko /lib/modules/`uname -r`/kernel/drivers/net

  2. 将以下行添加到 /etc/modprobe.d/dl2k.conf

    alias eth0 dl2k
    
  3. 运行 depmod 以更新模块索引。

  4. 运行 netconfig 或 netconf 以创建位于 /etc/sysconfig/network-scripts 的配置文件 ifcfg-eth0,或者手动创建它。

    [请参阅 - 配置文件示例]

  5. 驱动程序将在下次启动时自动加载和配置。

编译驱动程序¶

在 Linux 中,NIC 驱动程序最常配置为可加载模块。 构建单内核的方法已经过时。 驱动程序可以作为单内核的一部分进行编译,但不强烈建议这样做。 本节的其余部分假定驱动程序构建为可加载模块。 在 Linux 环境中,从源代码重建驱动程序而不是依赖于预编译版本是一个好主意。 这种方法提供了更好的可靠性,因为预编译的驱动程序可能依赖于给定 Linux 安装中不存在的库或内核功能。

构建 Linux 设备驱动程序所需的 3 个文件是 dl2k.c、dl2k.h 和 Makefile。 要编译,Linux 安装必须包括 gcc 编译器、内核源代码和内核头文件。 Linux 驱动程序支持 Linux 内核 2.4.7。 将文件复制到目录中,然后输入以下命令来编译和链接驱动程序

CD-ROM 驱动器¶

[root@XXX /] mkdir cdrom
[root@XXX /] mount -r -t iso9660 -o conv=auto /dev/cdrom /cdrom
[root@XXX /] cd root
[root@XXX /root] mkdir dl2k
[root@XXX /root] cd dl2k
[root@XXX dl2k] cp /cdrom/linux/dl2k.tgz /root/dl2k
[root@XXX dl2k] tar xfvz dl2k.tgz
[root@XXX dl2k] make all

软盘驱动器¶

[root@XXX /] cd root
[root@XXX /root] mkdir dl2k
[root@XXX /root] cd dl2k
[root@XXX dl2k] mcopy a:/linux/dl2k.tgz /root/dl2k
[root@XXX dl2k] tar xfvz dl2k.tgz
[root@XXX dl2k] make all

安装驱动程序¶

手动安装¶

编译驱动程序后,必须加载、启用该驱动程序并将其绑定到协议栈,才能建立网络连接。 要加载模块,请输入命令

insmod dl2k.o

或

insmod dl2k.o <optional parameter>  ; add parameter

示例

 insmod dl2k.o media=100mbps_hd

or::

 insmod dl2k.o media=3

or::

 insmod dl2k.o media=3,2     ; for 2 cards

请参考下面 Linux 设备驱动程序支持的命令行参数列表。

insmod 命令仅加载驱动程序,并为其提供 eth0、eth1 等形式的名称。 要使 NIC 进入可操作状态,有必要发出以下命令

ifconfig eth0 up

最后,要将驱动程序绑定到活动协议(例如,使用 Linux 的 TCP/IP),请输入以下命令

ifup eth0

请注意,只有当系统可以找到包含必要网络信息的配置文件时,这才有意义。 下一段将给出一个示例。

卸载驱动程序的命令如下

ifdown eth0
ifconfig eth0 down
rmmod dl2k.o

以下是列出当前加载的模块和查看当前网络配置的命令

lsmod
ifconfig

自动安装¶

本节介绍如何安装驱动程序,以便在启动时自动加载和配置它。 以下描述基于 Red Hat 6.0/7.0 发行版,但它也可以轻松移植到其他发行版。

Red Hat v6.x/v7.x¶

  1. 将 dl2k.o 复制到网络模块目录,通常是 /lib/modules/2.x.x-xx/net 或 /lib/modules/2.x.x/kernel/drivers/net。

  2. 找到引导模块配置文件,最常见的是 /etc/modprobe.d/ 目录。 添加以下行

    alias ethx dl2k
    options dl2k <optional parameters>
    

    其中 ethx 将是 eth0(如果 NIC 是唯一的以太网适配器),如果是其他以太网适配器,则为 eth1,依此类推。 有关可选参数列表,请参阅上一节中的表格。

  3. 找到网络配置文件,通常是 /etc/sysconfig/network-scripts 目录,并创建一个包含网络信息的配置文件 ifcfg-ethx。

  4. 请注意,对于大多数 Linux 发行版,包括 Red Hat,都提供了一个带有图形用户界面的配置实用程序来执行上述步骤 2 和 3。

参数说明¶

您可以安装此驱动程序,而无需任何其他参数。 但是,如果您要使用大量功能,则必须设置额外的参数。 以下是 Linux 设备驱动程序支持的命令行参数列表。

mtu=packet_size

指定最大数据包大小。 默认为 1500。

media=media_type

指定 NIC 运行的介质类型。 autosense 自动检测活动介质。

10mbps_hd

10Mbps 半双工。

10mbps_fd

10Mbps 全双工。

100mbps_hd

100Mbps 半双工。

100mbps_fd

100Mbps 全双工。

1000mbps_fd

1000Mbps 全双工。

1000mbps_hd

1000Mbps 半双工。

0

自动检测活动介质。

1

10Mbps 半双工。

2

10Mbps 全双工。

3

100Mbps 半双工。

4

100Mbps 全双工。

5

1000Mbps 半双工。

6

1000Mbps 全双工。

默认情况下,NIC 以自动检测模式运行。 1000mbps_fd 和 1000mbps_hd 类型仅适用于光纤适配器。

vlan=n

指定 VLAN ID。 如果 vlan=0,则禁用虚拟局域网 (VLAN) 功能。

jumbo=[0|1]

指定巨型帧支持。 如果 jumbo=1,则 NIC 接受巨型帧。 默认情况下,此功能已禁用。 巨型帧通常会提高千兆位的性能。 此功能需要巨型帧兼容的远程主机。

rx_coalesce=m

每个中断处理的 rx 帧数。

rx_timeout=n

Rx DMA 等待中断的时间。 如果设置 rx_coalesce > 0,则硬件仅为 m 帧声明中断。 硬件不会声明 rx 中断,直到收到 m 帧或达到 n * 640 纳秒的超时时间。 设置适当的 rx_coalesce 和 rx_timeout 可以减少拥塞崩溃和过载,这一直是高速网络的瓶颈。

例如,rx_coalesce=10 rx_timeout=800。 也就是说,硬件仅为收到的 10 帧或 512 微秒的超时声明 1 个中断。

tx_coalesce=n

每个中断处理的 tx 帧数。 设置 n > 1 可以减少中断拥塞,通常会降低高速网卡的性能。 默认为 16。

tx_flow=[1|0]

指定 Tx 流量控制。 如果 tx_flow=0,则禁用 Tx 流量控制,否则驱动程序会自动检测。

rx_flow=[1|0]

指定 Rx 流量控制。 如果 rx_flow=0,则启用 Rx 流量控制,否则驱动程序会自动检测。

配置文件示例¶

这是一个简单的配置文件示例

DEVICE=eth0
USERCTL=no
ONBOOT=yes
POOTPROTO=none
BROADCAST=207.200.5.255
NETWORK=207.200.5.0
NETMASK=255.255.255.0
IPADDR=207.200.5.2

故障排除¶

Q1. 源文件在每一行后面都包含 ^ M。

确保所有文件都是 Unix 文件格式(没有 LF)。 尝试以下 shell 命令来转换文件

cat dl2k.c | col -b > dl2k.tmp
mv dl2k.tmp dl2k.c

或

cat dl2k.c | tr -d "\r" > dl2k.tmp
mv dl2k.tmp dl2k.c

Q2:无法找到头文件 (*.h)?

要编译驱动程序,您需要内核头文件。 安装内核源代码后,头文件通常位于 /usr/src/linux/include 中,这是 Makefile 中配置的默认 include 目录。 对于某些发行版,/usr/src/include/linux 和 /usr/src/include/asm 中都有头文件的副本,您可以将 Makefile 中的 INCLUDEDIR 更改为 /usr/include,而无需安装内核源代码。

请注意,RH 7.0 在 /usr/include 中没有提供正确的头文件,包括这些文件将导致错误的驱动程序版本。

©内核开发社区。 | 由 Sphinx 5.3.0 & Alabaster 0.7.16 驱动 | 页面源