Claims
- 1. An I/O adapter for a packet-switched network, comprising:
a buffer memory; a packet disassembler receiving request packets from a requester over said network and building blocks from said packets in queues in said buffer memory, said request packets including packets of a first type requesting that data be sent to the requester and packets of a second type containing data sent by the requester; wherein said packet disassembler places blocks from packets of said first type in a first queue and blocks from packets of said second type in a second queue; wherein said packet disassembler detects an out-of-sequence packet and, responsive thereto, builds a negative acknowledge (NAK) block in said first queue; a control memory for containing state data, said state data including a plurality of queue pointers, said queue pointers pointing to locations in said first and second queues; a receive queue sequencer, said receive queue sequencer determining when to send acknowledgment packets to said requester from said state data in said control memory, wherein packets are acknowledged in the order received; and a packet builder which builds and sends acknowledge packets responsive to said receive queue sequencer.
- 2. The I/O adapter for a packet-switched network of claim 1, wherein said packet-switched network is an InfiniBand network.
- 3. The I/O adapter for a packet-switched network of claim 1, wherein said packet disassembler, said control memory, said receive queue sequencer, and said packet builder are implemented on a single application specific integrated circuit (ASIC) chip.
- 4. The I/O adapter for a packet-switched network of claim 3, wherein said buffer memory is implemented in at least one memory chip separate from said application specific integrated circuit (ASIC) chip.
- 5. The I/O adapter for a packet-switched network of claim 1, further comprising:
at least one DMA engine for transferring data between said buffer memory and a host system to which said I/O adapter is attached.
- 6. The I/O adapter for a packet-switched network of claim 5,
wherein said state data comprises a first pointer indicating an end of a most recently received block on said first queue, a second pointer indicating a next block on said first queue to transfer data from said host to said buffer memory using said at least one DMA engine, a third pointer indicating an end of a most recently received block on said second queue, and a fourth pointer indicating a next block on said second queue to transfer data to said host using said at least one DMA engine; and wherein said at least one DMA engine initiates transfer of data from said host to said buffer memory when said first pointer is ahead of said second pointer, and said at least one DMA engine initiates transfer of data from said buffer memory to said host when said third pointer is ahead of said fourth pointer.
- 7. The I/O adapter for a packet-switched network of claim 1, wherein acknowledgments for at least some packets of said second type are coalesced with acknowledgments for other packets.
- 8. The I/O adapter for a packet-switched network of claim 7, wherein said receive queue sequencer does not acknowledge blocks from said second queue if there are any unacknowledged blocks on said first queue.
- 9. The I/O adapter for a packet-switched network of claim 8, wherein said receive queue sequencer acknowledges blocks from said second queue if there are no unacknowledged blocks on said first queue and at least one state condition is present from the set of state conditions consisting of:
(a) a write acknowledge coalesce count has been reached; (b) an unacknowledged duplicate write request has been received; and (c) an unacknowledged write request including an explicit request for acknowledgment has been received.
- 10. The I/O adapter for a packet-switched network of claim 1, wherein said buffer memory includes a plurality of first queues and a plurality of second queues, each queue of said plurality of first queues corresponding to a respective requester of a plurality of requesters, and each queue of said plurality of second queues corresponding to a respective requester of said plurality of requesters.
- 11. A method of interfacing with a packet-switched network, comprising the steps of:
receiving request packets from a requester over said network and building blocks from said packets in queues in a buffer memory, said request packets including packets of a first type requesting that data be sent to the requester and packets of a second type containing data sent by the requester; placing blocks form packets of said first type in a first queue in said buffer memory and blocks from packets of said second type in a second queue in said buffer memory; detecting out-of-sequence packets and, responsive thereto, building negative acknowledgment (NAK) blocks in said first queue; maintaining state data for said first and second queues; determining when to send acknowledgment packets to said requester from said state data, wherein packets are acknowledged in the order received, and wherein acknowledgments for at least some packets of said second type are coalesced with acknowledgments for other packets; and building and sending acknowledge packets responsive to said step of determining when to send acknowledgment packets.
- 12. The method of interfacing with a packet-switched network of claim 11, wherein said packet-switched network is an InfiniBand network.
- 13. The method of interfacing with a packet-switched network of claim 11, wherein said method steps are executed by an I/O adapter device attached to an I/O bus of a host computer system, said buffer memory being contained in said I/O adapter device.
- 14. The method of interfacing with a packet-switched network of claim 13,
wherein said I/O adapter device supports DMA transfer of data between said buffer memory and said host computer system; wherein said state data comprises a first pointer indicating an end of a most recently received block on said first queue, a second pointer indicating a next block on said first queue to DMA transfer data from said host computer system to said buffer memory, a third pointer indicating an end of a most recently received block on said second queue, and a fourth pointer indicating a next block on said second queue to DMA transfer data from said buffer memory to said host; computer system; and wherein DMA transfer of data from said host computer system to said buffer memory is initiated when said first pointer is ahead of said second pointer, and wherein DMA transfer of data from said buffer memory to said host computer system when said third pointer is ahead of said fourth pointer.
- 15. The method of interfacing with a packet-switched network of claim 11, wherein said blocks from said second queue are not acknowledged if there are any unacknowledged blocks on said first queue.
- 16. The method of interfacing with a packet-switched network of claim 15, wherein said blocks from said second queue are acknowledged if there are no unacknowledged blocks on said first queue and at least one state condition is present from the set of state conditions consisting of:
(a) a write acknowledge coalesce count has been reached; (b) an unacknowledged duplicate write request has been received; and (c) an unacknowledged write request including an explicit request for acknowledgment has been received.
- 17. The method of interface with a packet-switched network of claim 11, wherein said buffer memory includes a plurality of first queues and a plurality of second queues, each queue of said plurality of first queues corresponding to a respective requester of a plurality of requesters, and each queue of said plurality of second queues corresponding to a respective requester of said plurality of requesters.
RELATED APPLICATIONS
[0001] The present application is related to the following commonly assigned copending U.S. patent applications, both of which are herein incorporated by reference:
[0002] U.S. patent application Ser. No. ______, filed Feb. 6, 2003, entitled “METHOD AND APPARATUS FOR IMPLEMENTING GLOBAL TO LOCAL QUEUE PAIR TRANSLATION” (Assignee's docket no. ROC920020148US1); and
[0003] U.S. patent application Ser. No. ______, filed Feb. 6, 2003, entitled “METHOD AND APPARATUS FOR IMPLEMENTING INFINIBAND TRANSMIT QUEUE” (Assignee's docket no. ROC920020149US1).