brintos

brintos / linux-shallow public Read only

0
0
Text · 9.7 KiB · ccdb5d0 Raw
315 lines · plain
1.. SPDX-License-Identifier: GPL-2.02 3=========================================================4D-Link DL2000-based Gigabit Ethernet Adapter Installation5=========================================================6 7May 23, 20028 9.. Contents10 11 - Compatibility List12 - Quick Install13 - Compiling the Driver14 - Installing the Driver15 - Option parameter16 - Configuration Script Sample17 - Troubleshooting18 19 20Compatibility List21==================22 23Adapter Support:24 25- D-Link DGE-550T Gigabit Ethernet Adapter.26- D-Link DGE-550SX Gigabit Ethernet Adapter.27- D-Link DL2000-based Gigabit Ethernet Adapter.28 29 30The driver support Linux kernel 2.4.7 later. We had tested it31on the environments below.32 33 . Red Hat v6.2 (update kernel to 2.4.7)34 . Red Hat v7.0 (update kernel to 2.4.7)35 . Red Hat v7.1 (kernel 2.4.7)36 . Red Hat v7.2 (kernel 2.4.7-10)37 38 39Quick Install40=============41Install linux driver as following command::42 43    1. make all44    2. insmod dl2k.ko45    3. ifconfig eth0 up 10.xxx.xxx.xxx netmask 255.0.0.046			^^^^^^^^^^^^^^^\	    ^^^^^^^^\47					IP		     NETMASK48 49Now eth0 should active, you can test it by "ping" or get more information by50"ifconfig". If tested ok, continue the next step.51 524. ``cp dl2k.ko /lib/modules/`uname -r`/kernel/drivers/net``535. Add the following line to /etc/modprobe.d/dl2k.conf::54 55	alias eth0 dl2k56 576. Run ``depmod`` to updated module indexes.587. Run ``netconfig`` or ``netconf`` to create configuration script ifcfg-eth059   located at /etc/sysconfig/network-scripts or create it manually.60 61   [see - Configuration Script Sample]628. Driver will automatically load and configure at next boot time.63 64Compiling the Driver65====================66In Linux, NIC drivers are most commonly configured as loadable modules.67The approach of building a monolithic kernel has become obsolete. The driver68can be compiled as part of a monolithic kernel, but is strongly discouraged.69The remainder of this section assumes the driver is built as a loadable module.70In the Linux environment, it is a good idea to rebuild the driver from the71source instead of relying on a precompiled version. This approach provides72better reliability since a precompiled driver might depend on libraries or73kernel features that are not present in a given Linux installation.74 75The 3 files necessary to build Linux device driver are dl2k.c, dl2k.h and76Makefile. To compile, the Linux installation must include the gcc compiler,77the kernel source, and the kernel headers. The Linux driver supports Linux78Kernels 2.4.7. Copy the files to a directory and enter the following command79to compile and link the driver:80 81CD-ROM drive82------------83 84::85 86    [root@XXX /] mkdir cdrom87    [root@XXX /] mount -r -t iso9660 -o conv=auto /dev/cdrom /cdrom88    [root@XXX /] cd root89    [root@XXX /root] mkdir dl2k90    [root@XXX /root] cd dl2k91    [root@XXX dl2k] cp /cdrom/linux/dl2k.tgz /root/dl2k92    [root@XXX dl2k] tar xfvz dl2k.tgz93    [root@XXX dl2k] make all94 95Floppy disc drive96-----------------97 98::99 100    [root@XXX /] cd root101    [root@XXX /root] mkdir dl2k102    [root@XXX /root] cd dl2k103    [root@XXX dl2k] mcopy a:/linux/dl2k.tgz /root/dl2k104    [root@XXX dl2k] tar xfvz dl2k.tgz105    [root@XXX dl2k] make all106 107Installing the Driver108=====================109 110Manual Installation111-------------------112 113  Once the driver has been compiled, it must be loaded, enabled, and bound114  to a protocol stack in order to establish network connectivity. To load a115  module enter the command::116 117    insmod dl2k.o118 119  or::120 121    insmod dl2k.o <optional parameter>	; add parameter122 123---------------------------------------------------------124 125  example::126 127    insmod dl2k.o media=100mbps_hd128 129   or::130 131    insmod dl2k.o media=3132 133   or::134 135    insmod dl2k.o media=3,2	; for 2 cards136 137---------------------------------------------------------138 139  Please reference the list of the command line parameters supported by140  the Linux device driver below.141 142  The insmod command only loads the driver and gives it a name of the form143  eth0, eth1, etc. To bring the NIC into an operational state,144  it is necessary to issue the following command::145 146    ifconfig eth0 up147 148  Finally, to bind the driver to the active protocol (e.g., TCP/IP with149  Linux), enter the following command::150 151    ifup eth0152 153  Note that this is meaningful only if the system can find a configuration154  script that contains the necessary network information. A sample will be155  given in the next paragraph.156 157  The commands to unload a driver are as follows::158 159    ifdown eth0160    ifconfig eth0 down161    rmmod dl2k.o162 163  The following are the commands to list the currently loaded modules and164  to see the current network configuration::165 166    lsmod167    ifconfig168 169 170Automated Installation171----------------------172  This section describes how to install the driver such that it is173  automatically loaded and configured at boot time. The following description174  is based on a Red Hat 6.0/7.0 distribution, but it can easily be ported to175  other distributions as well.176 177Red Hat v6.x/v7.x178-----------------179  1. Copy dl2k.o to the network modules directory, typically180     /lib/modules/2.x.x-xx/net or /lib/modules/2.x.x/kernel/drivers/net.181  2. Locate the boot module configuration file, most commonly in the182     /etc/modprobe.d/ directory. Add the following lines::183 184	alias ethx dl2k185	options dl2k <optional parameters>186 187     where ethx will be eth0 if the NIC is the only ethernet adapter, eth1 if188     one other ethernet adapter is installed, etc. Refer to the table in the189     previous section for the list of optional parameters.190  3. Locate the network configuration scripts, normally the191     /etc/sysconfig/network-scripts directory, and create a configuration192     script named ifcfg-ethx that contains network information.193  4. Note that for most Linux distributions, Red Hat included, a configuration194     utility with a graphical user interface is provided to perform steps 2195     and 3 above.196 197 198Parameter Description199=====================200You can install this driver without any additional parameter. However, if you201are going to have extensive functions then it is necessary to set extra202parameter. Below is a list of the command line parameters supported by the203Linux device204driver.205 206 207===============================   ==============================================208mtu=packet_size			  Specifies the maximum packet size. default209				  is 1500.210 211media=media_type		  Specifies the media type the NIC operates at.212				  autosense	Autosensing active media.213 214				  ===========	=========================215				  10mbps_hd	10Mbps half duplex.216				  10mbps_fd	10Mbps full duplex.217				  100mbps_hd	100Mbps half duplex.218				  100mbps_fd	100Mbps full duplex.219				  1000mbps_fd	1000Mbps full duplex.220				  1000mbps_hd	1000Mbps half duplex.221				  0		Autosensing active media.222				  1		10Mbps half duplex.223				  2		10Mbps full duplex.224				  3		100Mbps half duplex.225				  4		100Mbps full duplex.226				  5          	1000Mbps half duplex.227				  6          	1000Mbps full duplex.228				  ===========	=========================229 230				  By default, the NIC operates at autosense.231				  1000mbps_fd and 1000mbps_hd types are only232				  available for fiber adapter.233 234vlan=n				  Specifies the VLAN ID. If vlan=0, the235				  Virtual Local Area Network (VLAN) function is236				  disable.237 238jumbo=[0|1]			  Specifies the jumbo frame support. If jumbo=1,239				  the NIC accept jumbo frames. By default, this240				  function is disabled.241				  Jumbo frame usually improve the performance242				  int gigabit.243				  This feature need jumbo frame compatible244				  remote.245 246rx_coalesce=m			  Number of rx frame handled each interrupt.247rx_timeout=n			  Rx DMA wait time for an interrupt.248				  If set rx_coalesce > 0, hardware only assert249				  an interrupt for m frames. Hardware won't250				  assert rx interrupt until m frames received or251				  reach timeout of n * 640 nano seconds.252				  Set proper rx_coalesce and rx_timeout can253				  reduce congestion collapse and overload which254				  has been a bottleneck for high speed network.255 256				  For example, rx_coalesce=10 rx_timeout=800.257				  that is, hardware assert only 1 interrupt258				  for 10 frames received or timeout of 512 us.259 260tx_coalesce=n			  Number of tx frame handled each interrupt.261				  Set n > 1 can reduce the interrupts262				  congestion usually lower performance of263				  high speed network card. Default is 16.264 265tx_flow=[1|0]			  Specifies the Tx flow control. If tx_flow=0,266				  the Tx flow control disable else driver267				  autodetect.268rx_flow=[1|0]			  Specifies the Rx flow control. If rx_flow=0,269				  the Rx flow control enable else driver270				  autodetect.271===============================   ==============================================272 273 274Configuration Script Sample275===========================276Here is a sample of a simple configuration script::277 278    DEVICE=eth0279    USERCTL=no280    ONBOOT=yes281    POOTPROTO=none282    BROADCAST=207.200.5.255283    NETWORK=207.200.5.0284    NETMASK=255.255.255.0285    IPADDR=207.200.5.2286 287 288Troubleshooting289===============290Q1. Source files contain ^ M behind every line.291 292    Make sure all files are Unix file format (no LF). Try the following293    shell command to convert files::294 295	cat dl2k.c | col -b > dl2k.tmp296	mv dl2k.tmp dl2k.c297 298    OR::299 300	cat dl2k.c | tr -d "\r" > dl2k.tmp301	mv dl2k.tmp dl2k.c302 303Q2: Could not find header files (``*.h``)?304 305    To compile the driver, you need kernel header files. After306    installing the kernel source, the header files are usually located in307    /usr/src/linux/include, which is the default include directory configured308    in Makefile. For some distributions, there is a copy of header files in309    /usr/src/include/linux and /usr/src/include/asm, that you can change the310    INCLUDEDIR in Makefile to /usr/include without installing kernel source.311 312    Note that RH 7.0 didn't provide correct header files in /usr/include,313    including those files will make a wrong version driver.314 315