Source: https://patents.google.com/patent/US20050144300A1/en
Timestamp: 2018-05-28 10:45:40
Document Index: 374800331

Matched Legal Cases: ['§ 120', '§120', '§ 120', '§ 120', '§ 119', '§119', '§ 119', '§ 120', '§120', '§ 120', '§ 119']

US20050144300A1 - Method to offload a network stack - Google Patents
US20050144300A1
US20050144300A1 US10976595 US97659504A US2005144300A1 US 20050144300 A1 US20050144300 A1 US 20050144300A1 US 10976595 US10976595 US 10976595 US 97659504 A US97659504 A US 97659504A US 2005144300 A1 US2005144300 A1 US 2005144300A1
US10976595
The present application claims the benefit under 35 U.S.C. § 120 of (and is a continuation of) U.S. patent application Ser. No. 10/706,398, filed Nov. 12, 2003, which in turn claims the benefit under 35 U.S.C. §120 of (and is a continuation of) U.S. patent application Ser. No. 10/208,093, now U.S. Pat. No. 6,697,868, which in turn claims the benefit under 35 U.S.C. § 120 of (and is a continuation-in-part of) U.S. patent application Ser. No. 09/514,425, filed Feb. 28, 2000, now U.S. Pat. No. 6,427,171, which in turn claims the benefit under 35 U.S.C. § 120 of (and is a continuation-in-part of): a) U.S. patent application Ser. No. 09/141,713, filed Aug. 28, 1998, now U.S. Pat. No. 6,389,479, which in turn claims the benefit under 35 U.S.C. § 119 of provisional application 60/098,296, filed Aug. 27, 1998; b) U.S. patent application Ser. No. 09/067,544, filed Apr. 27, 1998, now U.S. Pat. No. 6,226,680, which in turn claims the benefit under 35 U.S.C. §119 of provisional application 60/061,809, filed Oct. 14, 1997; and c) U.S. patent application Ser. No. 09/384,792, filed Aug. 27, 1999, which in turn claims the benefit under 35 U.S.C. § 119 of provisional application 60/098,296, filed Aug. 27, 1998.
U.S. Pat. No. 6,697,868 also claims the benefit under 35 U.S.C. § 120 of (and is a continuation-in-part of) U.S. patent application Ser. No. 09/464,283, filed Dec. 15, 1999, now U.S. Pat. No. 6,427,173, which in turn claims the benefit under 35 U.S.C. §120 of (and is a continuation-in-part of) U.S. patent application Ser. No. 09/439,603, filed Nov. 12, 1999, now U.S. Pat. No. 6,247,060, which in turn claims the benefit under 35 U.S.C. § 120 of (and is a continuation-in-part of) U.S. patent application Ser. No. 09/067,544, filed Apr. 27, 1998, now U.S. Pat. No. 6,226,680, which in turn claims the benefit under 35 U.S.C. § 119 of provisional application 60/061,809, filed Oct. 14, 1997.
FIG. 3 diagrams a general flow chart for messages sent to the host via the network according to the current invention. A large TCP/IP message such as a file transfer may be received by the host from the network in a number of separate, approximately 64 KB transfers, each of which may be split into many, approximately 1.5 KB frames or packets for transmission over a network. Novel NetWare® protocol suites running Sequenced Packet Exchange Protocol (SPX) or NetWare® Core Protocol (NCP) over Intemetwork Packet Exchange (IPX) work in a similar fashion. Another form of data communication which can be handled by the fast-path is Transaction TCP (hereinafter T/TCP or TTCP), a version of TCP which initiates a connection with an initial transaction request after which a reply containing data may be sent according to the connection, rather than initiating a connection via a several-message initialization dialogue and then transferring data with later messages. In general, any protocol for which a connection can be set up to define parameters for a message or plurality of messages between network hosts may benefit from the present invention. In any of the transfers typified by these protocols, each packet conventionally includes a portion of the data being transferred, as well as headers for each of the protocol layers and markers for positioning the packet relative to the rest of the packets of this message.
TCP_OFFLOAD_HANDOUT1 (this is the first phase of a two-phase handshake used in the connection handout);
TCP_OFFLOAD_HANDOUT2 (this is the second phase of the two-phase handshake used in the connection handout);
TCP_OFFLOAD_FLUSH (this command is used to flush a connection);
TCP_OFFLOAD_SENDMDL (this command is used to send fast-path data);
TCP_OFFLOAD_RCVMDL (this is the command used to pass an MDL scatter gather list to the INIC/CPD for receive data);
TCP_OFFLOAD_WINUPDATE (this command is used to send a TCP window update to the INIC/CPD); and
TCP_OFFLOAD_CLOSE (This command is used to close a TCP connection that is on the INIC/CPD).
Thus a handout of a CCB from the stack 44 to the INIC/CPD 30 for a connection to be processed by the fast-path occurs in several steps. First, a TCP_OFFLOAD_HANDOUT1 100 is sent from the stack 44 to the miniport driver 70, which issues a Handout1 command 102 to the INIC/CPD 30. The INIC/CPD 30 sends an interlock frame 105 to the miniport driver 70 upon receipt of the handout command 102, and internally queues any subsequent frames for the specified connection. Upon receipt of the interlock frame 105, the miniport driver 70 sends a TCP_OFFLOAD_FRAME_INTERLOCK frame 108 to the stack 44, which interprets frame 108 as a signal that no further slow-path frames are expected. Stack 44 thereupon completes the handshake by issuing a TCP_OFFLOAD_HANDOUT2 command 110 that includes a CCB, which is forwarded by the miniport driver 70 to the INIC/CPD 30 as a handout2 112. Upon receipt of the handout2 112, the INIC/CPD 30 reads the contents of the CCB and begins fast-path processing. Note that the CCB address is passed to the miniport in the TCP_OFFLOAD_HANDOUT2 command.
#define TCP_OFFLOAD_FRAME_PUSHFLAG 0x0001 /* Rcv'd frame had
1. A method to offload a network stack state object and at least one associated protocol stack in a computer system environment from a first path going through a plurality of software layers to a peripheral device to a second path going from a switch layer to the peripheral device, the network stack state object having a cached state variable and at least one of a constant state variable and a delegated state variable, the method comprising the steps of: sending a request to offload the network stack state object from the switch layer to the peripheral device through the plurality of software layers, the request having a list of resource requirements; if the network stack state object will be offloaded: receiving an offload handle at at least one of the plurality of software layers; sending the network stack state object to the peripheral device from the at least one of the plurality of software layers; and transferring buffers to the peripheral device from the switch layer.
2. A method to offload a network stack state object in a computer system environment from a first path going through a plurality of software layers to a peripheral device to a second path going from a switch layer to the peripheral device, the network stack state object having a cached variable and at least one of a constant state variable and a delegated state variable, the method comprising the steps of: receiving a request to offload the network stack state object from the switch layer, the request having a list of resource requirements; deciding if the network stack state object will be offloaded; if the network stack state object will be offloaded: allocating resources; passing an offload handle to at least one of the plurality of software layers; receiving the network stack state object to the peripheral device from the at least one of the plurality of software layers; and receiving buffers from the switch layer.
3. A method to offload a network stack state object and at least one associated protocol stack in a computer environment from a first path going through a plurality of software layers to a peripheral device to a second path going from a switch layer to the peripheral device, the network stack state object having a cached state and at least one of a constant state and a delegated state, the method comprising the steps of: sending a request to offload the protocol stack to the peripheral device through the plurality of software layers, the request having a list of resource requirements; if the protocol stack will be offloaded: for each layer of the plurality of software layers, performing one of adding resource requirements to the list of resource requirements if the layer does not have an existing offload handle from a prior offload and adding the existing offload handle to the list of resource requirements; sending a cached state to the peripheral device for each of the plurality of software layers that is offloading a state and that does not have an existing offload handle; and transferring buffers to the peripheral device from the switch layer if the protocol stack has been offloaded.
4. A method to offload a protocol stack in a computer environment from a first path going through a plurality of software layers to a peripheral device to a second path going from a switch layer to the peripheral device comprising the steps of: receiving a request to offload the protocol stack, the request having a list of resource requirements and at least one existing offload handle for at least one of the plurality of software layers; deciding if the protocol stack will be offloaded; allocating resources to handle the list of resource requirements if the protocol stack will be offloaded; and sending an offload handle to each layer of the plurality of layers that does not have an existing offload handle if the layer has offloaded a layer state object.
US10976595 1997-10-14 2004-10-29 Method to offload a network stack Abandoned US20050144300A1 (en)
US20050144300A1 true true US20050144300A1 (en) 2005-06-30
US10706398 Expired - Lifetime US6941386B2 (en) 1997-10-14 2003-11-12 Protocol processing stack for use with intelligent network interface device
WO2014116240A1 (en) 2013-01-27 2014-07-31 Hewlett-Packard Development Company, L.P. Socket state transfer
US4427171A (en) * 1980-12-16 1984-01-24 Frederiksen Jorgen O Mounting bracket for use in installing beam-like channel members under horizontal surfaces, in particular ceilings
US20020062380A1 (en) * 1997-12-31 2002-05-23 Mannan Mohammed Architecture for communicating with and controlling separate upstream and downstream devices
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BOUCHER, LAURENCE B.;PHILBRICK, CLIVE M.;CRAFT, PETER K.;AND OTHERS;REEL/FRAME:020677/0129;SIGNING DATES FROM 20021201 TO 20021216