Intel IXP400 Frozen Dessert Maker User Manual


 
Intel
®
IXP400 Software
Access-Layer Components: Queue Manager (IxQMgr) API
April 2005 IXP400 Software Version 2.0 Programmer’s Guide
272 Document Number: 252539, Revision: 007
2. When the NPE receives a packet, it updates the Rx queue with location of the buffer.
3. When the watermark is crossed the status flag gets updated corresponding to that queue.
4. The polling thread calls the dispatcher.
5. The dispatcher loop gets the status of the updated flag and resets it.
6. The dispatcher invokes the registered access component.
7. The access-layer components re-routes the call back to the client and the client gets the buffer
pointer through the callback on the Rx queue through the access-layer.
Following this, the Intel XScale core may allocate a free buffer from the memory pool to the
RxFree queue for the next incoming packet from the NPE.
18.10 Livelock Prevention
Livelock occurs when a task cannot finish in an expected time due to it being interrupted. The
livelock prevention feature allows the critical task as in case of voice processing, being serviced by
a particular queue, to run for a given set of time without it being interrupted in event of a system
overload. For this to happen, a periodic queue is assigned to the critical task. Periodic queues are
defined as queues which generate an interrupt at a regular interval leading to a task that runs for a
set length of time (periodic task). Sporadic queues are queues that can generate an interrupt at any
time. Livelock prevention is used to ensure that a periodic task is not interrupted by servicing for
queues set as sporadic. This is achieved by disabling notifications for sporadic queues while the
periodic task is running. When the periodic task is completed the sporadic queues have their
notifications re-enable. Any servicing required for sporadic queues will occur at this time.
Figure 91. Dispatcher in Context of a Polling Mechanism
B3804-01
Low Group
High Group
0
31 32
63
AQM
Queue Status Bus
to NPEs
NPE
2
Qmgr
Component
Access
Component
5
Get Queue-Status
User
Callback
1
Status
Flags
6
Register callback
Hardware
User Poll
thread
4
3
Get the Queue
7