Register based remote data flow control
First Claim
1. A method of transferring data from an I/O node to a host across a channel-based switching fabric interconnect, the method comprising:
- storing a value in a register in the I/O node which is indicative of a number of send credits available to the I/O node;
determining from the value of the register if there is a sufficient number of send credits available to the I/O node for the data to be transferred;
promptly transferring the data from the I/O node to the host over the channel-based switching fabric interconnect if a sufficient number of send credits is available to the I/O node; and
otherwise, if a sufficient number of send credits is not available to the I/O node, waiting for the host to update the value stored in the register before transferring data.
1 Assignment
0 Petitions
Accused Products
Abstract
In a method according to an example embodiment of the invention, a data packet is transferred from an I/O node to a host across a channel-based switching fabric interconnect. The method stores a value in a register in the I/O node which is indicative of a number of send credits available to the I/O node. The I/O node keeps a count of the number of data transfers. It is then determined from the value of the register whether or not a sufficient number of send credits is available to the I/O node for the data to be transferred by comparing it with the count of previous data transfers. If a sufficient number of send credits is available to the I/O node, it promptly transfers the data to the host over the channel-based switching fabric interconnect. If a sufficient number of send credits is not available to the I/O node, it waits for the host to update the value stored in the register before transferring data.
-
Citations
20 Claims
-
1. A method of transferring data from an I/O node to a host across a channel-based switching fabric interconnect, the method comprising:
-
storing a value in a register in the I/O node which is indicative of a number of send credits available to the I/O node;
determining from the value of the register if there is a sufficient number of send credits available to the I/O node for the data to be transferred;
promptly transferring the data from the I/O node to the host over the channel-based switching fabric interconnect if a sufficient number of send credits is available to the I/O node; and
otherwise, if a sufficient number of send credits is not available to the I/O node, waiting for the host to update the value stored in the register before transferring data. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. An I/O node configured to communicate with a host across a channel-based switching fabric interconnect, the I/O node comprising:
-
a channel adapter connecting the I/O node to the channel-based switching fabric; and
a virtual interface, including;
a plurality of send and receive buffers;
a transport service layer, the transport service layer transferring data between the I/O node and the host;
an interface user agent coupled to the transport service provider;
a kernel agent;
a plurality of work queues; and
a network interface controller coupled to the kernel agent, the work queues and the channel adapter;
said virtual interface to issue one or more control commands to the kernel agent to establish a connection between the I/O node and the host across the channel-based switching fabric and to post data transfer requests to the work queues in response to commands from the transport service layer; and
the network interface controller to process the data transfer requests by transferring data between the send and receive buffers and the channel adapter. - View Dependent Claims (9, 10)
-
-
11. An I/O node configured to communicate with a host across a channel-based switching fabric, said I/O node comprising:
-
a memory including send and receive application buffers;
a transport service layer providing for data transfer across the channel-based switching fabric;
a network interface controller coupled to the network;
a plurality of work queues coupled to the network interface controller for posting data transfer requests thereto;
a user agent coupled to the send and receive buffers and the network interface controller, the user agent posting data transfer requests to the work queues, the network interface controller processing the posted data transfer requests by transferring data between the send and receive buffers and the channel-based switching fabric.
-
-
12. An I/O node configured to communicate with a host computer over a channel-based switching fabric interconnect, the I/O node comprising:
-
a processor;
a register storing send credits;
one or more work queues for posting data transfer requests;
one or more registered send buffers;
one or more registered receive buffers;
a network interface controller coupled to the processor, the work queues, the buffers and the channel-based switching fabric, the network interface controller processing the posted data transfer requests by transferring data between the registered buffers and the channel-based switching fabric interconnect; and
the processor being programmed to control the transfer of data through the network interface controller according to a credit-based flow control scheme depending on the send credits stored in said register. - View Dependent Claims (13, 14, 15)
-
-
16. A host computer comprising:
-
a network interface controller adapter connecting the host to a host channel adapter on a channel-based switching fabric interconnect;
a host processor;
a memory having registered send and receive buffers; and
a device driver coupled to the host processor and the memory, and having one or more work queues for posting data transfer requests and a transport service layer providing an end-to-end credit-based flow control across the channel-based switching fabric interconnect according to the status of said registered receive buffers. - View Dependent Claims (17, 18, 19, 20)
-
Specification