Intel IXP400 Frozen Dessert Maker User Manual


 
Intel
®
IXP400 Software
Access-Layer Components: ATM Driver Access (IxAtmdAcc) API
Programmer’s Guide IXP400 Software Version 2.0 April 2005
Document Number: 252539, Revision: 007 61
Processing primarily involves handing back ownership of buffers to clients. The rate at which this
is done must be sufficient to ensure that client-buffer starvation does not occur. The details of the
exact rate at which this must be done is implementation-dependent and not within the scope of this
document. Because the Tx-Done resource is a system-wide resource, it is important to note that
failing to poll it will cause transmission to be suspended on all ports.
Transmit Done — Based on a Threshold Level
IxAtmdAcc does provide a notification service whereby a client can choose to be notified when the
number of outstanding buffers in the transmit done stream has reached a configurable threshold, as
shown in Figure 16.
1. The control client wants to use the threshold services to process the transmitted buffers. The
ixAtmdAccTxDoneCallbackRegister() function is called to set a buffer threshold level and
register a callback. IxAtmdAcc provides the function ixAtmdAccTxDoneDispatch() to be used
by the control client. This function itself can be used directly as the callback.
IxAtmdAccTxDoneCallbackRegister allows the client to register its own callback. From this
callback the IxAtmdAccTxDoneDispatch() function must be called. An algorithm can also be
used to decide the number of IXP_BUFs to service, depending on system load or any other
constraint.
2. Sometime earlier, the data client sent data to transmit. Cells are now sent over the UTOPIA
interface and the IXP_BUFs are now available.
3. At a certain point in time, the threshold level of available buffers is reached and the control
client’s callback is invoked by IxAtmdAcc. In response to this callback, the control client calls
ixAtmdAccTxDoneDispatcher(). This function gets the transmitted buffer and retrieves the
connId associated with this buffer.
4. Based on connId, ixAtmdAccTxDoneDispatcher identifies the data client to whom this buffer
belongs. The corresponding data client’s TxDoneCallback function, as registered during a
TxVcConnect, is invoked with the IXP_BUF.
This TxDoneCallback function is likely to free or recycle the IXP_BUF.
Figure 16. Tx Done Recycling — Using a Threshold Level
AtmdAcc
Data Client
Tx Ctrl
Client
1: ixAtmdAccTxDoneCallbackRegister(mbufThreshold, callback)
2: hwSend()
4: ixAtmdAccBufferReturnCB(userId,,mbuf)
3: ixAtmdAccTxDoneDispatch()
B2286-01