Intel® IXP400 Software

Access-Layer Components: ATM Driver Access (IxAtmdAcc) API

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.

Figure 16. Tx Done Recycling — Using a Threshold Level

Data Client

Tx Ctrl Client

3:ixAtmdAccTxDoneDispatch()

4:ixAtmdAccBufferReturnCB(userId,,mbuf)

AtmdAcc

1:ixAtmdAccTxDoneCallbackRegister(mbufThreshold, callback)

2:hwSend()

B2286-01

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.

Programmer’s Guide

IXP400 Software Version 2.0

April 2005

 

Document Number: 252539, Revision: 007

61

Page 61
Image 61
Intel IXP400 manual Transmit Done Based on a Threshold Level, Tx Done Recycling Using a Threshold Level