Patent ID: 7783769

Claim:
A method for accelerating TCP (transport control protocol) processing by partitioning processing tasks between system elements in a way that scales with the elements, said method comprising: receiving an indication on a network component that one or more packets have been received from a network; splitting each of the one or more packets into a header and a payload and posting each header to a first buffer on a host and each payload to a second buffer on the host, using the network component; notifying a TCP (transport control protocol) driver, by the network component, that the one or more packets have arrived; performing, using the TCP driver, TCP stack processing by parsing the header in at least one of the one or more packets to determine the protocol context associated with a current connection, and performing, using the TCP driver, TCP protocol compliance for the at least one of the one or more packets; and performing one or more operations, using the TCP driver, that result in a data movement module retrieving one or more payloads of the at least one of the one or more packets from the second buffer and placing the one or more corresponding payloads into a read buffer wherein the data movement module comprises a DMA (direct memory access) engine; and performing, using the TCP driver, one or more operations that result in a data movement module placing one or more corresponding payloads of the at least one of the one or more packets into a read buffer comprises sending a request to a data movement module driver to write the one or more corresponding payloads to the read buffer; and receiving a request on an operating system to transmit data over the network; the operating system notifying the TCP driver that there is data to be transmitted; the TCP driver performing one or more operations that result in the data being transmitted to the network component; in response to receiving the data, the network component creating one or more packets for transmission by packetizing the data; and the network component transmitting the one or more packets over the network.