IP Library Granted Patent US 9,077,751
Granted Patent B2
US 9,077,751 · App. 12/513,132 · Granted Jul 7, 2015

Driver level segmentation

Inventors: Steven L. Pope (Costa Mesa, CA); David J. Riddoch (Huntingdon, GB)
Assignee: SOLARFLARE COMMUNICATIONS, INC.
H04L69/16H04L69/166H04L69/22H04L69/161
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,077,751
App. No.
12/513,132
Granted
Jul 7, 2015
Kind
B2
Abstract

A method for performing segmentation of a first data packet into a plurality of second data packets at a functionality of a device driver for a network interface device supported by a data processing system, each second data packet comprising a header and a segment of data from the first data packet and the network interface device being capable of supporting a communication link over a network with another network interface device, the method comprising: accepting the first data packet, the first data packet carrying data for transmission by the network interface device over the network; forming a set of headers for the plurality of second data packets; writing the set of headers to memory; forming a specification, the specification indicating the headers in memory and the segments of data in the first data packet; requesting by means of the device driver transmission by the network interface device of the headers and the respective segments of data indicated in the specification so as to effect transmission of the second data packets over the network.

Claims (39)

1. A method comprising:

performing segmentation of a first data packet stored in a first memory area into a plurality of second data packets, each second data packet comprising a header and a segment of data from the first data packet, at a functionality of a device driver for a network interface device supported by a data processing system, the network interface device being capable of supporting a communication link over a network with another network interface device, wherein performing the segmentation comprises:

accepting the first data packet, the first data packet carrying data for transmission by the network interface device over the network;

logically dividing said first data packet into segments of data of the accepted first packet to provide at least one pointer to a data segment in said first memory area;

forming a set of headers for the plurality of second data packets from the accepted first data packet;

writing the formed set of headers to a second memory area;

forming a specification, the specification indicating the formed set of headers written in memory and the segments of data in the accepted first data packet, the specification comprising said at least one pointer to the first memory area for the data segments and at least one pointer to the second memory area for the headers; and

requesting by means of the device driver transmission by the network interface device of the headers in the second memory area and the respective segments of data in the first memory area indicated in the specification so as to effect transmission of the second data packets over the network; said request comprising an indication of said specification.

2. A method as claimed in claim 1 , wherein the device driver is operable to indicate to the data processing system that the network interface device is capable of performing transmit segmentation.

3. A method as claimed in claim 2 , wherein the network interface is not capable of performing transmit segmentation.

4. A method as claimed in claim 1 , wherein the device driver is operable to indicate to the data processing system that the network interface device is capable of performing a checksum calculation on each segment of data.

5. A method as claimed in claim 1 , wherein TCP flow control is performed at a network protocol stack of the data processing system.

6. A method as claimed in claim 1 , wherein the size of the first data packet is greater than the maximum packet size allowed by the network segment to which the data processing system is connected.

7. A method as claimed in claim 1 , wherein the maximum size of the second packets is indicated to the device driver by the data processing system.

8. A method as claimed in claim 1 , wherein the maximum size of the second packets is indicated to the device driver in a header of the first data packet.

9. A method as claimed in claim 1 , wherein the size of each of the plurality of second data packets is not greater than the maximum packet size allowed by the network segment to which the data processing system is connected.

10. A method as claimed in claim 1 , wherein the size of each of the plurality of second data packets is not greater than the maximum packet size allowed over the connection over which those packets are to be sent.

11. A method as claimed in claim 1 , wherein the formed set of headers is written to a first area of the memory.

12. A method as claimed in claim 11 , wherein the step of accepting the first data packet includes the step of receiving the first data packet at a second area of the memory.

13. A method as claimed in claim 12 , wherein the second area of the memory is allocated to the device driver.

14. A method as claimed in claim 12 , wherein the first data packet is received in fragments and the fragments are enqueued at the second area of the memory.

15. A method as claimed in claim 14 , wherein segmentation of the first data packet starts before all the fragments of the first data packet have been received.

