# forcedeth driver issue

## snIP3r

hi all!

i have a problem using the onboard network controllers of my asus m2n-sli deluxe board. it uses these two controllers:

 *Quote:*   

> 
> 
> 00:08.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a2)
> 
> 00:09.0 Bridge: nVidia Corporation MCP55 Ethernet (rev a2)
> ...

 

under heavy load i get messages like this:

 *Quote:*   

> 
> 
> eth1: too many iterations (6) in nv_nic_irq.
> 
> 

 

googling told me that this can be fixed by using an option in /etc/modprobe.conf:

 *Quote:*   

> 
> 
> options forcedeth max_interrupt_work=10 
> 
> 

 

or some other number (some probing seems to be needed).

does anyone know if theres a fix for the forcedeth driver to be compiled into the kernel? or does anyone know if theres a kernel fix planed for this issue?

thx for help in advance!

greets

snIP3r

----------

## eyoung100

Do you actually use both cards at the same time??

----------

## snIP3r

 *eyoung100 wrote:*   

> Do you actually use both cards at the same time??

 

yes, i use eth0 for ppp and eth1 for internal network

----------

## eyoung100

May I ask how your PPP(I assume this is your internet connection is set up).  We may be able to combine them into one setup, thereby eliminating the need for 2 adapters, which will fix the IRQ conflict in the driver.

----------

## snIP3r

 *eyoung100 wrote:*   

> May I ask how your PPP(I assume this is your internet connection is set up).  We may be able to combine them into one setup, thereby eliminating the need for 2 adapters, which will fix the IRQ conflict in the driver.

 

hi!

here is my config /etc/conf.d/net:

```

# This blank configuration will automatically use DHCP for any net.*

# scripts in /etc/init.d.  To create a more complete configuration,

# please review /etc/conf.d/net.example and save your configuration

# in /etc/conf.d/net (this file :]!).

# ppp0 device adsl

config_ppp0=( "ppp" )

# eth0 device also for adsl

config_eth0=( null ) #for adsl config

#config_eth0=( "dhcp" )  #for installation usage

link_ppp0="eth0"

# eth1 device dhcpd internal network

config_eth1=( "192.168.0.1 netmask 255.255.255.0" )

dns_domain_lo="restriced-area.de"

plugins_ppp0=( "pppoe" )

username_ppp0='USERNAME'

password_ppp0='PASSWORD'

pppd_ppp0=(

#  "debug"      # Enables syslog debugging

  "noauth"

  "defaultroute"

  "usepeerdns"

  "holdoff 3"

  "child-timeout 60"

  "lcp-echo-interval 15"

  "lcp-echo-failure 3"

  noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp

)

depend_ppp0() {

  need net.eth0

        }

```

but the issue is only for eth1 not for eth0. i dont think the usage of the 2 card at the same time is the problem. it only opccurs under heavy load on eth1. not under "heavy" load on ppp0/eth0.

greets

snIP3r

----------

## eyoung100

PPPoE is software thats been sanwiched in your Network layer, because your ISP has more customers than it does routable IP addresses.  You obtain an IP addresss by supplying a username/password.  You need to do the following:

1.  Release your PPPoE IP address.

2.  Call your ISP, and ask them if the MAC Address is empty on your line.

3.  Purchase a router capable of doing PPPoE Authentication.

4.  Set the Router to use PPPoE as the Connection Method.

Most newer routers are capable of using PPPoE.  Adding the router will eliminate the need for eth1.  You then empty out /etc/conf.d/net so DHCP is default.  In this way, your PC asks for an IP address from the router, and the routher handles the hard work of PPPoE.  If you need help with specifics, reply and I will help.

----------

## snIP3r

 *eyoung100 wrote:*   

> PPPoE is software thats been sanwiched in your Network layer, because your ISP has more customers than it does routable IP addresses.  You obtain an IP addresss by supplying a username/password.  You need to do the following:
> 
> 1.  Release your PPPoE IP address.
> 
> 2.  Call your ISP, and ask them if the MAC Address is empty on your line.
> ...

 

thx for your help but i want to have this config - my gentoo box is my router  :Wink: 

i still think that the issue is not using both of the nic's at the same time. hoped there is another workaround for this issue rather than using the forcedeth driver as a module...

snIP3r

----------

## eyoung100

It is not Gentoo's fault nor is it the driver's fault.  It is your motherboard manufacturers fault.  Your network cards chips(both of them) are sharing an IRQ.  Under heavy load, your board forgets which chip to send data to, and since this is your router card, your home network goes down.  By eliminating one Network interface, you eliminate the IRQ conflict.

----------

## Cyker

cat /proc/interrupts to see if it is really an IRQ issue...

If so, you're stuffed - I've been searching high and low to try and find a way of re-assigning IRQs or disable IRQ sharing, but if you're using ACPI it seems its Linux' way or the highway.

On my system, it ignores BIOS settings, hardware settings - everything. If a device can be PnP'd, it just assigns the IRQs as it sees fit, ignoring whetever IRQs I've told the devices to use in the BIOS or by EEPROM.

The biggest problem I have is that, bizarrely, it only assigns things IRQs 16-21. The only stuff with an IRQ below that are things that are hard-wired to a low IRQ (e.g. timer, cascade), while all the others are empty!

The ONLY way I have found to make it not do this is to disable ACPI, but then lots of things (Power saving, CPU throttling, power button, sensors, some devices) stop working instead.

I'm waiting to test whether MSI-type interrupts work now - Previously they would cause the sky2 NIC driver to Panic.

I'm hoping the problem is fixed in .23....!

One other possible avenue you have is to try the experimental NAPI stuff ("Use Rx and Tx Polling (NAPI) (EXPERIMENTAL) (FORCEDETH_NAPI)") - This (I think) is designed to lower the IRQ load on IRQ-happy network hardware.

Another is, if you are not already, using Jumbo Frames also helps increase throughput and reduce CPU/IRQ load on gigabit hardware, but all high-rate gigabit devices must be using Jumbo Frames for this to have any benefit. (Jumbo Frames basically means using MTU > 1500. I never checked how to do it since I can't on my system - The GigE NICS are part of a 3-way bridge and all the bridge devices have to have the same MTU)

----------

## snIP3r

thx for your replies!

@cyker: i already have activated the "NAPI" option - and still have the message. all other options do not seem to be the right way for me... so i hope this will be fixed in a further kernel version...

----------

## snIP3r

hi all!

the kernel module option does not seem to work cause i get this message again on high workload for the eth device:

```

eth1: too many iterations (6) in nv_nic_irq

```

even though i have this in my /etc/modules.autoload.d/kernel-2.6:

```

forcedeth max_interrupt_work=10

```

looks like the module parameter seems to be set... kernel version is this the same as the initial post.

does anyone have a workaround or fix for this issue?

thx in advance

snIP3r

----------

