PDA

View Full Version : Ethernet not working! (forcedeth)


sazo
03-21-09, 09:22 PM
Hi!

I use archlinux and gentoo linux. I used to use wireless, but now I have the possibility to use cable.

But for some reason I can't get it to work, not in arch, gentoo, knoppix (livecd) or ubuntu (livecd).

It always times out when trying to get an IP... And on dmesg I always get the same "forcedeth: eth0: no link during initialization" error.. :-(

ethtool
[sa@Feio ~]$ sudo ethtool eth0
Settings for eth0:
Supported ports: [ MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: Unknown! (65535)
Duplex: Unknown! (255)
Port: MII
PHYAD: 19
Transceiver: external
Auto-negotiation: on
Supports Wake-on: g
Wake-on: d
Link detected: no


route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.1 * 255.255.255.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

dmesg
forcedeth 0000:00:11.0: irq 758 for MSI/MSI-X
eth0: no link during initialization.


ifconfig
[sa@Feio ~]$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:1A:92:83:1D:8D
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:22 Base address:0x4000



hope you can help!

whig
03-24-09, 02:10 AM
You have a dhcp server on a router?

Or give yourself a static IP?

sazo
03-25-09, 05:36 PM
yes I have a dhcp server on the router. which is running fine on every machine, including this one if i switch to wireless.

I tried using static ip but the problem is exactly the same.

here is my lspci output:

lspci
sa@Feio ~]$ lspci
00:00.0 Host bridge: nVidia Corporation C55 Host Bridge (rev a2)
00:00.1 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:00.2 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:00.3 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:00.4 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:00.5 RAM memory: nVidia Corporation C55 Memory Controller (rev a2)
00:00.6 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:00.7 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:01.0 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:01.1 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:01.2 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:01.3 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:01.4 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:01.5 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:01.6 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:02.0 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:02.1 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:02.2 RAM memory: nVidia Corporation C55 Memory Controller (rev a1)
00:03.0 PCI bridge: nVidia Corporation C55 PCI Express bridge (rev a1)
00:06.0 PCI bridge: nVidia Corporation C55 PCI Express bridge (rev a1)
00:07.0 PCI bridge: nVidia Corporation C55 PCI Express bridge (rev a1)
00:09.0 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a1)
00:0a.0 ISA bridge: nVidia Corporation MCP55 LPC Bridge (rev a2)
00:0a.1 SMBus: nVidia Corporation MCP55 SMBus (rev a2)
00:0a.2 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a2)
00:0b.0 USB Controller: nVidia Corporation MCP55 USB Controller (rev a1)
00:0b.1 USB Controller: nVidia Corporation MCP55 USB Controller (rev a2)
00:0d.0 IDE interface: nVidia Corporation MCP55 IDE (rev a1)
00:0e.0 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a2)
00:0e.1 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a2)
00:0e.2 IDE interface: nVidia Corporation MCP55 SATA Controller (rev a2)
00:0f.0 PCI bridge: nVidia Corporation MCP55 PCI bridge (rev a2)
00:11.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a2)
00:12.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a2)
00:13.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2)
00:14.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2)
00:15.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2)
00:16.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2)
00:17.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2)
00:18.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2)
01:00.0 VGA compatible controller: nVidia Corporation G80 [GeForce 8800 GTS] (rev a2)
04:07.0 Multimedia audio controller: C-Media Electronics Inc CM8738 (rev 10)
04:0b.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306 Fire II IEEE 1394 OHCI Link Layer Controller (rev c0)

whig
03-26-09, 02:29 AM
The lspci shows no ethernet controller
Is it disabled in bios settings? Is it working in Windows perhaps?

sazo
03-26-09, 12:40 PM
The lspci shows no ethernet controller
Is it disabled in bios settings? Is it working in Windows perhaps?

Yes it's enabled in BIOS settings, and works like a charm in Vista... although I prefer using my other linux box to using windows.. :thumbdwn:

