Calvin
Thu Nov 20 07:36:21 CST 2003
Hi Stephan,
In a network intensive environment, when receive DPC scans the descriptor
list for received packet in the loop, it has to get out of the loop after
certain number of packet are scanned to limit the time spent in DPC, (in the
case of ndistester performance blast) then my options are:
a) indicate the scanned packets and re-enable the RX interrupt.
b) indicate the scanned packets but keep the RX interrupt disabled, let the
next DPC for Isr (could be tx/rx or anything else) handle the rest of the
packets.
c) indicate the scanned packets but keep the RX interrupt disabled, set a
countdown timer to handle the rest of the packets.
I found different options are good at handling different size of receive
packets. May I know how you handle this in your driver?
Thanks a lot,
Calvin
"Stephan Wolf" <stewo68@hotmail.com> wrote in message
news:q9fnrvsvpo8ef2jrl8ute3ldm3pma1pu50@4ax.com...
> I think there is no general rule as to how many (hardware) interrupts
> can be generated / handled per second. There are just too many
> factors.
>
> As a general rule, however, the number of interrupts per second should
> be as small as possible. You seem to be saying this is not for a
> production driver/application?
>
> IIRC, some years ago we were able to generate about 30K to 40K IRQ/s
> on a Pentium-500 under NT 4.0 (Gigabit Ethernet NIC). We added
> Interrupt Moderation to both the hardware and driver such that we can
> handle several interrupt events in just one interrupt.
>
> What one usually does in software is to disable the adapter's IRQ line
> in the ISR and re-enable it at the end of the DPR (DPC). The DPR is
> implemented as a loop that re-reads the adapter's interrupt source
> register right before exiting the loop. If there is another interrupt
> event waiting to be serviced on the adapter, do not exit the loop.
>
> See also
>
http://www.microsoft.com/whdc/hwdev/tech/network/NetAdapters-Drvs.mspx
>
> Stephan
> ---
> On Tue, 18 Nov 2003 14:46:01 -0800, "Roger Levy"
> <anonymous@discussions.microsoft.com> wrote:
>
> >I could not find any up to date information using Google
> >Groups on this question which is quite simply is there a
> >guideline for the maximum number of interrupts a second
> >that can be processed by a Windows 2000/XP system running
> >on a CPU such as an AMD XP-1800+ (approx 1.5 GHz)? The
> >problem arises because I need to deal with a CBR ATM stream
> >running at about 7.5 Mbps and the hardware generates an
> >interrupt for each ATM cell. The math works out to about
> >20,000 interrupts per second in each direction or 40,000
> >sustained interrupts/second if I attempt full duplex
> >communications. Is 40,000 achievable? 20,000? Assume the
> >machine will be doing very little else while running this
> >application.