Intel® IXP400 Software
Programmer’s Guide IXP400 Software Version 2.0 April 2005
Document Number: 252539, Revision: 007 225
Access-Layer Components:
NPE Message Handler (IxNpeMh) API 15
This chapter describes the Intel® IXP400 Software v2.0’s “NPE Message Handler API” access-
layer component.

15.1 What’s New

There are no changes or enhancements to this component in software release 2.0.

15.2 Overview

This chapter contains the necessary steps to start the NPE message-handler component.
Additionally, information has been included about how the Message Handler functions from a
high-level view.
This component acts a pseudo service layer to other access components such as IxEthAcc. In the
sections that describe how the messaging works, the “client” is an access component such as
IxEthAcc. An application programmer will not need to do any coding to directly control message
handling, just the initialization and uninitialization of the component.
The IxNpeMh component is responsible for sending messages from software components on the
Intel XScale® Core to the three NPEs (NPE A, NPE B, and NPE C). The component also receives
messages from the NPEs and passes them up to software components on the Intel XScale core.
This encapsulates the details of NPE messaging in one place and provides a consistent approach to
NPE messaging across all components. Message handling is a collaboration of Intel XScale core
software (IxNpeMh) and the NPE software.
When sending a message that solicits a response from the NPE, the client must provide a callback
to the IxNpeMh component to hand the response back. For unsolicited messages, the client should
register appropriate callbacks with the IxNpeMh component to hand the messages back.
The IxNpeMh component relies on the IDs of solicited and unsolicited messages to avoid “over-
lapping” and determine if a received message is solicited or unsolicited.
Each NPE has two associated data structures — one for unsolicited message callbacks and another
for solicited message callbacks.
Messages are sent to the NPEs in-FIFOs, while messages are received from the NPEs out-FIFOs.
Both the in-FIFO and out-FIFO have a depth of two messages, and each messages is two words in
length.
When sending a message that solicits a response, the solicited callback is added to the end of the
list of solicited callbacks. For solicited messages, the first ID-matching callback in the solicited
callback list is removed and called. For unsolicited messages, the corresponding callback is
retrieved from the list of unsolicited callbacks.