Patent ID: 7813342
Filing Date: 2010-10-12
Classification: H04L

Abstract:
1. A method for receiving a plurality of packets from a network into a computer system, the computer system having a memory, a plurality of protocol stack layers and at least one network interface controller (NIC), the computer system being coupled to the network, the method comprising the following steps, in any order: (a) creating a first plurality of descriptor data structures residing in the memory of said computer system, each descriptor data structure in the first plurality of descriptor data structures comprising a plurality of information entries of which at least one information entry comprises at least one address of a memory destination in the memory of the computer system and the corresponding length of said memory destination; (b) reading, by the NIC of a first descriptor data structure from the first plurality of descriptor data structures, said first descriptor data structure being located in a first destination of the memory of the computer system and comprising a plurality of information entries of which at least one information entry comprises at least one address of a second destination in the memory of the computer system and the corresponding length of the second destination; (c) receiving, by the NIC, on said computer system from said network, of a packet, said packet comprising a payload data and a plurality of headers and digests corresponding to said plurality of protocol stack layers, said payload data intended for placement in the memory of said computer system according to processing by said protocol stack layers of said headers and digests; (d) processing, by the NIC, of at least one of the plurality of headers and digests of the packet corresponding to said plurality of protocol stack layers, including creating a summary of said processed headers and digests; (e) choosing, by the NIC, dependent upon said summary, to write the packet to the second destination in the memory of said computer system, the address of the second destination being specified within the first descriptor data structure; (f) choosing, by the NIC, dependent upon said summary, to copy the packet as a retained data into a retained data buffer within said computer system, said retained data comprising said packet, the retained data buffer comprising at least one queue; (g) generating, by the NIC, of a retained data tag, corresponding to said retained data, that can be used for future retrieval of the retained data from the retained data buffer; (h) inserting, by the NIC, into the first descriptor data structure at the first destination in the memory of the computer system information comprising said summary of processed headers and digests of said packet, a descriptor ready flag, a packet information area field, the retained data tag, and a retained data tag field flag; (i) processing the first descriptor data structure stored in the first destination and the packet stored in the second destination of the memory by said plurality of protocol stack layers including creation of a summary of commands; (j) choosing, dependent upon said summary of commands to copy data from the second destination in the memory of said computer system to a third destination in the memory of said computer system; (k) creating a second plurality of descriptor data structures residing in the memory of said computer system, each descriptor data structure in the second plurality of data structures comprising a plurality of information entries of which at least one information entry comprises at least one address of a memory destination in the memory of the computer system and the corresponding length of said memory destination and of which another information entry can hold the retained data tag for the retained data; (l) choosing, dependent upon said summary of commands, to populate a second descriptor data structure from the second plurality of data structures, said second descriptor data structure located at a fourth destination in the computer system memory and comprising a plurality of information entries of which at least one information entry comprises at least one address of a fifth destination in the memory and the corresponding length of the fifth destination and of which another information entry comprises the retained data tag for the retained data; (m) choosing, by the NIC, dependent upon said summary of commands and content of the second descriptor data structure, to copy the retained data from the retained data buffer to the fifth destination in the memory of said computer system; and (n) inserting, by the NIC, upon completion of copying the retained data from the retained data buffer to the fifth destination in the memory of said computer system, into the second descriptor data structure at the fourth destination in the memory information comprising a descriptor ready flag and an operation completion status field.