Linux - NetworkingThis forum is for any issue related to networks or networking.
Routing, network cards, OSI, etc. Anything is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I have been working on this for many days with great frustration. Time to give it another go...
I bought a Toshibe Satellite M45-S359, which has a Marvell Yukon 88E8036 PCI-E Fast Ethernet Controller in it. I can't get the thing to work. I don't have much Linux experience, but have ~20 years with Unixes as systems programmer, admin, etc.
To prepeare for installing the sk98lin drivers that others here said are needed, I downloaded the source for my kernel and (re)compiled it to ensure that I had that much right. Took a while, but I got there. Recompiled version works exactly the same as the installed binary as far as I can tell.
I then downloaded and installed the sk98lin drivers, installing with the kernel patch method. All went well. Recompile, including make clean, looked okay. No luck bringing up the interface. "ifup eth0" gives me "Determining IP information for eth0... failed; no link present. Check cable?". The cable is attached, and DHCP works fine in Windows (eth0 is config'd for DHCP).
"ls /proc/net/sk98lin" shows eth0, so the driver found the interface.
"ethtool -i eth0" shows driver sk98lin and version 8.28.1.3 (01)
What exactly isn't working?
Can you not see the interface at all?
Get an error when assigning an ip?
Able to assign an ip, but can't ping?
What does the following commands output?
Code:
ifconfig
ifconfig -a
Is the sk98lin module loaded?
Code:
lsmod | grep sk98lin
Can you load the module?
Code:
modprobe sk98lin
Can you assign it an ip?
Code:
ifconfig eth0 192.168.1.101
Can you see it's ip address with:
Code:
ifconfig eth0
Do you have a firewall enabled?
Code:
iptables -L
I had problems with that module that came in the 2.4.x kernel. I had to download the driver (after compiling my new kernel/modules) and compile/install the driver. After which, it works beautifully.
PS: I wasn't even able to load the module. I'd do:
Code:
modprobe sk98lin
and get an error saying no device was found.
The driver version you are using isn't the latest. I just downloaded it today, and I got version 8.31.2.3
I uploaded the source in case you want that version.
It's at: www.compugenic.com/install-8_31.tar.bz2
Last edited by WindowBreaker; 03-23-2006 at 07:13 PM.
First and foremost - thank you for your assistance.
Thanks also for the updated driver. I downloaded and installed it with the kernel patch method. Recompiled and 'ethtool -i eth0' now shows version 8.31.2.3 but we're still no good.
FYI: laptop is multi-boot (Grub) with Windows, FC4 and, currently, openSUSE 10. Neither openSUSE 10 nor Ubuntu 5.10 work with the Marvell out of the box (okay, off the DVD).
There is a wireless network interface that is turned off. There is an on-off switch and it is off. This interface often shows up as eth1 or, on a bad day, eth0. I may say more on this in another post. If it shows up as eth0, I have a ton of errors booting. Let me know if you want more on this.
When booting, I get one error. This part of the dmesg output is:
ide0: I/O resource 0x1F0-0x1F7 not free.
ide0: ports already in use, skipping probe
let me know if you want more info on this.
The Fedora has been recently reinstalled from scratch, formatting the partition with ext2. I installed anything and everything I might want to play with. That would be almost everything. I have done very little config since install. I'm trying to get the network working before doing anything else. I do have a partition shared between the OSen.
Your question about iptables made sense. It's a Linux feature I don't know well and would explain the symptoms. 'service iptables stop' didn't help. More details below.
Now for your questions...
Linux is Fedora Core 4 - 2.6.11-1.1369
What's not working: DHCP will not pull an IP on either of two networks that work with this laptop in Windows. When configured with a static IP, I can ping the interface but not the gateway (destination host unreachable from the interface). More on this below.
I can configure either DHCP or static okay. I usually use the GUI "System Settings" -> "Network" on the Gnome desktop.
With a static IP I can ping the interface, but not the gateway or other hosts. I get 'host unreachable' from the interface (see below).
I had set the static IP to 192.168.123.111. The gateway is 192.168.123.254. Netmask is 255.255.255.0. The system was rebooted with this configuration.
I did "service iptables stop" before this output and before all ping tests. If this does not effectively disable iptables, let me know what command does.
netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.123.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.123.254 0.0.0.0 UG 0 0 0 eth0
ping 192.168.123.123
PING 192.168.123.123 (192.168.123.123) 56(84) bytes of data.
64 bytes from 192.168.123.123: icmp_seq=0 ttl=64 time=0.036 ms
64 bytes from 192.168.123.123: icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from 192.168.123.123: icmp_seq=2 ttl=64 time=0.033 ms
64 bytes from 192.168.123.123: icmp_seq=3 ttl=64 time=0.035 ms
64 bytes from 192.168.123.123: icmp_seq=4 ttl=64 time=0.034 ms
64 bytes from 192.168.123.123: icmp_seq=5 ttl=64 time=0.035 ms
ping 192.168.123.254
PING 192.168.123.254 (192.168.123.254) 56(84) bytes of data.
From 192.168.123.123 icmp_seq=0 Destination Host Unreachable
From 192.168.123.123 icmp_seq=1 Destination Host Unreachable
From 192.168.123.123 icmp_seq=2 Destination Host Unreachable
From 192.168.123.123 icmp_seq=4 Destination Host Unreachable
From 192.168.123.123 icmp_seq=5 Destination Host Unreachable
From 192.168.123.123 icmp_seq=6 Destination Host Unreachable
Your post uncovered something interesting which may be the cause of your problem.
First off, you said at start-up, the kernel reports the following:
Quote:
ide0: I/O resource 0x1F0-0x1F7 not free.
ide0: ports already in use, skipping probe
I/O ports are memory ranges which the kernel maps to device registers (internal memory on devices). It is how the kernel communicates with the devices on the computer. For instance, the kernel wants the device to transmit a packet of data. The kernel simply writes the data packet to the device's registers by using it's I/O memory addresses. Then it places a command in another register - again using the I/O memory addresses corresponding to the device.
You probably already know all that [above], but just thought I'd mention it.
Now, lets compare the I/O range of eth0 (which we know wasn't setup properly) with that of eth1.
Notice that eth1 has a valid range of b800b000-b800bfff. However, eth0 has an invalid range of cc000000-0.
I'm not a kernel hacker so I can't tell you exactly why the kernel shows it as cc000000-0. But I believe the trailing '0' means that no I/O addresses were assigned to the device.
Now for how to fix it. You are going to have to play with some settings. First off, we know the kernel tried assigning "0x1F0-0x1F7" as the I/O range for eth0, but it was already in use. So if you can disable the device using it, it may fix the problem. Many times you can go into a computer's BIOS setup program, and disable onboard devices (serial/parallel ports, audio, etc).
Try running the command "cat /proc/iomem" to see which I/O addresses are assigned to which devices.
Here's what mine looks like:
Quote:
cat /proc/iomem
00000000-0009fbff : System RAM
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
3ffb0000-3ffbffff : ACPI Tables
d0000000-d3ffffff : PCI device 1106:0204 (VIA Technologies, Inc.)
f6b00000-feafffff : PCI Bus #01
f8000000-fbffffff : ATI Technologies Inc Radeon R100 QD [Radeon 7200]
ff6ffc00-ff6ffcff : VIA Technologies, Inc. VT6102 [Rhine-II]
ff6ffc00-ff6ffcff : via-rhine
ff780000-ffffffff : reserved
Again, I chopped off some lines for readability.
The other option is to pass parameters to the kernel module when you load it. I know that sk98lin has parameters it can take. Normally it's already loaded when you boot up your system. You can however unload the module by doing:
Code:
ifconfig eth0 down
rmmod sk98lin
Then you can reload the module while passing it some parameters. I don't know exactly how to specify an I/O range to the sk98lin module when you load it, so I did a search on google for the phrase (in double quotes): "modprobe sk98lin". The first hit is from syskonnect's website, the maker of the module. The link itself isn't working, but if you hit the "cached" link on google's results page, it should take you to the document explaining the module's parameters.
Let me know what you find.
Last edited by WindowBreaker; 03-24-2006 at 02:39 AM.
Thanks for pointing out /proc Pablo - that's useful information in there.
I've had accidental success today, pointing to a disabled IRQ 11, but I haven't been able to repeat it. Anyway, I'll answer your questions first then go over that.
I'm not sure why you say that the kernel tried assigning "0x1F0-0x1F7" as the I/O range for eth0. The error message has ide0: in front, but what do I know. It would seem to me that the sk98lin is using IRQ 11, I/O C000-C0FF, and memory range CC000000-CC003FFF. These are the resources reported by Windows and show in the /proc files as below:
a000-bfff : PCI Bus #02
c000-dfff : PCI Bus #01
c000-c0ff : 0000:01:00.0
c000-c0ff : sk98lin
e000-e007 : 0000:00:02.0
/proc/iomem (partial)
Code:
c8000000-cbffffff : PCI Bus #02
cc000000-cfffffff : PCI Bus #01
cc000000-cc003fff : 0000:01:00.0
cc000000-cc003fff : sk98lin
d0000000-d007ffff : 0000:00:02.0
It seems to me that the resources are assigned cleanly (no conflicts). Let me know if you want more info on this.
Again, thank you for pointing me at /proc and describing the whole resources thing. It got my head in the right place.
As I said above, the interface came up for a moment today. I was able to ping other hosts on the network. I rebooted and it started failing again. I rebooted a few more times, but without further success. There is one thing I did before it worked, I went into the network config tool in Gnome (referenced before) and set the resources (IRQ, IO and Memory Ranges). They were blank (a problem?) so I set them to the 'correct' values.
There is a message I get during boot that did not show up on the boot when the network card worked. That message is
Quote:
Disabled IRQ #11
. The Marvell is on IRQ 11. I checked ifconfig when I could ping other hosts, and the memory range was still CC000000-0. I really wish I had gotten the dmesg output then.
I did get the dmesg output when the card was failing and here are some parts that may be informative:
I have bolded the "irq 11: nobody cared!" and "Disabling IRQ #11".
Let me know if you want me to post the whole dmesg output. It seems a bit large, so I hesitate to do it. I don't have an FTP or Web site to put it on, but may have in a couple of days. Let me know if you want this or other additional information.
At this time, I think I need to stop the kernel from disabling IRQ 11. I don't know why it is doing this, or how to stop it. I guess I could update the motherboard's BIOS, or try Fedora Core 5. I lean towards trying Fedora Core 5. What do you think?
You're right about the I/O ports I mentioned being assigned to ide0. I was tired and thought it said eth0.
I know you said you compiled the kernel and modules - are you using that new kernel now? I ask because the kernel sources must be available for the driver to compile correctly.
Here's how I did it on Slackware 10.2
1. Download Kernel source code to /usr/src/linux-2.4.31
2. Make a symbolic link called "/usr/src/linux" that points to /usr/src/linux-2.4.31. (This is required later when I compile the driver).
3. Configure and compile the kernel and all modules (make menuconfig && make bzImage && make modules && make modules_install).
4. Install kernel, all modules, and reconfigure lilo bootloader.
5. Reboot to new kernel.
6. Try loading the sk98lin that compiled from the kernel source code with "modprobe sk98lin". This kept giving me an error that the device wasn't found. That's when I decided to download and compile the latest version of the driver.
7. Compiled & Installed new sk98lin, which replaced my old driver (which didn't work). Soon as it was done I was able to successfully load the driver and use the NIC.
The driver documentation states that /usr/src/linux should point to your kernel source. If you downloaded and compiled a new kernel but forgot to update the symlink (/usr/src/linux) to point to the new kernel sources, maybe it didn't compile correctly.
That would be my best guess. If I'm right and it's a software/driver issue, then you should be able to use the NIC when booting from a live linux CD. I would recommend you download Knoppix linux which has very good driver support built-in. The burn it onto a CD and boot from the CD. It's a live-linux CD so won't alter anything on your hard drives. By doing this and seeing if your NIC works, you would at least be able to isolate the problem to a software issue and not waste time fighting with the hardware, BIOS settings, etc. However, if the module loads within knoppix but NIC still isn't working, then it probably is a hardware related issue and you don't have to try recompiling the kernel and/or driver.
By the way, did you remember to compile PCI-Express support into the kernel (CONFIG_PCIEPORTBUS). It is found under "bus options -> pci express". Just thought I'd throw that out there since I noticed your NIC is PCI-E
I think things like that should work out of the box. The original drivers are provided for Linux, and if Linux wants to go mainstream desktop, then they should cover those things. I have the same adapter on my Toshiba m45-s331 and it works on Fedora Core 5.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.