mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 16:29:59 +00:00
![Lucas De Marchi](/assets/img/avatar_default.png)
Usage of /etc/modprobe.conf file was deprecated by module-init-tools and is no longer parsed by new kmod tool. References to this file are replaced in Documentation, comments and Kconfig according to the context. There are also some references to the old /etc/modules.conf from 2.4 kernels that are being removed. Signed-off-by: Lucas De Marchi <lucas.demarchi@profusion.mobi> Acked-by: Takashi Iwai <tiwai@suse.de> Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Randy Dunlap <rdunlap@xenotime.net> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
282 lines
9.2 KiB
Text
282 lines
9.2 KiB
Text
|
|
D-Link DL2000-based Gigabit Ethernet Adapter Installation
|
|
for Linux
|
|
May 23, 2002
|
|
|
|
Contents
|
|
========
|
|
- Compatibility List
|
|
- Quick Install
|
|
- Compiling the Driver
|
|
- Installing the Driver
|
|
- Option parameter
|
|
- Configuration Script Sample
|
|
- Troubleshooting
|
|
|
|
|
|
Compatibility List
|
|
=================
|
|
Adapter Support:
|
|
|
|
D-Link DGE-550T Gigabit Ethernet Adapter.
|
|
D-Link DGE-550SX Gigabit Ethernet Adapter.
|
|
D-Link DL2000-based Gigabit Ethernet Adapter.
|
|
|
|
|
|
The driver support Linux kernel 2.4.7 later. We had tested it
|
|
on the environments below.
|
|
|
|
. Red Hat v6.2 (update kernel to 2.4.7)
|
|
. Red Hat v7.0 (update kernel to 2.4.7)
|
|
. Red Hat v7.1 (kernel 2.4.7)
|
|
. Red Hat v7.2 (kernel 2.4.7-10)
|
|
|
|
|
|
Quick Install
|
|
=============
|
|
Install linux driver as following command:
|
|
|
|
1. make all
|
|
2. insmod dl2k.ko
|
|
3. ifconfig eth0 up 10.xxx.xxx.xxx netmask 255.0.0.0
|
|
^^^^^^^^^^^^^^^\ ^^^^^^^^\
|
|
IP NETMASK
|
|
Now eth0 should active, you can test it by "ping" or get more information by
|
|
"ifconfig". If tested ok, continue the next step.
|
|
|
|
4. cp dl2k.ko /lib/modules/`uname -r`/kernel/drivers/net
|
|
5. Add the following line to /etc/modprobe.d/dl2k.conf:
|
|
alias eth0 dl2k
|
|
6. Run depmod to updated module indexes.
|
|
7. Run "netconfig" or "netconf" to create configuration script ifcfg-eth0
|
|
located at /etc/sysconfig/network-scripts or create it manually.
|
|
[see - Configuration Script Sample]
|
|
8. Driver will automatically load and configure at next boot time.
|
|
|
|
Compiling the Driver
|
|
====================
|
|
In Linux, NIC drivers are most commonly configured as loadable modules.
|
|
The approach of building a monolithic kernel has become obsolete. The driver
|
|
can be compiled as part of a monolithic kernel, but is strongly discouraged.
|
|
The remainder of this section assumes the driver is built as a loadable module.
|
|
In the Linux environment, it is a good idea to rebuild the driver from the
|
|
source instead of relying on a precompiled version. This approach provides
|
|
better reliability since a precompiled driver might depend on libraries or
|
|
kernel features that are not present in a given Linux installation.
|
|
|
|
The 3 files necessary to build Linux device driver are dl2k.c, dl2k.h and
|
|
Makefile. To compile, the Linux installation must include the gcc compiler,
|
|
the kernel source, and the kernel headers. The Linux driver supports Linux
|
|
Kernels 2.4.7. Copy the files to a directory and enter the following command
|
|
to compile and link the driver:
|
|
|
|
CD-ROM drive
|
|
------------
|
|
|
|
[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
|
|
|
|
Floppy disc drive
|
|
-----------------
|
|
|
|
[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
|
|
|
|
Installing the Driver
|
|
=====================
|
|
|
|
Manual Installation
|
|
-------------------
|
|
Once the driver has been compiled, it must be loaded, enabled, and bound
|
|
to a protocol stack in order to establish network connectivity. To load a
|
|
module enter the command:
|
|
|
|
insmod dl2k.o
|
|
|
|
or
|
|
|
|
insmod dl2k.o <optional parameter> ; add parameter
|
|
|
|
===============================================================
|
|
example: insmod dl2k.o media=100mbps_hd
|
|
or insmod dl2k.o media=3
|
|
or insmod dl2k.o media=3,2 ; for 2 cards
|
|
===============================================================
|
|
|
|
Please reference the list of the command line parameters supported by
|
|
the Linux device driver below.
|
|
|
|
The insmod command only loads the driver and gives it a name of the form
|
|
eth0, eth1, etc. To bring the NIC into an operational state,
|
|
it is necessary to issue the following command:
|
|
|
|
ifconfig eth0 up
|
|
|
|
Finally, to bind the driver to the active protocol (e.g., TCP/IP with
|
|
Linux), enter the following command:
|
|
|
|
ifup eth0
|
|
|
|
Note that this is meaningful only if the system can find a configuration
|
|
script that contains the necessary network information. A sample will be
|
|
given in the next paragraph.
|
|
|
|
The commands to unload a driver are as follows:
|
|
|
|
ifdown eth0
|
|
ifconfig eth0 down
|
|
rmmod dl2k.o
|
|
|
|
The following are the commands to list the currently loaded modules and
|
|
to see the current network configuration.
|
|
|
|
lsmod
|
|
ifconfig
|
|
|
|
|
|
Automated Installation
|
|
----------------------
|
|
This section describes how to install the driver such that it is
|
|
automatically loaded and configured at boot time. The following description
|
|
is based on a Red Hat 6.0/7.0 distribution, but it can easily be ported to
|
|
other distributions as well.
|
|
|
|
Red Hat v6.x/v7.x
|
|
-----------------
|
|
1. Copy dl2k.o to the network modules directory, typically
|
|
/lib/modules/2.x.x-xx/net or /lib/modules/2.x.x/kernel/drivers/net.
|
|
2. Locate the boot module configuration file, most commonly in the
|
|
/etc/modprobe.d/ directory. Add the following lines:
|
|
|
|
alias ethx dl2k
|
|
options dl2k <optional parameters>
|
|
|
|
where ethx will be eth0 if the NIC is the only ethernet adapter, eth1 if
|
|
one other ethernet adapter is installed, etc. Refer to the table in the
|
|
previous section for the list of optional parameters.
|
|
3. Locate the network configuration scripts, normally the
|
|
/etc/sysconfig/network-scripts directory, and create a configuration
|
|
script named ifcfg-ethx that contains network information.
|
|
4. Note that for most Linux distributions, Red Hat included, a configuration
|
|
utility with a graphical user interface is provided to perform steps 2
|
|
and 3 above.
|
|
|
|
|
|
Parameter Description
|
|
=====================
|
|
You can install this driver without any additional parameter. However, if you
|
|
are going to have extensive functions then it is necessary to set extra
|
|
parameter. Below is a list of the command line parameters supported by the
|
|
Linux device
|
|
driver.
|
|
|
|
mtu=packet_size - Specifies the maximum packet size. default
|
|
is 1500.
|
|
|
|
media=media_type - Specifies the media type the NIC operates at.
|
|
autosense Autosensing active media.
|
|
10mbps_hd 10Mbps half duplex.
|
|
10mbps_fd 10Mbps full duplex.
|
|
100mbps_hd 100Mbps half duplex.
|
|
100mbps_fd 100Mbps full duplex.
|
|
1000mbps_fd 1000Mbps full duplex.
|
|
1000mbps_hd 1000Mbps half duplex.
|
|
0 Autosensing active media.
|
|
1 10Mbps half duplex.
|
|
2 10Mbps full duplex.
|
|
3 100Mbps half duplex.
|
|
4 100Mbps full duplex.
|
|
5 1000Mbps half duplex.
|
|
6 1000Mbps full duplex.
|
|
|
|
By default, the NIC operates at autosense.
|
|
1000mbps_fd and 1000mbps_hd types are only
|
|
available for fiber adapter.
|
|
|
|
vlan=n - Specifies the VLAN ID. If vlan=0, the
|
|
Virtual Local Area Network (VLAN) function is
|
|
disable.
|
|
|
|
jumbo=[0|1] - Specifies the jumbo frame support. If jumbo=1,
|
|
the NIC accept jumbo frames. By default, this
|
|
function is disabled.
|
|
Jumbo frame usually improve the performance
|
|
int gigabit.
|
|
This feature need jumbo frame compatible
|
|
remote.
|
|
|
|
rx_coalesce=m - Number of rx frame handled each interrupt.
|
|
rx_timeout=n - Rx DMA wait time for an interrupt.
|
|
If set rx_coalesce > 0, hardware only assert
|
|
an interrupt for m frames. Hardware won't
|
|
assert rx interrupt until m frames received or
|
|
reach timeout of n * 640 nano seconds.
|
|
Set proper rx_coalesce and rx_timeout can
|
|
reduce congestion collapse and overload which
|
|
has been a bottleneck for high speed network.
|
|
|
|
For example, rx_coalesce=10 rx_timeout=800.
|
|
that is, hardware assert only 1 interrupt
|
|
for 10 frames received or timeout of 512 us.
|
|
|
|
tx_coalesce=n - Number of tx frame handled each interrupt.
|
|
Set n > 1 can reduce the interrupts
|
|
congestion usually lower performance of
|
|
high speed network card. Default is 16.
|
|
|
|
tx_flow=[1|0] - Specifies the Tx flow control. If tx_flow=0,
|
|
the Tx flow control disable else driver
|
|
autodetect.
|
|
rx_flow=[1|0] - Specifies the Rx flow control. If rx_flow=0,
|
|
the Rx flow control enable else driver
|
|
autodetect.
|
|
|
|
|
|
Configuration Script Sample
|
|
===========================
|
|
Here is a sample of a simple configuration script:
|
|
|
|
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
|
|
|
|
|
|
Troubleshooting
|
|
===============
|
|
Q1. Source files contain ^ M behind every line.
|
|
Make sure all files are Unix file format (no LF). Try the following
|
|
shell command to convert files.
|
|
|
|
cat dl2k.c | col -b > dl2k.tmp
|
|
mv dl2k.tmp dl2k.c
|
|
|
|
OR
|
|
|
|
cat dl2k.c | tr -d "\r" > dl2k.tmp
|
|
mv dl2k.tmp dl2k.c
|
|
|
|
Q2: Could not find header files (*.h) ?
|
|
To compile the driver, you need kernel header files. After
|
|
installing the kernel source, the header files are usually located in
|
|
/usr/src/linux/include, which is the default include directory configured
|
|
in Makefile. For some distributions, there is a copy of header files in
|
|
/usr/src/include/linux and /usr/src/include/asm, that you can change the
|
|
INCLUDEDIR in Makefile to /usr/include without installing kernel source.
|
|
Note that RH 7.0 didn't provide correct header files in /usr/include,
|
|
including those files will make a wrong version driver.
|
|
|