CptDondo
04-13-09, 09:33 AM
I've been fighting this for a while. There is something really badly broken with the MCP55 ethernet + linux. For some reason the PHY gets disabled, and then there's hell to pay trying to get it back.

See for example http://www.gossamer-threads.com/lists/linux/kernel/1046277

If you google around, you'll find lots of people with this problem.

I have several of the Asus M2N-SLI Deluxe boards; they're absolutely stable under load except for this ethernet issue. I have not found a reliable way to re-enable the NIC once the PHY is shut down.

It's a software issue but how does one force a reset?

CptDondo
04-13-09, 10:11 AM
HAH! Progress of sorts.

http://patchwork.kernel.org/patch/16212/

So now i can turn on and off the links.

ethtool -s eth1 autoneg off speed 10 duplex full

turns on the link, and gets me half-duplex, 10mb/sec. Not much, granted.

ethtool -s eth0 autoneg off speed 100 duplex full

causes the link to go up and down on about a 2 second cycle.

ethtool -s eth1 autoneg on

causes the link to drop.

So the problem is in the autoneg code. It's a driver issue. I've tried the patch; no joy but I have yet to reboot the system.

CptDondo
04-15-09, 10:56 AM
I've been reading the forcedeth.c code.

So far I've established that it does recognize the Marvell PHY. AFAIK, the PHY on the board is 88E1116, so that much is right. OK, not much progress.

In nv_probe, there are some lines that should turn on the PHY. I stuck some printk in there to see what's happening. Turns out nothing is happening..... powerstate remains 0? Does this mean that the power is already on? Or that we're reading/writing the wrong register?

if (id->driver_data & DEV_HAS_POWER_CNTRL) {

/* take phy and nic out of low power mode */
powerstate = readl(base + NvRegPowerState2);
printk(KERN_INFO "Turning on power: 0x%04x.\n",powerstate);
powerstate &= ~NVREG_POWERSTATE2_POWERUP_MASK;
if ((id->device == PCI_DEVICE_ID_NVIDIA_NVENET_12 ||
id->device == PCI_DEVICE_ID_NVIDIA_NVENET_13) &&
pci_dev->revision >= 0xA3)
powerstate |= NVREG_POWERSTATE2_POWERUP_REV_A3;
printk(KERN_INFO "Writing powerstate: 0x%04x.\n",powerstate);
writel(powerstate, base + NvRegPowerState2);
powerstate = readl(base + NvRegPowerState2);
printk(KERN_INFO "Powerstate 0x%04x.\n",powerstate);
}

[ 3936.277196] forcedeth: Reverse Engineered nForce ethernet driver. Version 0.64.
[ 3936.277223] forcedeth 0000:00:08.0: PCI INT A -> Link[APCH] -> GSI 22 (level, low) -> IRQ 22
[ 3936.277230] forcedeth 0000:00:08.0: setting latency timer to 64
[ 3936.277331] nv_probe: set workaround bit for reversed mac addr
[ 3936.277337] Turning on power: 0x0000.
[ 3936.277339] Writing powerstate: 0x0000.
[ 3936.277343] Powerstate 0x0000.
[ 3936.278352] 0000:00:08.0: open: Found PHY 5040:0003 at address 19.
[ 3936.796061] 0000:00:08.0: phy reset
[ 3937.316809] forcedeth 0000:00:08.0: ifname eth0, PHY OUI 0x5043 @ 19, addr 00:1e:8c:6f:a5:27
[ 3937.316816] forcedeth 0000:00:08.0: highdma csum vlan pwrctl mgmt gbit lnktim msi desc-v3
[ 3937.317113] forcedeth 0000:00:09.0: PCI INT A -> Link[AMC1] -> GSI 20 (level, low) -> IRQ 20
[ 3937.317120] forcedeth 0000:00:09.0: setting latency timer to 64
[ 3937.317200] nv_probe: set workaround bit for reversed mac addr
[ 3937.317206] Turning on power: 0x0000.
[ 3937.317209] Writing powerstate: 0x0000.
[ 3937.317213] Powerstate 0x0000.
[ 3937.318317] 0000:00:09.0: open: Found PHY 5040:0003 at address 19.
[ 3937.379044] forcedeth 0000:00:08.0: irq 29 for MSI/MSI-X
[ 3937.379236] eth0: no link during initialization.
[ 3937.836062] 0000:00:09.0: phy reset
[ 3938.356857] forcedeth 0000:00:09.0: ifname eth1, PHY OUI 0x5043 @ 19, addr 00:1e:8c:6f:be:40
[ 3938.356864] forcedeth 0000:00:09.0: highdma csum vlan pwrctl mgmt gbit lnktim msi desc-v3
[ 3938.417202] forcedeth 0000:00:09.0: irq 30 for MSI/MSI-X
[ 3938.417396] eth1: no link during initialization.

