IP Library Granted Patent US 8,386,644
Granted Patent B1
US 8,386,644 · App. 12/901,994 · Granted Feb 26, 2013

Systems and methods for efficiently processing large data segments

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 8,386,644
App. No.
12/901,994
Granted
Feb 26, 2013
Kind
B1
Abstract

Large data segments are efficiently processed by setting up a plurality of Large Receive Segment Offload (LRO) queues within the computing system memory. The plurality of LRO queues are maintained concurrently so that a plurality of LRO contexts can be assembled simultaneously. A timer associated with each LRO queue prevents indefinite waiting for LRO segments to be completed.

Claims (44)

1. A machine-implemented method for processing large data segments received by a computing system, the computing system having a plurality of memory buffers and interfacing with an adapter for enabling the computing system to interface with a networked device, the method comprising:

a processor-executable driver of the computing system setting up a plurality of large-segment queues, each large-segment queue including a portion of the memory buffers;

the adapter receiving a first packet from a first context, wherein the first context relates to a first connection between the computing system and a first one of the other networked devices and describes a sequence of packets received from the first connection to be linked together for presentation to the computing system as a single entity;

the adapter determining that the first context is assigned to a first one of the queues, and the adapter copying the first packet to the first queue;

the adapter receiving a second packet from a second context, wherein the second context relates to a second connection between the computing system and a second one of the other networked devices and describes a sequence of packets received from the second connection to be linked together for presentation to the computing system as a single entity; and

the adapter determining that the second context is assigned to a second one of the queues, and the adapter copying the second packet to the second queue without generating a computing system interrupt for the first queue.

2. The method of claim 1 , further comprising the adapter determining that the second packet is the last portion of a packet sequence associated with the second context, and the adapter generating a computing system interrupt for processing packets stored in the second queue.

3. The method of claim 1 , further comprising:

the adapter receiving a third packet from a third context, wherein the third context relates to a third connection between the computing system and a third one of the other networked devices and describes a sequence of packets received from the third connection to be linked together for presentation to the computing system as a single entity;

the adapter determining that the third context is not assigned to any of the queues;

the adapter assigning the third context to one of the queues that is designated as free; and

the adapter copying the third packet to the third queue without generating a computing system interrupt for either the first queue or the second queue.

4. The method of claim 1 , further comprising the computing system passing the plurality of large-segment queues to the adapter with flags set to indicate that the queues are designated for Large Receive Segment Offload only.

5. The method of claim 1 , further comprising the adapter starting a timer associated with the first queue when the first packet is copied to the first queue.

6. The method of claim 5 , further comprising the adapter determining whether the timer has expired each time the adapter receives additional packets from the first context.

7. The method of claim 6 , further comprising the adapter determining that the timer has expired and generating a computing system interrupt for processing the packets stored in the first queue.

8. A machine-implemented method for processing large data segments received by a computing system, the computing system having a plurality of memory buffers and interfacing with an adapter for enabling the computing system to interface with a networked device, the method comprising:

a processor-executable driver of the computing system setting up a plurality of large-segment queues, each large-segment queue including a portion of the memory buffers;

the adapter receiving a first packet from a first context, wherein the first context relates to a first connection between the computing system and a first one of the other networked devices and describes a sequence of packets received from the first connection to be linked together for presentation to the computing system as a single entity;

the adapter determining that a context of the first packet is assigned to a first one of the queues, and the adapter copying the packet to the first queue;

the adapter starting a timer associated with the first queue;

the adapter receiving additional packets from the first context and copying the additional packets to the first queue;

the adapter determining that the timer has expired; and

the adapter generating a computing system interrupt for processing the packets stored in the first queue.

9. The method of claim 8 , further comprising the computing system passing the plurality of large-segment queues to the adapter with flags set to indicate that the queues are designated for Large Receive Segment Offload only.

10. The method of claim 9 , wherein when the packets stored in the first queue are processed the buffers in the first queue are passed to the computing system in the same order in which they were passed to the adapter.

11. The method of claim 8 , further comprising locking the first queue to the first context so that packets from other contexts cannot be copied to the first queue.

12. The method of claim 8 , further comprising the adapter terminating the first context, reassigning a portion of the memory buffers to the first queue, and designating the first queue as free to be reassigned to a new context.

13. A machine-implemented method for efficiently processing large data segments received by a computing system, the computing system having a plurality of memory buffers and interfacing with an adapter for enabling the computing system to interface with a networked device, the method comprising:

a processor-executable driver of the computing system setting up a plurality of large-segment queues, each large-segment queue including a portion of the memory buffers;

the adapter receiving a first packet from a first context, wherein the first context relates to a first connection between the computing system and a first one of the other networked devices and describes a sequence of packets received from the first connection to be linked together for presentation to the computing system as a single entity;

the adapter determining that a context of the first packet is assigned to a first one of the queues, and the adapter copying the packet to the first queue;

the adapter determining that the first packet is the last portion of a packet sequence associated with the first context;

the adapter generating a computing system interrupt for processing the packets stored in the first queue;

the adapter terminating the first context and reassigning a portion of the memo buffers to the first queue; and

the adapter designating the first queue as free to be reassigned to a new context.

14. The method of claim 13 , further comprising the computing system passing the plurality of large-segment queues to the adapter with flags set to indicate that the queues are designated for Large Receive Segment Offload only.

15. The method of claim 13 , further comprising:

the adapter receiving a second packet from a second context, wherein the second context relates to a second connection between the computing system and a second one of the other networked devices and describes a sequence of packets received from the second connection to be linked together for presentation to the computing system as a single entity;

the adapter determining that a context of the second packet is assigned to a second one of the queues; and

the adapter copying the packet to the second queue.

16. The method of claim 15 , further comprising the adapter starting a timer associated with the second queue when the second packet is copied to the second queue.

17. The method of claim 16 , further comprising the adapter determining whether the timer has expired each time the adapter receives additional packets from the second context.

18. The method of claim 17 , further comprising the adapter determining that the timer has expired and generating a computing system interrupt for processing the packets stored in the second queue.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →