Patent ID: 7127534

Claim:
In a system for executing write and read data commands, an apparatus for managing read and write data congestion, the apparatus comprising: a shared read/write buffer pool of blocks for temporarily storing write data to be sent to a peer device and read data received from the peer device; a receive list memory which contains descriptor pointers to free blocks and blocks filled with read data in the shared read/write buffer pool; a transmit list memory which contains descriptor pointers to free blocks and blocks filled with write data in the shared read/write buffer pool; and a processor programmed for preventing an initiation of a new write data command until pending read data requests have been processed enough to free up sufficient blocks in the buffer pool to accommodate the data of the new write data command by determining a number of blocks in the shared read/write buffer pool that will be required to store the read or write data for the pending read data requests and the new write data command, determining a number of free blocks in the shared read/write buffer pool, and throttling the new write data command if the number of free blocks in the shared read/write buffer pool is insufficient to store the read data for the pending read data requests and the write data for the new write data command.