16. A method as claimed in claim 12 , wherein the network interface device is operable to access the first and second areas of the memory by Direct Memory Access.

17. A method as claimed in claim 11 , wherein the first area of the memory is allocated to the device driver.

18. A method as claimed in claim 1 , wherein the step of requesting transmission of the headers and the respective segments of data indicated in the specification is by means of a single request to the network interface device.

19. A method as claimed in claim 1 , wherein the header of the first data packet includes a first identifier and all the headers of the second data packets include the first identifier.

20. A method as claimed in claim 1 , wherein the step of forming a set of headers for the plurality of second data packets includes the step of calculating an offset for each header in the set, the offset of a header being the position in bytes of its respective segment of data in the first data packet.

21. A method as claimed in claim 1 , wherein the step of forming a set of headers for the plurality of second data packets includes the step of calculating a checksum for each header in the set, the checksum of a header being calculated using its respective segment of data.

22. A data processing system having access to a memory and a network interface device capable of supporting a communication link over a network with another network interface device, the data processing system comprising:

an operating system;

a device driver of the network interface device;

at least one application operable to request that data for transmission is sent over the network, said first data packet stored in a first memory area;

a functionality of the operating system configured to, in response to a request by an application to send data for transmission over the network, form the data for transmission into at least one first data packet at a network protocol stack of the data processing system and send in indication to the device driver that the at least one first data packet is to be transmitted over the network; and

a functionality of the device driver configured to perform segmentation of each first data packet into a plurality of second data packets, each second data packet comprising a header and a segment of data, the device driver performing segmentation by:

logically dividing said first data packet into segments of data of the accepted first packet to provide at least one pointer to a data segment in said first memory area;

forming a set of headers for the plurality of second data packets from the first data packet;

writing the formed set of headers to a second memory area;

forming a specification indicating the formed set of headers written in the memory and the segments of data in the first data packet, the specification comprising said at least one pointer to the first memory area for the data segments and at least one pointer to the second memory area for the headers; and

requesting transmission by the network interface device of the headers in the second memory area and the respective segments of data in the first memory area indicated in the specification so as to effect transmission of the second data packets over the network; said a request comprising an indication of said specification.

Assignments (10)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 25, 2019
From: SOLARFLARE COMMUNICATIONS, INC.
To: XILINX, INC.
Reel/Frame 051108/0209 →
RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jul 31, 2019
From: ALLY BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 049918/0440 →
RELEASE OF SECURITY INTEREST Recorded Jun 15, 2017
From: PACIFIC WESTERN BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 042820/0890 →
SECURITY INTEREST Recorded Mar 7, 2017
From: SOLARFLARE COMMUNICATIONS, INC.
To: ALLY BANK
Reel/Frame 041902/0527 →
SECURITY INTEREST Recorded Apr 6, 2016
From: SOLARFLARE COMMUNICATIONS, INC.
To: PACIFIC WESTERN BANK
Reel/Frame 038363/0589 →
RELEASE OF SECURITY INTEREST Recorded Nov 24, 2014
From: COMERICA BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 034255/0140 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2014
From: COMERICA BANK
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 033716/0073 →
CHANGE OF ADDRESS OF THE ASSIGNEE Recorded Jan 8, 2013
From: SOLARFLARE COMMUNICATIONS INC.
To: SOLARFLARE COMMUNICATIONS INC.
Reel/Frame 029636/0295 →
SECURITY AGREEMENT Recorded Jan 5, 2012
From: SOLARFLARE COMMUNICATIONS, INC., A DELAWARE CORPORATION
To: COMERICA BANK, AS AGENT, A TEXAS BANKING ASSOCIATION
Reel/Frame 027487/0097 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 27, 2009
From: POPE, STEVEN L.; RIDDOCH, DAVID J.
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 022740/0939 →
Priority Claims (1)
GB 0621774.9 · Nov 1, 2006 · national
Continuity (1)
Related Publication 20100135324A1 · Jun 3, 2010