IP Library Granted Patent US 9,225,807
Granted Patent B2
US 9,225,807 · App. 14/700,101 · Granted Dec 29, 2015

Driver level segmentation

Inventors: Steven L. Pope (Costa Mesa, CA); David J. Riddoch (Fenstanton, GB)
Assignee: SOLARFLARE COMMUNICATIONS, INC.
H04L69/22H04L69/161H04L69/166
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,225,807
App. No.
14/700,101
Granted
Dec 29, 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 (45)

1. A method comprising:

performing reassembly of data packets at a functionality of a device driver for a network interface device supported by a data processing system, each data packet comprising a header and a segment of data and being received by the network interface device over a communication link with another network interface device, wherein the performing the reassembly comprises:

accepting data packets from the network interface device at the functionality of the device driver;

enqueueing each data packet of a first set of data packets at a first queue in memory, the first queue comprising at least a first data packet;

modifying the header of the first data packet in the first queue so as to include the segment of data of each newly-enqueued data packet of the first set;

defining a specification, the specification indicating the segments of data of the newly-enqueued data packets of the first set in the first queue; and,

in response to one or more first predetermined conditions being met:

causing a superpacket comprising the header of the first data packet in the first queue and the segments of data indicated by the specification to be passed to a network protocol stack of the data processing system for subsequent protocol processing.

2. The method as claimed in claim 1 , wherein the modifying the header of the first data packet includes modifying an indication of packet size in the header of the first data packet.

3. The method as claimed in claim 1 , wherein the size of the superpacket is greater than a maximum packet size allowed by a network segment to which the data processing system is connected.

4. The method as claimed in claim 1 , wherein the first predetermined conditions include:

a) a number of data packets at the first queue is a predetermined number;

b) a total size of the data packets at the first queue is a predetermined size; and

c) a predetermined time has elapsed since the first data packet was enqueued at the first queue.

5. The method as claimed in claim 1 , further comprising:

enqueueing each data packet of a second set of data packets at a second queue in memory, the second queue comprising at least a first data packet;

modifying the header of the first data packet in the second queue so as to include the segment of data of each newly-enqueued data packet of the second set;

defining a specification, the specification indicating the segments of data of the newly-enqueued data packets of the second set in the second queue; and,

in response to one or more first predetermined conditions being met:

causing a superpacket comprising the header of the first data packet in the second queue and the segments of data indicated by the specification to be passed to a network protocol stack of the data processing system for subsequent protocol processing.

6. The method as claimed in claim 5 , wherein data packets of the first set belong to a first data flow and data packets of the second set belong to a second data flow.

7. The method as claimed in claim 1 , wherein the accepting the data packets from the network interface device includes:

responsive to determining that at least one data packet from the network interface device belongs to a data flow for which a queue has not yet been established, defining a new queue in memory for that data flow.

8. The method as claimed in claim 7 , wherein subsequent steps of the method are performed as though the at least one data packet is the first set of data packets and the new queue is the first queue.

9. A method comprising:

performing reassembly of data packets at a functionality of a device driver for a network interface device supported by a data processing system, each data packet comprising a header and a segment of data and being received by the network interface device over a communication link with another network interface device, the performing reassembly of data packets comprising:

accepting data packets from the network interface device at the functionality of the device driver;

responsive to determining that one or more second predetermined conditions are met, passing the data packets to a network protocol stack of the data processing system for subsequent protocol processing;

responsive to determining that the one or more second predetermined conditions are not met:

enqueueing each data packet of a first set of data packets at a first queue in memory, the first queue comprising at least a first data packet;

modifying the header of the first data packet in the first queue so as to include the segment of data of each newly-enqueued data packet of the first set; and

defining a specification, the specification indicating the segments of data of the newly-enqueued data packets of the first set in the first queue,

the method further comprising, in response to one or more first predetermined conditions being met, causing a superpacket comprising the header of the first data packet in the first queue and the segments of data indicated by the specification to be passed to the network protocol stack of the data processing system for subsequent protocol processing.

10. The method as claimed in claim 9 , wherein the one or more second predetermined conditions include:

a) at least some of the data packets are fragmented;

b) at least some of the data packets are out of sequence;

c) at least some of the data packets do not contain a segment of data; and

d) the data packets are TCP/IP data packets and at least some of the data packets have one of RST, SYN or URG TCP flags set.

11. 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 having a network protocol stack;

the memory; and

a device driver of the network interface device configured to receive data packets from the network interface, each data packet comprising a header and a segment of data and being received by the network interface device over a communication link with another network interface device, said device driver configured to:

responsive to one or more second predetermined conditions being met, pass the data packets to the network protocol stack of the data processing system for subsequent protocol processing; and

responsive to the one or more second predetermined conditions not being met, enqueue each data packet of a first set of data packets at a first queue in said memory, the first queue comprising at least a first data packet, to modify the header of the first data packet in the first queue so as to include the segment of data of each newly-enqueued data packet of the first set, and define a specification, the specification indicating the segments of data of the newly-enqueued data packets of the first set in the first queue;

the network protocol stack being configured to receive and protocol process a super packet comprising the header of the first data packet in the first queue and the segments of data indicated by the specification for subsequent protocol processing.

Assignments (6)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2015
From: POPE, STEVEN L.; RIDDOCH, DAVID J.
To: SOLARFLARE COMMUNICATIONS, INC.
Reel/Frame 036491/0709 →
Priority Claims (1)
GB 0621774.9 · Nov 1, 2006 · national
Continuity (2)
Continuation 12513132
Related Publication 20150237176A1 · Aug 20, 2015