Specifications
HighWire MTP-2 - 1.2, September 4, 2002 Using the Cross Bus Interface 33
This library-messaging mechanism allows the application (or layers above it)
to impose flow control by allocating their buffers from a fixed size pool. When
messages cannot be dispatched across the interface, the number of available
buffers shrinks since the application may not free them back to the pool until
they have been sent. When the pool contains no further available buffers, the
application cannot send any more data.
Send-side flow control applies to both control and data messages in exactly
the same way.
4-2-8. Receive-side flow control Receive-side flow control is not an integral part of the CBI interface; rather, it
is managed by IPS signals as part of the CBI_M2 sub-interface.
Receive-side flow control is simpler than send-side flow control as far as the
application is concerned. The underlying MTP2 has a fixed size buffer pool for
data messages, and messages sent to the MTP3 implementation continue to
count against the pool limit until the MTP3 informs the MTP2 that they no
longer need to be counted in this manner.
Therefore the MTP3 (or higher layers) must make a conscious decision about
when it no longer wishes a particular message to count against the MTP2
buffer pool limit. The MTP3 should then send a CBI_M2_CREDIT message
across the interface. Note that it is obviously inefficient to send one credit
message in response to every received message, so the message definition
allows MTP3 to wait until it has finished with a number of received messages
and then send just one credit message down to MTP2 granting multiple
credits. It is left to the application (which originally set the size of MTP2’s
buffer pool on the CBI_M2_UPDATE_PARMS message) to determine a suitable
interval for sending such messages, which should be a small fraction of the
size of the buffer pool itself.