Network interface adapter with shared data send resources
First Claim
1. A network interface adapter, implemented on at least one integrated circuit chip and comprising:
- a host interface, for coupling to a host processor;
an outgoing packet generator, operative to generate an outgoing request packet for delivery to a remote responder responsive to a request submitted by the host processor via the host interface;
a network output port, coupled to the outgoing packet generator to receive the outgoing request packet from the outgoing packet generator and to transmit the outgoing request packet over a network to the remote responder;
a network input port, for coupling to the network to receive an incoming response packet from the remote responder, in response to the outgoing request packet sent thereto, and further to receive an incoming request packet sent by a remote requester; and
an incoming packet processor, coupled to the network input port to receive and process both the incoming response packet and the incoming request packet, and further coupled to cause the outgoing packet generator, responsive to the incoming request packet, to generate, in addition to the outgoing request packet, an outgoing response packet for transmission via the network output port to the remote requester;
wherein the outgoing request packet comprises an outgoing write request packet containing write data taken from a system memory accessible via the host interface;
wherein the outgoing response packet comprises an outgoing read response packet containing read data taken from the system memory in response to the incoming request packet;
wherein the incoming request packet comprises an incoming RDMA read request packet specifying data to be read from a system memory that is external to the network interface adapter and that is accessible via the host interface;
wherein the incoming packet processor is operative to write a quasi-WQE to a first memory location, in the system memory, indicating the data to be read from the system memory responsive to the incoming RDMA read request packet;
wherein the outgoing packet generator is operative to read the quasi-WQE from the first memory location and, responsive thereto, to read the indicated data and to generate the outgoing response packet containing the indicated data;
wherein the outgoing packet generator comprises a hardware gather engine, which is coupled to gather both the write data and the read data from the system memory for inclusion in the respective outgoing request and response packets via a commonly shared data flow path from the system memory to the network output port; and
wherein to submit the request, the host processor writes a request descriptor indicative of the write data to a second memory location, and wherein the hardware gather engine is operative to read information from the quasi-WQE and from the request descriptor and to gather the read data and the write data responsive thereto.
3 Assignments
0 Petitions
Accused Products
Abstract
A network interface adapter includes an outgoing packet generator, adapted to generate an outgoing request packet for delivery to a remote responder responsive to a request submitted by a host processor and a network output port, coupled to transmit the outgoing request packet over a network to the remote responder. A network input port receives an incoming response packet from the remote responder, in response to the outgoing request packet sent thereto, as well as an incoming request packet sent by a remote requester. An incoming packet processor receives and processes both the incoming response packet and the incoming request packet, and causes the outgoing packet generator, responsive to the incoming request packet, to generate, in addition to the outgoing request packet, an outgoing response packet for transmission to the remote requester.
-
Citations
28 Claims
-
1. A network interface adapter, implemented on at least one integrated circuit chip and comprising:
-
a host interface, for coupling to a host processor; an outgoing packet generator, operative to generate an outgoing request packet for delivery to a remote responder responsive to a request submitted by the host processor via the host interface; a network output port, coupled to the outgoing packet generator to receive the outgoing request packet from the outgoing packet generator and to transmit the outgoing request packet over a network to the remote responder; a network input port, for coupling to the network to receive an incoming response packet from the remote responder, in response to the outgoing request packet sent thereto, and further to receive an incoming request packet sent by a remote requester; and an incoming packet processor, coupled to the network input port to receive and process both the incoming response packet and the incoming request packet, and further coupled to cause the outgoing packet generator, responsive to the incoming request packet, to generate, in addition to the outgoing request packet, an outgoing response packet for transmission via the network output port to the remote requester; wherein the outgoing request packet comprises an outgoing write request packet containing write data taken from a system memory accessible via the host interface; wherein the outgoing response packet comprises an outgoing read response packet containing read data taken from the system memory in response to the incoming request packet; wherein the incoming request packet comprises an incoming RDMA read request packet specifying data to be read from a system memory that is external to the network interface adapter and that is accessible via the host interface; wherein the incoming packet processor is operative to write a quasi-WQE to a first memory location, in the system memory, indicating the data to be read from the system memory responsive to the incoming RDMA read request packet; wherein the outgoing packet generator is operative to read the quasi-WQE from the first memory location and, responsive thereto, to read the indicated data and to generate the outgoing response packet containing the indicated data; wherein the outgoing packet generator comprises a hardware gather engine, which is coupled to gather both the write data and the read data from the system memory for inclusion in the respective outgoing request and response packets via a commonly shared data flow path from the system memory to the network output port; and wherein to submit the request, the host processor writes a request descriptor indicative of the write data to a second memory location, and wherein the hardware gather engine is operative to read information from the quasi-WQE and from the request descriptor and to gather the read data and the write data responsive thereto. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A method for coupling a host processor to a network, comprising:
-
generating an outgoing request packet for delivery to a remote responder using an outgoing packet generator of a network interface adapter that is implemented on at least one integrated circuit chip, responsive to a request submitted by the host processor; transmitting the outgoing request packet from the outgoing packet generator over the network to the remote responder; receiving an incoming response packet from the remote responder, in response to the outgoing request packet sent thereto, using an incoming packet processor of the network interface adapter; receiving an incoming request packet sent by a remote requester using the incoming packet processor; and coupling the incoming packet processor to the outgoing packet generator to cause the outgoing packet generator to generate, responsive to the incoming request packet, in addition to the outgoing request packet, an outgoing response packet for transmission via the network to the remote requester; wherein generating the outgoing request packet comprises generating an outgoing write request packet containing write data taken from a system memory that is external to the network interface adapter and that is associated with the host processor; wherein coupling the incoming packet processor to the outgoing packet generator comprises generating, using the outgoing packet generator, an outgoing read response packet containing read data taken from the system memory in response to the incoming request packet; wherein receiving the incoming request packet comprises receiving an incoming RDMA read request packet specifying data to be read from a system memory associated with the host processor, wherein coupling the incoming packet processor comprises writing, in response to the incoming RDMA read request packet, a quasi-WQE to a first memory location of the system memory indicating the data to be read therefrom, and causing the outgoing packet generator to read the quasi-WQE from the first memory location and, responsive thereto, to read the indicated data from the system memory and to generate the outgoing response packet containing the indicated data; wherein generating the outgoing write request packet and generating the outgoing read response packet comprise generating the packets using a hardware gather engine in the outgoing packet generator, which is coupled to gather both the write data and the read data from the system memory for inclusion in the respective outgoing request and response packets via a commonly shared data flow path from the system memory to the network; and wherein generating the outgoing write request packet comprises generating a request descriptor indicative of the write data to a second memory location, and wherein generating the packets using the hardware gather engine comprises reading information from the quasi-WQE and from the request descriptor using the hardware gather engine and gathering the read data and the write data responsive thereto. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
Specification