FAQs about Nic settings in Linux (2)

Source: Internet
Author: User
Article title: FAQ about Nic settings in Linux (2 ). Linux is a technology channel of the IT lab in China. Includes basic categories such as desktop applications, Linux system management, kernel research, embedded systems, and open source.
4 NE1000/NE2000 Nic (and its compatible card) problems
  
Problem: No PCI NE2000 compatible Nic is detected when v2.0.x is enabled.
  
Cause: The ne. c driver before v2.0.30 only knows the pci id number of the compatible Nic based on RealTek 8029. After that, the PCI NE2000 compatible network card with other PCI idnumbers is displayed, so the driver cannot detect these network cards.
  
Solution: upgrade the Linux kernel to v2.0.31 or later. It identifies IDs of five different NE2000-PCI chips that are automatically detected when the module is started or loaded. If you upgrade to version 2.0.34 or later, there will be a PCI dedicated NE2000 driver that is a little smaller but more efficient than the original ISA/PCI driver.
  
Problem: The PCI NE2000 compatible Nic is reported as ne1000 (8-bit Nic!) at startup !) Or loading the ne. o module under v2.0.x does not work.
  
Cause: Some PCI-compatible NICs do not support byte access (therefore, they are not compatible with NE2000 ). This leads to the mistaken detection of the NE1000 Nic.
  
Solution: Upgrade to v2.0.31 or later. The current driver detects this hardware Bug.
  
Problem: the performance of the PCI NE2000 Nic is poor, even if the window size is reduced according to the performance tips section.
  
Cause: a read operation is required before each write operation to obtain the highest reliability, as mentioned in the technical data Manual for the initial 8390-chip design and sale more than a decade ago. The driver can do this easily, but this operation is canceled by default from the v1.2 kernel era. One user reported that reusing this "incorrect feature" can improve the performance of the cheap PCI NE2000 compatible Nic.
  
Solution: as only one user puts forward a report to use it as a solution, do not place too much hope on it. Re-use the read operation before writing, you can simply edit the driver file under linux/drivers/net/, and cancel the annotation of the line containing NE_RW_BUGFIX, then re-build the kernel or load the corresponding module. If this is true, please send me an e-mail describing the performance difference and the network card/chip type you are using. (The ne2k-pci.c driver can also be processed .)
  
Problem: The ne2k-pci.c driver reports errors such as timeout waiting for Tx RDC on the PCI NE2000 Nic and cannot work properly.
  
Cause: The connection from your Nic or Nic to the PCI bus cannot process the long-character I/O optimization used by the driver.
  
Solution: First, check the BIOS/CMOS settings to see if the timing related to the PCI bus is too strict for reliable operations. Otherwise, use the ISA/PCI ne. c driver (or remove # define USE_LONGIO from the ne2k-pci.c) to make your Nic available.
  
Problem: no plug-and-play NE2000 Nic (such as RealTek 8019) is detected for ISA ).
  
Cause: The initial NE2000 feature does not support plug-and-play, so the Linux NE2000 driver does not support plug-and-play.
  
Solution: Use the DOS configuration disk attached to the NIC to cancel the PnP and set a specified I/O address and IRQ for the NIC. Add an option ne io = 0 xNNN in/etc/conf. modules. here, 0xNNN is the hexadecimal I/O address you set for the NIC. (Assume that you are using a modular driver; otherwise, use an ether = xNNN and eth0 parameter at startup. You can also go to BIOS/CMOS settings and change IRQ from PnP to Legacy-ISA. If you need to retain the PnP settings for compatibility with other operating systems, you can take a look at the isapnptools package. Use man isapnp to check whether it has been installed on your system. If not, browse the following connection:
  
Isa pnp Tools
  
Problem: The NE * 000 driver reported "not found (no reset ack)" at startup detection )".
  
Cause: this is related to the changes mentioned above. After confirming that 8390 is in the detected I/O address, reset it. After the network card is reset, you should notify the network card to complete the reset. Your Nic is not notified, so the driver does not think that the NE Nic exists.
  
Solution: You can use an unused mem_end16 hexadecimal value 0 xbad at startup to tell the driver that you have a bad NIC. You must provide a non-zero I/O address for the Nic when you use 0xbad to undo it. For example, if the NIC at 0x340 does not respond to resetting, use the following method:
  
LILO: linux ether = x, 0, 0 xbad, eth0
  
In this way, even if your Nic does not respond to resetting, the NIC detection will continue. If you use a driver as a module, you can provide the option "bad = 0 xbad", just like providing an I/O address.
  
Problem: The NE * 000 Nic causes the machine to crash during the first network access.
  
Cause: This problem has occurred since earlier versions of the 1.1.57 kernel, and only appears on compatible NICs with a limited number of software configurations. It seems that some special methods are needed to initialize them.
  
Solution: Several people reported that running the provided DOS software configuration program or the provided DOS driver can work on the NIC before hot start (that is, loadlin or Ctrl-Alt-Del) Linux. This indicates that these cards need to be initialized in some special way, which is slightly different from the current Linux driver.
  
