Patent ID: 7295565

Claim:
A method of dynamically allocating buffer resources among multiple send queues, comprising: maintaining a set of local values for each send queue, wherein said local values include at least: a Current value configured to indicate a number of buffers currently allocated to the send queue; a Min value configured to indicate a number of buffers reserved for the send queue; and a Max value configured to indicate a maximum number of buffers that may be allocated to the send queue; maintaining a set of global values, wherein said global values include at least: an Available value configured to indicate a number of unallocated buffers; and a Reserve value configured to indicate a reserved number of said unallocated buffers, wherein Reserve is equal to the sum of the differences between Min and Current for each send queue for which Min>Current; allocating a first unallocated buffer to a first send queue for an entry to be added to the first send queue; asserting a full signal for each of the multiple send queues; updating one or more of said global values and said local values for the first send queue; and if Available>0, de-asserting said full signal for one or more of the multiple send queues.