Receive coalescing and automatic acknowledge in network interface controller
First Claim
1. A method for delivering a plurality of received packets from an input/output controller (IOC) to a host for processing, comprising:
- determining that the plurality of received packets are part of a same connection;
determining that the plurality of received packets were received in order and without gaps;
combining headers and payloads of the plurality of received packets into a single coalesced packet if the plurality of received packets are part of the same connection and were received in order and without gaps; and
delivering the single coalesced packet to the host for processing.
7 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and method is disclosed for reducing the computational overhead incurred by a host processor during packet processing and improving network performance by adding additional functionality to a Network Interface Controller (NIC). Under certain circumstances the NIC coalesces multiple receive packets into a single coalesced packet stored within a coalesce buffer in host memory. The coalesced packet includes an Ethernet header, a coalesced Internet Protocol (IP) header, a coalesced Transmission Control Protocol (TCP) header, and a coalesced TCP payload containing the TCP payloads of the multiple receive packets. By coalescing received packets into fewer larger coalesced packets within the host memory, the host software needed to process a receive packet will be invoked less often, meaning that less processor overhead is incurred in the host.
112 Citations
33 Claims
-
1. A method for delivering a plurality of received packets from an input/output controller (IOC) to a host for processing, comprising:
-
determining that the plurality of received packets are part of a same connection;
determining that the plurality of received packets were received in order and without gaps;
combining headers and payloads of the plurality of received packets into a single coalesced packet if the plurality of received packets are part of the same connection and were received in order and without gaps; and
delivering the single coalesced packet to the host for processing. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. An input/output controller (IOC) for delivering a plurality of received packets to a host for processing, comprising:
-
a local memory for storing received packets, connection information and connection state information; and
a controller and compare/control logic coupled to the local memory and configured for comparing connection information located in the plurality of received packets to the connection information stored in the local memory to determine whether the plurality of received packets are part of a same connection, comparing sequence numbers located in the plurality of received packets to next expected sequence values stored in the local memory as part of the connection state information to determine whether the plurality of received packets were received in order and without gaps, and sending commands to the host for updating a single coalesced packet stored in the host with header and payload information from the plurality of received packets if the plurality of received packets are part of the same connection and were received in order and without gaps. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31)
-
-
32. One or more storage media including a computer program which, when executed by one or more processors in an Input/Output Controller (IOC), assists in delivering a plurality of received packets from the IOC to a host for processing by causing the one or more processors to perform the steps of:
-
determining that the plurality of received packets are part of a same connection;
determining that the plurality of received packets were received in order and without gaps; and
sending commands to the host for updating a single coalesced packet stored in the host with header and payload information from the plurality of received packets if the plurality of received packets are part of the same connection and were received in order and without gaps. - View Dependent Claims (33)
-
Specification