Problem: No Nic is detected on the NE * 000 Ethernet card of 0x360.
  
Cause: your NE2000 Nic occupies 0x20 bytes in I/O space, so that it conflicts with the port at 0x378. Other possible devices are the second floppy controller at 0x370 (if any) and the second IDE controller at 0x376 -- 0x377. If this port has been registered by another driver, the kernel will not detect it.
  
Solution: Move your network adapter to address 0x280, 0x340, 0x320, or parallel printer is not supported during compilation.
  
Problem: The network is disconnected (NE2000) during each printing ).
  
Cause: it is the same as the previous issue, but your kernel is old and does not support check for overlapping I/O areas. Use the above solution to obtain a new kernel when there is no time.
  
Problem: No NE * 000 Ethernet card detected at 0 xNNN: 00 00 C5. (Illegal identification of yy zz)
  
Cause: first, do you have a NE1000 or NE2000 Nic at address 0xNNN? If yes, does the reported hardware address look like a valid address? If yes, your NE * 000 compatible Nic is poor. All NE * 000 compatible NICs are assumed that the 14th and 15 bytes of the sa prom on the NIC are 0x57. This is not the case for your Nic-its value is "yy zz ".
  
Solution: There are two solutions. The simplest method is to use a 0xbad mem_end value for the "no reset ack" solution described above. In this way, the identification check can be ignored when a non-zero I/O address is provided. This method does not need to re-compile the kernel.
  
The second method (for hackers) needs to modify the driver and re-compile the kernel (or module ). There is a "Hall of Shame" list in the 42 lines of the driver (/usr/src/linux/drivers/net/ne. c. This table is used to detect poor compatible NICs. For example, the DFI Nic uses "DFI" in the first three bytes of the PROM, instead of using 0x57 in the 14th and 15 bytes as required.
  
Problem: The server crashes after "8390..." or "WD..." information appears at startup. Just unplug NE2000.
  
Solution: change your NE2000 address to 0x340 or another type. In addition, you can use the "reserve =" start parameter together with the "ether =" parameter to protect the NIC from being detected by drivers of other devices.
  
Cause: your NE2000 compatible Nic has poor compatibility. An activated NE2000 is a bottomless pit that will trap other drivers in its space for automatic detection. Change NE2000 to an uncommon address to eliminate this trap from other automatic detection, and the machine can be started.
  
Problem: The host crashes during SCSI detection during startup.
  
Cause: This problem is the same as above. change the Ethernet card address or use reserve/ether to start the parameter.
  
Problem: The device crashes during sound card detection during startup.
  
Cause: impossible. it actually occurs in the silent mode SCSI detection process, just like the above problem.
  
Problem: No NE2000 detected at startup-no startup information at all.
  
Solution: There are many causes that cannot be detected, so there is no "magic solution ". The following lists some measures that may be helpful.
  
1) build a kernel that only contains the required device driver. It is confirmed that you did start from the new kernel. If you forget to run lilo, you will be started from the old kernel. (Carefully observe the build time/date reported at startup .) It sounds obvious, but we have made this mistake before. Check the ne_probe class name in the System. map file to confirm that the driver is included in the new kernel.
  
2) carefully observe the startup information. Check whether it mentions that the ne2k detection is in progress, such as "NE * 000 probe at 0 xNNN: not found (blah)", or that it quietly fails. There is a big difference here. Use dmesg | more to browse startup information after logon, or use Shift-PgUp to roll back the screen when the logon prompt is displayed after startup.
  
3) after the startup, run cat/proc/ioports to confirm that all the I/O space required by the NIC is empty. If the NIC is 0x300, the space required by the ne2k driver is 0x300-0x31f. If the driver of another device registers a port, it does not detect the address. Instead, it quietly detects the next address to be detected. Generally, the lp driver retains 0x378, or the second IDE channel retains 0x376, which causes the ne driver to stop detecting 0x360-0x380.
  
4) execute cat/proc/interrupts as above. Are you sure you have not registered any other device for the interruption you set for the Ethernet card. In this case, the detection can be performed. when the Ethernet card driver starts, it will complain that it cannot obtain the required IRQ disconnection.
  
5) If you are still worried about the failed driver, edit and add some printk () to the detection (). For example, for ne2k, you can add/delete some rows (expressed by "+" or "-") in linux/drivers/net/ne. c, as shown below:
  
  
--------------------------------------------------------------------------------
  
Int reg0 = inb_p (ioaddr );
  
+ Printk ("NE2k probe-now checking % x \ n", ioaddr );
-If (reg0 = 0xFF)
+ If (reg0 = 0xFF ){
+ Printk ("NE2k probe-got 0xFF (vacant I/O port) \ n ");
Return ENODEV;
+}
  
  
--------------------------------------------------------------------------------
  
Then it will output the information of each port to be checked. you can see whether your Nic address is detected.
  
Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.