Patent ID: 8352648

Claim:
A method for credit-based flow control, comprising: loading a first transaction layer packet from a sending device into a receiver buffer of a receiving device; loading a second transaction layer packet into the receiver buffer, wherein the second transaction layer packet is of a different packet type than the first transaction layer packet, wherein the receiver buffer is configured to simultaneously buffer a plurality of transaction layer packets that includes one or both of the first transaction layer packet and the second transaction layer packet; unloading the first transaction layer packet from the receiver buffer without return of a credit for the unloading of the first transaction layer packet from the receiver buffer; loading the first transaction layer packet into a first side buffer; sending the credit for the first transaction layer packet to the sending device responsive to unloading or anticipated unloading of the first transaction layer packet from the first side buffer; unloading the second transaction layer packet from the receiver buffer; loading the second transaction layer packet into a second side buffer, wherein the first transaction layer packet is a posted packet, and wherein the second transaction layer packet is a completion packet; and sending a first flow control update from the receiving device to the sending device after the unloading of the posted packet from the receiver buffer and prior to the sending of the credit for the first transaction layer packet.