(this is getting more urgent; I rebooted the machine and lost both network ports. Instead of dual-gigabit I'm running off an ancient PCI card. I'm willing to test/build/debug, but I need some input from those who understand the forcedeth code....)

dkjkj
04-19-09, 06:34 PM
Just to add on OpenSuse 11.0 I have a problem what the link starts flapping at random times. It has noting to do with the connection. Have tried to change port on switch.
Hardware Supermicro server nVidia MCP55 bridge rev a3. Forcedeth ver 0.61 from Open Suse.

Harri
04-23-09, 10:50 AM
I got the same problem (no link at init) on a shiny new Acer Revo (i.e. the Ion platform). Sometimes it gets a link, but usually it doesn't. Too bad.

Sasha_A
06-15-09, 12:38 AM
alias eth0 forcedeth
options forcedeth optimization_mode=2 msi=1 dma_64bit=1 phy_power_down=0



I have a DHCP server running for the home LAN here, and as of kernel release 2.6.29 there were some changes to the forcedeth driver code, which powered down the NIC during reboots/power off. It caused havoc for many, because the NIC did not power up at next boot.
I couldn't get an IP address without repeatedly restarting the network a bunch of times, and never got an IP during boot, it just hung.

The driver regression was reverted in 2.6.29.3 or .4 but still the default behavior seemed to be to remain powered off.

What I posted above is from my 'forcedeth' file in /etc/modprobe.d folder.
Notice the option "phy_power_down" option! It makes the NIC stay powered up during reboots etc.. Voila! Now it works perfect again, getting its IP from DHCP in a blink of an eye during boot.

You can use either the 'modinfo' command, or look at the bottom of the forcedeth.c sourcecode, for all the parameters you can pass to the driver.

Good luck; hope this helps.

Sasha

paix
06-19-09, 06:42 AM
options forcedeth optimization_mode=2



Hi,

what means optimization_mode=2 ?

I've looked to the sources (2.6.18, 2.6.24, 2.6.29) and found next:

/*
* Optimization can be either throuput mode or cpu mode
*
* Throughput Mode: Every tx and rx packet will generate an interrupt.
* CPU Mode: Interrupts are controlled by a timer.
*/
static int optimization_mode = NV_OPTIMIZATION_MODE_THROUGHPUT;

module_param(optimization_mode, int, 0);
MODULE_PARM_DESC(optimization_mode, "In throughput mode (0), every tx & rx packet will generate an interrupt. In CPU mode (1), interrupts are controlled by a timer.");


i.e by default optimization_mode is "0" (throughput mode), and possible change to "1" (CPU mode)

vish_acer_revo
08-08-09, 06:53 AM
So did anyone workout how to get the wire lan working on on the acer revo running ubuntu? I've got the same problem, network card has no link but the wireless card works fine.

Harri
08-08-09, 12:25 PM
I would recommend to give Sasha's config file a try.

Another option would be to upgrade to kernel 2.6.30.4. Works fine for me.