NDIS DPC/ISR running in same thread in CE 5.0



It appears that in CE 5.0, an NDIS miniport's ISR (MiniportISR) and
DPC(MiniportHandleInterrupt) now run in the same thread. This is a change
from CE 4.x.

Assuming there is no way to go back to the way things were, how can I
separate servicing the hardware from reporting packets and line status
changes to the stack ? Previously, the ISR was unloading RX packets and
buffering them to be passed up the stack in the DPC. Now, ISR can't interrupt
the DPC, and I'm dropping packets due to the limited number of buffers on the
NIC.

Is there some way to indicate packets (NdisMIndicatePackets) outside of
these two routines ? Can I spawn my own thread or create a 'work item' that
would run in a different thread ?

.



Relevant Pages

  • Dropped packets via ISR
    ... half mangled with some images and screwed up tables or ... Notice the 'Continuation packets' in the good packet loss image. ... I've troubleshot this down to the ISR and provider uplink. ...
    (comp.dcom.sys.cisco)
  • Re: Interrupts are not coming sometime in NIC miniport
    ... Is this HandleInterrupt routine your ISR or your DPC? ... After this the ISR should return because it has nothing else to do. ... Is this interrupt for me? ...
    (microsoft.public.development.device.drivers)
  • Re: Interrupts are not coming sometime in NIC miniport
    ... An ISR should do only what is absolutely necessary, ... This is usually done by reading some interrupt register on the ... The DPC then does all the real work. ... Fill up blob with data from the NICs data buffers. ...
    (microsoft.public.development.device.drivers)
  • Re: 25 microseconds?
    ... latencies are typically in range of a small number of microseconds. ... a hard time seeing how draining the FIFO in a DPC would reduce throughput ... Instead of giving my opinions about what you should do in an ISR, ... the ISR typically runs between 50 to 55 microseconds. ...
    (microsoft.public.development.device.drivers)
  • Re: 25 microseconds?
    ... > Bringing in a thread from another discussion, on modern machines, DPC ... > latencies are typically in range of a small number of microseconds. ... >> Instead of giving my opinions about what you should do in an ISR, ... the ISR typically runs between 50 to 55 microseconds. ...
    (microsoft.public.development.device.drivers)