TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
First Claim
1. A method of outputting a first TCP/IP packet and a second TCP/IP packet from a network interface device, the first TCP/IP packet and the second TCP/IP packet being output to a network, comprising:
- (a) storing first packet information on the network interface device;
(b) pushing a first pointer to the first packet information onto a first transmit queue of the network interface device;
(c) storing second packet information on the network interface device;
(d) pushing a second pointer to the second packet information onto a second transmit queue of the network interface device; and
(e) popping the second pointer off the second transmit queue and then popping the first pointer off the first transmit queue, the popped second pointer being used to locate the second packet information, the located second packet information then being output from the network interface device in the form of a second TCP/IP packet, the popped first pointer being used to locate the first packet information, the located first packet information being output from the network interface device in the form of a first TCP/IP packet such that the second TCP/IP packet is output from the network interface device and to the network before the first TCP/IP packet is output from the network interface device and to the network.
3 Assignments
0 Petitions
Accused Products
Abstract
A network interface device has a fast-path ACK generating and transmitting mechanism. ACKs are generated using a finite state machine (FSM). The FSM retrieves a template header and fills in TCP and IP fields in the template. The FSM is not a stack, but rather fills in the TCP and IP fields without performing transport layer processing and network layer processing sequentially as separate tasks. The filled-in template is placed into a buffer and a pointer to the buffer is pushed onto a high-priority transmit queue. Pointers for ordinary data packets are pushed onto a low-priority transmit queue. A transmit sequencer outputs a packet by popping a transmit queue, obtaining a pointer, and causing information pointed to by the pointer to be output from the network interface device as a packet. The sequencer pops the high-priority queue in preference to the low-priority queue, thereby accelerating ACK generation and transmission.
302 Citations
30 Claims
-
1. A method of outputting a first TCP/IP packet and a second TCP/IP packet from a network interface device, the first TCP/IP packet and the second TCP/IP packet being output to a network, comprising:
-
(a) storing first packet information on the network interface device; (b) pushing a first pointer to the first packet information onto a first transmit queue of the network interface device; (c) storing second packet information on the network interface device; (d) pushing a second pointer to the second packet information onto a second transmit queue of the network interface device; and (e) popping the second pointer off the second transmit queue and then popping the first pointer off the first transmit queue, the popped second pointer being used to locate the second packet information, the located second packet information then being output from the network interface device in the form of a second TCP/IP packet, the popped first pointer being used to locate the first packet information, the located first packet information being output from the network interface device in the form of a first TCP/IP packet such that the second TCP/IP packet is output from the network interface device and to the network before the first TCP/IP packet is output from the network interface device and to the network. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A TCP/IP offload network interface device, comprising:
-
a memory containing first packet information and second packet information; a processor that causes a first pointer to the first packet information to be pushed onto a first transmit queue before a second pointer to the second packet information is pushed onto a second transmit queue; and a transmit mechanism that pops the second queue in preference to popping the first queue, the transmit mechanism popping the second pointer off the second queue and outputting the second packet information from the network interface device in the form of a second TCP/IP packet, the transmit mechanism popping the first pointer off the first queue and outputting the first packet information from the network interface device in the form of a first TCP/IP packet, the transmit mechanism popping the second pointer from the second queue before popping the first pointer off the first queue, the second TCP/IP packet being output from the network interface device before the first TCP/IP packet is output from the network interface device. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
-
21. A method for outputting an acknowledge (ACK) from a protocol processing offload network interface device (PPONID), the PPONID being coupled to a network, the method comprising:
-
receiving a first packet onto the PPONID from the network; slow-path processing the first packet such that a protocol processing stack performs substantial transport layer processing and substantial network layer processing on the first packet; receiving a second packet onto the PPONID from the network; fast-path processing the second packet on the PPONID such that the stack performs substantially no transport layer processing on the second packet and such that the stack performs substantially no network layer processing on the second packet; pushing a first pointer to first packet information onto a first transmit queue; in response to said receiving of the second packet pushing a second pointer to second packet information onto a second transmit queue; popping the second transmit queue to retrieve the second pointer, and using the second pointer to retrieve the second packet information, and outputting the second packet information from the PPONID in the form of the ACK; and popping the first transmit queue to retrieve the first pointer, and using the first pointer to retrieve the first packet information, and outputting the first packet information from the PPONID in the form of a third packet, the ACK being output from the PPONID before the third packet. - View Dependent Claims (22)
-
-
23. A method for outputting a TCP ACK from a network interface device, the network interface device being coupled to a network, the method comprising:
-
receiving a first TCP/IP packet onto the network interface device from the network; slow-path processing the first TCP/IP packet such that a protocol processing stack performs substantial TCP layer processing and substantial IP layer processing on the first TCP/IP packet; receiving a second TCP/IP packet onto the network interface device from the network; fast-path processing the second TCP/IP packet on the network interface device such that the stack performs substantially no TCP layer processing on the second TCP/IP packet and such that the stack performs substantially no IP layer processing on the second TCP/IP packet; pushing a first pointer to third packet information onto a first transmit queue; in response to said receiving of the second TCP/IP packet pushing a second pointer to fourth packet information onto a second transmit queue; popping the second transmit queue to retrieve the second pointer, and using the second pointer to retrieve the fourth packet information, and outputting the fourth packet information from the network interface device in the form of the TCP ACK; and popping the first transmit queue to retrieve the first pointer, and using the first pointer to retrieve the third packet information, and outputting the third packet information from the network interface device in the form of a third TCP/IP packet, the TCP ACK being output from the network interface device before the third TCP/IP packet. - View Dependent Claims (24, 25, 26, 27)
-
-
28. A method of generating an ACK on a TCP/IP offload device, comprising:
-
(a) step for using a template header to generate the ACK without sequentially processing the template header through a TCP protocol processing layer on the TCP/IP offload device and then processing the template header through an IP protocol processing layer on the TCP/IP offload device, the template header having TCP and IP fields, step (a) involving filling in the TCP and IP fields; (b) pushing pointers to data packet information onto a first transmit queue, and then pushing a pointer to the filled-in template header onto a second transmit queue; and (c) popping the second transmit queue in preference to popping the first transmit queue such that the second transmit queue has transmission priority over the first transmit queue, and outputting from the TCP/IP offload device the filled-in template header in the form of the ACK, the data packet information being output from the TCP/IP offload device in the form of data packets, the ACK being output from the TCP/IP offload device before any of the data packets are output from the TCP/IP offload device.
-
-
29. A TCP/IP offload device, the TCP/IP offload device being coupled to a device that executes a protocol stack, wherein the TCP/IP offload device accelerates TCP and IP protocol processing of an incoming TCP/IP packet such that the stack performs substantially no TCP protocol processing on the TCP/IP packet and such that the stack performs substantially no IP protocol processing on the TCP/IP packet, and wherein a data portion of the TCP/IP packet is transferred from the TCP/IP offload device to the device that executes the protocol stack, the TCP/IP offload device comprising:
-
a first transmit queue containing pointers associated with a first set of packets; and a second transmit queue containing pointers associated with a second set of packets, wherein the second set of packets has transmission priority over the first set of packets. - View Dependent Claims (30)
-
Specification