Patent ID: 7475167

Claim:
A method of transferring data between an initiator and a target in accordance with an Input/Output (I/O) protocol, comprising: a host software driver for an offload device of the initiator establishing and maintaining a session between the initiator and the target wherein the session comprises one or more transport connections; said initiator host software driver selectively issuing a data transfer command of said I/O protocol for said target to said initiator offload device and identifying to said initiator offload device host memory locations for data to be transferred in connection with said data transfer command; said initiator offload device forwarding said data transfer command to said target; said initiator offload device transferring data between said target and said identified initiator host memory locations independently of said initiator host software driver wherein said initiator offload device transferring data between said target and said identified initiator host memory locations includes said initiator offload device reading write data from said initiator host memory locations, generating a data transfer protocol data unit encapsulating said write data, further encapsulating said data transfer protocol data unit generated by said initiator offload device in one or more network transmission protocol packets, and transmitting said packets over a network to said target; and processing read data encapsulated in data transfer protocol data units received from said target, and writing said read data to host memory locations identified by said initiator host software driver; and upon completion of said data transfer command, said initiator offload device issuing a data transfer command completion notification to said initiator host software driver.