Intel® IXP400 Software

Access-Layer Components: HSS-Access (IxHssAcc) API

All the buffers have the same length. When the channelized service is initialized by ixHssAccChanConnect(), the pointer to the pool, the length of the circular buffers, and a parameter bytesPerTStrigger are passed to IxHssAcc, as well as a pointer to the an ixHssAccChanRxCallback() Rx callback function.

Figure 69 shows how the circular buffers are filled with data received though the HSS ports. When each of the N channels receive bytesPerTStrigger bytes, the Rx callback function will be called, and an offset value rxOffset is returned to indicate where data is written into the circular buffer. Note that rxOffset is shared for all the circular buffers in the pool. rxOffset is adjusted internally in the HSS component so that it will be wrapped back to the beginning of the circular buffer when it reaches the end of the circular buffer.

The client has to make sure the Rx data is processed or moved elsewhere before being overwritten by the HSS component. Hence the length of the circular buffers has to be chosen properly. The buffer need to be large enough for data to be read by the client and complete any possible in-place processing that would need to occur before the NPE rewrites over that memory. Understanding the client application’s read and processing latency, the size of the data unit needed by the client application for processing, and the rate at which the NPE writes data to a buffer at a given channel rate, are useful in making this calculation.

Figure 69 on page 216 shows the data flow of the channelized Receive service.

Programmer’s Guide

IXP400 Software Version 2.0

April 2005

 

Document Number: 252539, Revision: 007

215

Page 215
Image 215
Intel IXP400 manual Document Number 252539, Revision 215