Click to See Complete Forum and Search --> : Interrupts question in 2.6 kernel


ejlynch
09-22-2005, 05:15 PM
I have 3 network interfaces in a linux box that I use as a router. There are two used for incoming traffic (eth1, eth2) while the third is used for outgoing traffic (eth0).


When there are packets arriving on both network interfaces eth1 and eth2 at the same time, will the interrupt for eth2 be served first because it has the lowest interrupt number ( highest priority) ??

CPU0
0: 182981794 XT-PIC timer
1: 91243 XT-PIC i8042
2: 0 XT-PIC cascade
5: 17428 XT-PIC Intel ICH5
8: 58667 XT-PIC rtc
9: 21337263 XT-PIC acpi, ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb5, i915@pci:0000:00:02.0, eth2
10: 44793129 XT-PIC libata, uhci_hcd:usb4, eth0
11: 43244055 XT-PIC uhci_hcd:usb3, eth1
12: 2544586 XT-PIC i8042
14: 340228 XT-PIC ide0
15: 1645669 XT-PIC ide1
NMI: 0
ERR: 0


Are interrupts served based on their priority in the Linux kernel?

The reason I ask is because of the way packets from both incoming interfaces are being inserted into the queue.


eth1 and eth2 use the 3com 3c59x.c driver. This is my understanding of how the network device driver in Linux kernel handles the arrival of a packet. Is this correct ?

Interrupt generated by arrival of packet
Device driver handles interrupt

boomerang_interrupt ....places packet in rx ring buffer
boomerang_rx .... read from rx ring buffer until all data has been read
netif_rx(skb) .... hands buffer to upper layers

Parcival
09-22-2005, 06:21 PM
Please don't double post as it clutters the forum.