RE: NDIS DPC/ISR running in same thread in CE 5.0



Thanks. That appears to address my issue.

One follow-on question. Previously, MiniportISR ran at 116,
MiniportHandlerInterrupt ran at 118, and other threads were either at 118 or
lower (or at the caller's priority).

If I set MiniportISR/MiniportHandlerInterrupt to run at 116, and my
indication thread at 118, are there other threads at 116 or 117 involved with
NDIS that I need to be concerned about locking up ?

""Soemin Tjong [MSFT]"" wrote:

> There is no mechanism to separate the threads calling MiniportISR( ) and
> MiniportInterruptHandler( ), if your NIC buffers are really limited and you
> must rely on system memory and a quick turn around, in CE you can spin a
> thread to do the indication job. You'd want its priority to be near the
> ISR priority (116) and if it's serialized miniport driver, it must call
> NdisIMSwitchToMiniport( ) before it calls NDIS functions and
> NdisIMRevertBack( ) afterwards.
>
> Before you do that, another suggestion is to make sure that your
> MiniportInterruptHandler( ) uses the more optimal
> NdisMIndicateReceivePacket( ) and indicate as many packets as it can in one
> indication compared to one packet at a time.
>
> -- Soemin ---
> Windows CE CoreOS/Networking
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
>
.



Relevant Pages

  • RE: NDIS and priorities
    ... NDIS was changed to keep the packet processing on one thread as ... In XP, MiniportISR is called in a true ISR context, so there is limited ... | functions in the miniport run at priority 118. ...
    (microsoft.public.windowsce.platbuilder)
  • Re: How does NDIS IST and ISR work ?
    ... DPC thread inside NDIS with priority 118). ... The MiniportISR() should return the QueueMiniportHandleInterrupt OUT ... since the MiniportISRis actually not a real ISR in CE (it's ...
    (microsoft.public.windowsce.platbuilder)