US6499065B2
Expired / Lapsed
US
⏱️ 0.0 years remaining
System and method for batching data between link and transport layers in a protocol stack
Assignee: Microsoft Technology Licensing LLC
•
Filing: 2001-05-31
•
Granted: 2002-12-24
•
Expires: 2021-05-31
Abstract
Abstract A system and method for transferring a plurality of data packets between a link layer and a transport layer is presented. The system and method provide a standardized development interface for development of link layer and transport layer drivers across multiple platforms. The abstract interface provides a standardized functional module through which multiple packet transfer commands are received and passed. The abstract interface discerns the level of sophistication of interfacing drivers and when drivers lack the capability for transferring multiple packets in a single command, the abstract interface emulates multiple transfer capabilities for such drivers.
Inventors
- 👤 Jameel Hyder
- 👤 Kyle Brandon
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-09 00:42
CPC Classifications
H; H04; H04L; H04L69/00; H04L69/30; H04L69/32; H04L69/321
Claims Analysis
Total Claims: 40
Claim 1
Independent Claim
209 words
In a computer capable of interoperating with a network, a method for transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface therebetween, wherein the transfer of said plurality of data packets occurs without transmitting an individual receive packet request for each data packet thereby reducing undesirable intermittent interruptions in processing, said method comprising the acts of: a physical device associated with the computer receiving a plurality of data packets from the network; said link layer device driver transmitting to said abstract interface a single receive request to transfer said plurality of data packets, said single receive request comprising all information needed by said transport layer driver to access said plurality of data packets; and in response to said single receive request, said abstract interface mediating a transfer of said plurality of data packets to said computer via said transport layer driver by performing acts of: said abstract interface receiving from said transport layer driver a packet transfer capability indicator denoting the ability of said transport layer driver to facilitate transfer of multiple packets using said single receive request; and said abstract interface forwarding a memory location of said plurality of data packets to said transport layer driver.
Claim 2
Dependent Claim
209 words
In a computer capable of interoperating with a network, a method for transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface therebetween, wherein the transfer of said plurality of data packets occurs without transmitting an individual receive packet request for each data packet thereby reducing undesirable intermittent interruptions in processing, said method comprising the acts of: a physical device associated with the computer receiving a plurality of data packets from the network; said link layer device driver transmitting to said abstract interface a single receive request to transfer said plurality of data packets, said single receive request comprising all information needed by said transport layer driver to access said plurality of data packets; and in response to said single receive request, said abstract interface mediating a transfer of said plurality of data packets to said computer via said transport layer driver by performing acts of: said abstract interface receiving from said transport layer driver a packet transfer capability indicator denoting the ability of said transport layer driver to facilitate transfer of multiple packets using said single receive request; and said abstract interface forwarding a memory location of said plurality of data packets to said transport layer driver.
Claim 3
Dependent Claim
54 words
The method for transferring a plurality of data packets between a link layer device driver and a transport layer driver as recited in claim 1 , further comprising the act of said abstract interface confirming to said link layer device driver completion of said transfer of said plurality of data packets to said computer.
Claim 4
Dependent Claim
87 words
The method for transferring a plurality of data packets between a link layer device driver and a transport layer driver as recited in claim 2 , wherein the act of said abstract interface confirming to said link layer device driver completion of said transfer of said plurality of data packets to said computer comprises the acts of: said abstract interface receiving from said transport layer driver a packet transfer complete indicator; and said abstract interface transferring to said link layer device driver said packet transfer complete indicator.
Claim 5
Dependent Claim
72 words
The method for transferring a plurality of data packets between a link layer device driver and a transport layer driver as recited in claim 1 , wherein the act of said abstract interface receiving from said link layer device driver a single receive request to transfer a plurality of data packets comprises the act of said abstract interface receiving a device handle, designating a specific one of a plurality of physical devices.
Claim 6
Dependent Claim
45 words
The method for transferring a plurality of data packets between a a link layer device driver and a transport layer driver as recited in claim 1 , wherein said memory location comprises a pointer that facilitate said plurality of data packets being accessed from memory.
Claim 7
Dependent Claim
106 words
The method for transferring a plurality of data packets between a link layer device driver and a transport layer driver as recited in claim 5 , further comprising the acts of: said abstract interface conveying said pointer to said transport layer driver; said transport layer driver transferring said plurality of data packets to transfer layer driver buffers mutually accessible by an operating system of said computer; said operating system retrieving each of said plurality of data packets from said transport layer driver buffers; and said operating system acknowledging to said transport layer driver upon completion of transfer of said plurality of data packets to said computer.
Claim 8
Dependent Claim
224 words
In a computer capable of interoperating with a network, a computer programming product comprising a computer readable medium carrying computer executable instructions that implement a method transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface therebetween, wherein the transfer of said plurality of data packets occurs without transmitting an individual receive packet request for each data packet thereby reducing undesirable intermittent interruptions in processing, said method comprising the acts of: said abstract interface receiving from said link layer device driver single receive request to transfer a plurality of data packets which have been received from the network by a physical device associated with the computer and then stored in a memory of the computer, said single receive request comprising a memory location of said plurality of data packets; in response to said single receive request, said abstract interface mediating a transfer of said plurality of data packets to said computer via said transport layer driver, by performing the acts of: said abstract interface receiving from said transport layer driver a packet transfer capability indicator denoting the ability of said transport layer driver to facilitate transfer of multiple packets using said single receive request; and said abstract interface forwarding said memory location of said plurality of data packets to said transport layer driver.
Claim 9
Dependent Claim
224 words
In a computer capable of interoperating with a network, a computer programming product comprising a computer readable medium carrying computer executable instructions that implement a method transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface therebetween, wherein the transfer of said plurality of data packets occurs without transmitting an individual receive packet request for each data packet thereby reducing undesirable intermittent interruptions in processing, said method comprising the acts of: said abstract interface receiving from said link layer device driver single receive request to transfer a plurality of data packets which have been received from the network by a physical device associated with the computer and then stored in a memory of the computer, said single receive request comprising a memory location of said plurality of data packets; in response to said single receive request, said abstract interface mediating a transfer of said plurality of data packets to said computer via said transport layer driver, by performing the acts of: said abstract interface receiving from said transport layer driver a packet transfer capability indicator denoting the ability of said transport layer driver to facilitate transfer of multiple packets using said single receive request; and said abstract interface forwarding said memory location of said plurality of data packets to said transport layer driver.
Claim 10
Dependent Claim
39 words
The computer program product recited in claim 7 , the method further comprising an act of said abstract interface confirming to said link layer device driver completion of said transfer of said plurality of data packets of data computer.
Claim 11
Dependent Claim
55 words
The computer program product recited in claim 7 , wherein said abstract interface receiving from said link layer device driver a single receive request comprises the act of said abstract interface receiving said memory location of said plurality of data packets as a pointer to an array of pointers to said plurality of data packets.
Claim 12
Dependent Claim
66 words
The computer program product recited in claim 8 , wherein said abstract interface confirming to said link layer device driver completion of said transfer of said plurality data packets to said computer comprises the acts of: said abstract interface receiving from said transport layer driver a packet transfer complete indicator; and said abstract interface transferring to said link layer device driver said packet transfer complete indicator.
Claim 13
Dependent Claim
54 words
The computer program product recited in claim 10 , further comprising, prior to receiving from said transport layer driver a packet transfer complete indicator, the act of said abstract interface awaiting arrival of said packet transfer complete indicator while an operating system of said computer autonomously retrieves each of said plurality of data packets.
Claim 14
Dependent Claim
74 words
The computer program product recited in claim 8 , wherein said abstract interface confirming to said link layer device driver completion of said transfer of said plurality of data packets comprises the act of said abstract interface confirming to said link layer device driver completion of said transfer of said plurality of data packets in response to an operating system of the computer issuing an interrupt to said computer upon completion of said transfer.
Claim 15
Dependent Claim
91 words
The computer program product recited in claim 9 , the method further comprising the acts of: said abstract interface conveying said pointer to said transport layer driver; said transport layer driver transferring said plurality of data packets to transfer layer driver buffers mutually accessible by an operating system of said computer; said operating system retrieving each of said plurality of data packets from said transport layer driver buffers; and said operating system acknowledging to said transport layer driver upon completion of transfer of said plurality of data packets to said computer.
Claim 16
Dependent Claim
40 words
The computer program product recited in claim 7 , wherein a plurality of physical devices are associated with the computer, and wherein the single receive request comprises a device handle, designating a specific one of a plurality of physical devices.
Claim 17
Dependent Claim
214 words
In a computer capable of interoperating with a network, a method for transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface therebetween, wherein the transfer of the plurality of data packets occurs without transmitting an individual receive packet request for each data packet thereby reducing undesirable intermittent interruptions in microprocessing, said method comprising the acts of: a physical device associated with the computer receiving a plurality of data packets from the network that are then stored in a memory of the computer; said link layer device driver transmitting to said abstract interface a single receive request to transfer said plurality of data packets, said single receive request comprising a memory location of said plurality of data packets; in response to said single receive request, said abstract interface mediating a transfer of said plurality of data packets to said computer via said transport layer driver, by performing the acts of: said abstract interface determining that said transport layer driver lacks the ability to facilitate transfer of multiple packets using said single receive request; and said abstract interface emulating multiple packet transfer of said plurality of data packets by individually making available each of said plurality of data packets to said transport layer driver.
Claim 18
Dependent Claim
214 words
In a computer capable of interoperating with a network, a method for transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface therebetween, wherein the transfer of the plurality of data packets occurs without transmitting an individual receive packet request for each data packet thereby reducing undesirable intermittent interruptions in microprocessing, said method comprising the acts of: a physical device associated with the computer receiving a plurality of data packets from the network that are then stored in a memory of the computer; said link layer device driver transmitting to said abstract interface a single receive request to transfer said plurality of data packets, said single receive request comprising a memory location of said plurality of data packets; in response to said single receive request, said abstract interface mediating a transfer of said plurality of data packets to said computer via said transport layer driver, by performing the acts of: said abstract interface determining that said transport layer driver lacks the ability to facilitate transfer of multiple packets using said single receive request; and said abstract interface emulating multiple packet transfer of said plurality of data packets by individually making available each of said plurality of data packets to said transport layer driver.
Claim 19
Dependent Claim
58 words
The method for transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface as recited in claim 15 , further comprising the act of said abstract interface confirming to said link layer device driver completion of said transfer of said plurality of data packets to said computer.
Claim 20
Dependent Claim
84 words
The method for transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface as recited in claim 15 , wherein the act of said abstract interface determining that said transport layer driver lacks the ability to facilitate transfer of multiple packets using said single receive request comprises the act of said transport layer driver registering with said abstract interface that it lacks the ability to transfer multiple packets using said single receive request.
Claim 21
Dependent Claim
108 words
The method for transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface as recited in claim 15 , wherein the act of said abstract interface emulating multiple packet transfer of said plurality of data packets by individually making available each of said plurality of data packets to said transport layer driver comprises the acts of: said abstract interface determining from said memory location of said plurality of packets the memory location of each individual packet in the plurality of packets; and said abstract interface sending the memory location for each packet to said transport layer driver.
Claim 22
Dependent Claim
90 words
The method for transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface as recited in claim 15 , wherein the act of said abstract interface confirming to said link layer device driver completion of said transfer of said plurality of data packets to said computer comprises the act of said abstract interface sending a single receive packets response to said link layer device driver upon completion of said transfer of said plurality of data packets to said computer.
Claim 23
Dependent Claim
205 words
In a computer capable of interoperating with a network, a method for transferring a plurality of data packets between a transport layer driver and a link layer device driver via an abstract interface therebetween, wherein said transport layer driver partitions bulk data into data packets in order to facilitate the orderly transfer of data through the network, wherein said link layer device driver interfaces with said network via a physical device and said physical device autonomously receives said plurality of data packets, and wherein the transfer of said plurality of data packets occurs without transmitting an individual send packet request for each data packet thereby reducing undesirable intermittent interruptions in processing, said method comprising the acts of: said transport layer driver partitioning said bulk data into a plurality of data packets; said abstract interface receiving from said transport layer driver a single send request to send said plurality of data packets, said single send request comprising all information needed by said link layer device driver to access said plurality of data packets; and in response to said single send request, said abstract interface mediating a transfer of said plurality of data packets to said network via said link layer device driver and said physical device.
Claim 24
Dependent Claim
205 words
In a computer capable of interoperating with a network, a method for transferring a plurality of data packets between a transport layer driver and a link layer device driver via an abstract interface therebetween, wherein said transport layer driver partitions bulk data into data packets in order to facilitate the orderly transfer of data through the network, wherein said link layer device driver interfaces with said network via a physical device and said physical device autonomously receives said plurality of data packets, and wherein the transfer of said plurality of data packets occurs without transmitting an individual send packet request for each data packet thereby reducing undesirable intermittent interruptions in processing, said method comprising the acts of: said transport layer driver partitioning said bulk data into a plurality of data packets; said abstract interface receiving from said transport layer driver a single send request to send said plurality of data packets, said single send request comprising all information needed by said link layer device driver to access said plurality of data packets; and in response to said single send request, said abstract interface mediating a transfer of said plurality of data packets to said network via said link layer device driver and said physical device.
Claim 25
Dependent Claim
78 words
The method for transferring a plurality of data packets between a transport layer driver and a link layer device driver as recited in claim 20 , wherein the act of said abstract interface receiving from said transport layer driver a single send request to send said plurality of data packets comprises the act of receiving said memory location of said plurality of data packets as a pointer to an array of pointers to said plurality of data packets.
Claim 26
Dependent Claim
172 words
The method for transferring a plurality of data packets between a transport layer driver and a link layer device driver as recited in claim 20 , wherein the act of said abstract interface mediating a transfer of said plurality of data packets to said network via said link layer device driver and said physical device comprises the acts of: said abstract interface receiving from said transport layer driver upon installation a packet transfer capability indicator denoting the extent of inherent support for multiple packet transfers by said transport layer driver; when said packet transfer capability indicator denotes multiple packet capability, said abstract interface forwarding said memory location of said plurality of data packets and a quantity of said plurality of data packets to said transport layer driver; and when said packet transfer capability indicator denotes only single packet capability by said transport layer driver, said abstract interface emulating multiple packet transfer of said plurality of data packets by individually transferring each of said plurality of data packets to said transport layer driver.
Claim 27
Dependent Claim
105 words
The method for transferring a plurality of data packets between a transport layer driver and a link layer device driver as recited in claim 20 , wherein the act of said abstract interface emulating multiple packet transfer of said plurality of data packets by individually transferring each of said plurality of data packets to said transport layer driver comprises the acts of: said abstract interface determining from said memory location of said plurality of packets the memory location of each individual packet in the plurality of packets; and said abstract interface sending the memory location for each individual packet to said link layer device driver.
Claim 28
Dependent Claim
83 words
The method recited in claim 20 , wherein said abstract interface mediating a transfer of said plurality of data packets to said computer via said transport layer driver comprises acts of: said abstract interface receiving from said transport layer driver a packet transfer capability indicator denoting the ability of said transport layer driver to facilitate transfer of multiple packets using said single receive request; and said abstract interface forwarding a memory location of said plurality of data packets to said transport layer driver.
Claim 29
Dependent Claim
232 words
For a computer program capable of interoperating with a network, a computer program product comprising a computer readable medium carrying computer executable instructions that implement a method for transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface therebetween, wherein the transfer of said plurality of data packets occurs without transmitting an individual receive request for each data packet thereby reducing undesirable intermittent interruptions in processing, the computer product comprising acts of: said abstract interface receiving from said link layer device driver a single receive request to transfer a plurality of data packets which have been received from the network by a physical device associated with the computer and then stored in a memory of the computer, said single receive request comprising all information needed by said transport layer driver to access said plurality of data packets; in response to said single receive request, said abstract interface mediating a transfer of said plurality of data packets to said computer via said transport layer driver, by performing acts of: said abstract interface determining that said transport layer driver lacks the ability to facilitate transfer of multiple packets using said single receive request; and said abstract interface emulating multiple packets transfer to said plurality of data packets by individually making available each of said plurality of data packets to said transport layer driver.
Claim 30
Dependent Claim
232 words
For a computer program capable of interoperating with a network, a computer program product comprising a computer readable medium carrying computer executable instructions that implement a method for transferring a plurality of data packets between a link layer device driver and a transport layer driver via an abstract interface therebetween, wherein the transfer of said plurality of data packets occurs without transmitting an individual receive request for each data packet thereby reducing undesirable intermittent interruptions in processing, the computer product comprising acts of: said abstract interface receiving from said link layer device driver a single receive request to transfer a plurality of data packets which have been received from the network by a physical device associated with the computer and then stored in a memory of the computer, said single receive request comprising all information needed by said transport layer driver to access said plurality of data packets; in response to said single receive request, said abstract interface mediating a transfer of said plurality of data packets to said computer via said transport layer driver, by performing acts of: said abstract interface determining that said transport layer driver lacks the ability to facilitate transfer of multiple packets using said single receive request; and said abstract interface emulating multiple packets transfer to said plurality of data packets by individually making available each of said plurality of data packets to said transport layer driver.
Claim 31
Dependent Claim
51 words
The computer program product as recited in claim 25 , wherein the computer-executable instructions, when executed at the computer, further cause the computer to perform the act of said abstract interface confirming to said link layer device driver completion of said transfer of said plurality of data packets to said computer.
Claim 32
Dependent Claim
70 words
The computer program product as recited in claim 26 , wherein the act of said abstract interface confirming to said link layer device driver completion of said transfer of said plurality of data packets to said computer comprises the acts of said abstract interface sending a single receive packets response to said link layer device driver upon completion of said transfer of said plurality of data packets to said computer.
Claim 33
Dependent Claim
64 words
The computer program product as recited in claim 25 , wherein the act of said abstract interface determining that said transport layer driver lacks of ability to facilitate transfer of multiple packets using said single receive request comprises the act of said transport layer driver registering with said abstract interface that it lacks the ability to transfer multiple packets using said single receive request.
Claim 34
Dependent Claim
89 words
The computer program product as recited in claim 25 , wherein the act of said abstract interface emulating multiple packet transfer of said plurality of data packets by individually making available each of said plurality of data packets to said transport layer driver comprises the acts of: said abstract interface determining from said memory location of said plurality of packets a memory location of each individual packet in the plurality of packets; and said abstract interface sending the memory location for each individual packet to said transport layer driver.
Claim 35
Dependent Claim
221 words
For a computer program capable of interoperating with a network, a computer program product comprising a computer readable medium carrying computer executable instructions that implement a method for transferring a plurality of data packets between a transport layer driver and a link layer device driver via an abstract interface therebetween, wherein said transport layer driver partitions bulk data into data packets in order to facilitate the orderly transfer of data through the network, wherein said link layer device driver interfaces with said network via a physical device and said physical device autonomously receives said plurality of data packets, and wherein the transfer of said plurality of data packets occurs without transmitting an individual send packet request for each data packet thereby reducing undesirable intermittent interruptions in processing, said method comprising the acts of: said transport layer driver partitioning said bulk data into a plurality of data packets; said abstract interface receiving from said transport layer driver a single send request to send said plurality of data packets, said single receive request comprising all information needed by said link layer device driver to access said plurality of data packets; and in response to said single send request, said abstract interface mediating a transfer of said plurality of data packets to said network via said link layer device driver and said physical device.
Claim 36
Dependent Claim
221 words
For a computer program capable of interoperating with a network, a computer program product comprising a computer readable medium carrying computer executable instructions that implement a method for transferring a plurality of data packets between a transport layer driver and a link layer device driver via an abstract interface therebetween, wherein said transport layer driver partitions bulk data into data packets in order to facilitate the orderly transfer of data through the network, wherein said link layer device driver interfaces with said network via a physical device and said physical device autonomously receives said plurality of data packets, and wherein the transfer of said plurality of data packets occurs without transmitting an individual send packet request for each data packet thereby reducing undesirable intermittent interruptions in processing, said method comprising the acts of: said transport layer driver partitioning said bulk data into a plurality of data packets; said abstract interface receiving from said transport layer driver a single send request to send said plurality of data packets, said single receive request comprising all information needed by said link layer device driver to access said plurality of data packets; and in response to said single send request, said abstract interface mediating a transfer of said plurality of data packets to said network via said link layer device driver and said physical device.
Claim 37
Dependent Claim
60 words
The computer program product recited in claim 30 , wherein the act of said abstract interface receiving from said transport layer driver a single send request to send said plurality of data packets comprises an act of receiving a memory locations of said plurality of data packets as pointer to an array of pointers to said plurality of data packets.
Claim 38
Dependent Claim
154 words
The computer program product recited in claim 30 , wherein the act of said abstract interface mediating a transfer of said plurality of data packets to said network via said link layer device driver and said physical device comprises acts of: said abstract interface receiving from said transport layer driver upon installation a packet transfer capability indicator denoting the extent of inherent support for multiple packet transfers by said transport layer driver; when said packet transfer capability indicator denotes multiple packet capability, said abstract interface forwarding said memory location of said plurality of data packets and a quantity of said plurality of data packets to said transport layer driver; and when said packet transfer capability indicator denotes only single packet capability by said transport layer driver, said abstract interface emulating multiple packet transfer of said plurality of data packets by individually transferring each of said plurality of data packets to said transport layer driver.
Claim 39
Dependent Claim
87 words
The computer program product recited in claim 30 , wherein the acts of said abstract interface emulating multiple packet transfer of said plurality of data packets by individually transferring each of said plurality of data packets to said transport layer driver comprises acts of: said abstract interface determining from said memory location of said plurality of packets a memory location of each individual packet in the plurality of packets; and said abstract interface sending the memory location for each individual packet to said link layer device driver.
Claim 40
Dependent Claim
85 words
The computer program product recited in claim 30 , wherein said abstract interface mediating a transfer of said plurality of data packets to said computer via said transport layer driver comprises acts of: said abstract interface receiving from said transport layer driver a packet transfer capability indicator denoting the ability of said transport layer driver to facilitate transfer of multiple packets using said single receive request; and said abstract interface forwarding a memory location of said plurality of data packets to said transport layer driver.
References Cited (Backward Citations)
US5115392A
Cited
US5600799A
Cited
US5469545A
Cited
US5740467A
Cited
US5983275A
Cited
US5761427A
Cited
US5691985A
Cited
US5805920A
Cited
US5809501A
Cited
US5797043A
Cited
US5943479A
Cited
US6052744A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 2005-12-23 | 2006-06-24 | 2006-12-24 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2009-12-23 | 2010-06-24 | 2010-12-24 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2013-12-23 | 2014-06-24 | 2014-12-24 | $7700.00 | Window Closed / Lapsed |