From: Jakob R. A. <ro...@da...> - 2000-02-08 16:53:10
|
"Kasper Verdich Lund" <ve...@da...> writes: > * packet arrives (bit set in ISR) > * IRQ 9 handler called > * packet arrives (bit set in IRR, and in ISR) > * IRQ 9 handler ends > * IRQ 9 handler called (because the bit in the IRR is transferred to ISR on > EOI) > * IRQ 9 handler ends > > Of course this doesn't work for any number of packet arrivals since the > level of buffering is static (1 buffer register). Does anyone know anything > about how it's handled by the Linux kernel? No idea. However isn't the purpose of the IRQ simply to signal that "something has happened that requires attention"? What has happened and how much attention is required isn't stated in the IRQ, so an IRQ handler for a NIC would probably process all available packets before returning, in which case we won't lose any packets. At most, we will risk firing an IRQ handler for a packet that has already been handled, but that's another discussion. In my happy-go-lucky DOS days, I wrote a serial port driver and a sound card driver using this scheme, without problems. /Jakob. -- Jakob Roland Andersen, ro...@da... Office 540.030 - Phone (8942)3141 |