/proc/interrupts shows multiple entries for eth0 when using the forcedeth driver

Problem:

/proc/interrupts shows multiple entries for eth0 when using the forcedeth driver

Details:

On a system using the forcedeth network driver, the driver is shown to be using multiple interrupts:

# cat /proc/interrupts
           CPU0       CPU1
  0:     239100     270736    IO-APIC-edge  timer
  1:        719       1202    IO-APIC-edge  i8042
  7:          2          1    IO-APIC-edge  parport0
  8:          0          0    IO-APIC-edge  rtc
  9:          0          0   IO-APIC-level  acpi
 12:        105          0    IO-APIC-edge  i8042
 14:       2679       3598    IO-APIC-edge  ide0
 50:        653         12   IO-APIC-level  libata, HDA Intel
 58:          0          0   IO-APIC-level  libata, ehci_hcd:usb2
 74:     254112     503550       PCI-MSI-X  eth0
 82:     214925     118570       PCI-MSI-X  eth0
 90:     155521      38490       PCI-MSI-X  eth0
233:      44120      33891   IO-APIC-level  libata, ohci_hcd:usb1
NMI:        741        780
LOC:     509822     509799
ERR:          0
MIS:          0

Solution:

This behavior is normal when using message signalled interrupts (MSI). MSI allows a device to use multiple interrupt vectors. In the case of the forcedeth drivers, the vectors are: