Intel® IXP400 Software
Access-Layer Components: NPE Message Handler (IxNpeMh) API
Programmer’s Guide IXP400 Software Version 2.0 April 2005
Document Number: 252539, Revision: 007 227
15.4 Uninitializing IxNpeMh
The IxNpeMh should be uninitialized prior to unloading a kernel module (this will unmap all
memory that has been mapped by IxNpeMh). If possible, IxNpeMh should also be uninitialized
before a soft reboot.
Here is a sample function call to uninitialize IxNpeMh:
Note: IxNpeMh can only be initialized from an uninitialized state and can only be uninitialized from an
initialized state. If this order is not followed, for example by uninitializing an uninitialized
IxNpeMh, then unpredictable behavior will result. Calling any other IxNpeMh API functions after
unloading will also cause unpredictable results.
15.5 Sending Messages from an Intel XScale® Core Software Client to an NPE
Access-layer components — such as ixEthAcc and ixHssAcc — do all of their own message
handling. This section describes the process of how messages are sent and processed so someone
who is using IxNpeMh can understand what is going on in the background and gain insight into
some performance issues.
There are two types of messages to send to an NPE: unsolicited and solicited. The first is just a
simple message — that is, all it does is send a block of data. The second type sends data, but also
registers a function to handle a response from the NPE.
The following sections give an overview of the process.

15.5.1 Sending an NPE Message

The scenario of sending a messages from an Intel XScale core software client to an NPE (as shown
in Figure 71) is:
1. The client sends a message to the IxNpeMh component, specifying the destination NPE.
2. The IxNpeMh component checks that the NPE can accept a message.
If not, the send will fail.
3. The IxNpeMh component sends the message to the NPE.
Note: If an NPE is busy, the message can be resent before the fail is returned. Because the action of
rapidly messaging the NPE will consume the AHB bandwidth, the number of times the message
will be sent is passed as a parameter to the send function; the default value is 3 (two retries).
ixNpeMhUnload();