IP Library Granted Patent US 9,054,998
Granted Patent B2
US 9,054,998 · App. 13/760,109 · Granted Jun 9, 2015

System and method for maintaining packet order in an ordered data stream

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,054,998
App. No.
13/760,109
Granted
Jun 9, 2015
Kind
B2
Abstract

A source processor can divide each packet of a data stream into multiple segments prior to communication of the packet, allowing a packet to be transmitted in smaller chunks. The source processor can process the segments for two or more packets for a given data stream concurrently, and provide appropriate context information in each segments header to facilitate in order transmission and reception of the packets represented by the individual segments. Similarly, a destination processor can receive the packet segments packets for an ordered data stream from a source processor, and can assign different contexts, based upon the context information in each segments header. When a last segment is received for a particular packet, the context for the particular packet is closed, and a descriptor for the packet is sent to a queue. The order in which the last segments of the packets are transmitted maintains order amongst the packets.

Claims (44)

1. A method of maintaining packet order in an ordered data stream in a processor, the method comprising:

dequeuing a first packet from a first queue of the processor;

dequeuing a second packet from the first queue of the processor, wherein the second packet is subsequent to the first packet in an ordered data stream;

transmitting segments of the first packet and segments of the second packet to a destination processor, wherein at least one of the segments of the second packet is transmitted during the transmission of the segments of the first packet;

determining whether a last segment of the first packet has been transmitted to the destination processor when a last segment of the second packet is ready for transmission; and

stalling the transmission of the last segment of the second packet in response to the last segment of the second packet being ready for transmission prior to transmission of the last segment of the first packet, the stalling to prevent the last segment of the second packet from being transmitted prior to the last segment of the first packet.

2. The method of claim 1 , further comprising:

setting a value of a context field in a header of the second packet to a different value than a value of a context field in a header of the first packet to distinguish between the first packet and the second packet in the destination processor.

3. The method of claim 2 , further comprising:

at the destination processor, providing the first packet to a first queue of the destination processor in response to receiving all segments of the first packet, and providing the second packet to the first queue of the destination processor in response to receiving all segments of the second packet.

4. The method of claim 1 , wherein information of a header of the first packet being dequeued is the same information as a header of the second packet being dequeued.

5. The method of claim 1 , further comprising:

transmitting a first segment of the first packet from a first segmentation engine of the processor to the destination processor; and

transmitting a first segment of the second packet from a second segmentation engine of the processor to the destination processor, wherein header information of the first segment of the first packet, and header information of the first segment of the second packet are substantially identical, except for a value of a context field in the headers.

6. The method of claim 5 , wherein the last segment of the second packet is received at the destination processor after the last segment of the first packet in response to stalling the second segmentation engine.

7. The method of claim 1 , wherein an order of the first packet and the second packet is maintained in the ordered data stream in response to the last segment of the second packet being processed in a second segmentation engine subsequent to the last segment of the first packet being processed by a first segmentation engine.

8. A method of placing ordered packets in a queue of a processor, the method comprising:

receiving a first segment of a first packet at a message manager of the processor;

assigning a first context to segments of the first packet, including the first segment, based on a value of a field in a header of the first segment of the first packet;

receiving a first segment of a second packet at the message manager of the processor, the first packet and the second packet being packets of a common data stream; and

assigning a second context to segments of the second packet based on a value of a field in a header of the first segment of the second packet, wherein the value of the field in the header of the first segment of the second packet is different than the value of the field in the header of the first segment of the first packet, wherein a last segment of the second packet is received at the message manager after a last segment of the first packet in response to a source processor stalling a second segmentation engine associated with the second packet until the last segment of the first packet is transmitted from the source processor.

9. The method of claim 8 further comprising:

receiving a second segment of the first packet at the message manager;

associating the second segment of the first packet in the first context in response to a value of the field in a header of second segment of the first packet being the same as the value of the field in the header of first segment of the first packet;

receiving a second segment of the second packet at the message manager; and

associating the second segment of the second packet in the second context in response to a value of the field in a header of second segment of the second packet being the same as the value of the field in the header of the first segment of the second packet.

10. The method of claim 9 further comprising:

reassembling each segment of the first packet in response to each segment of the first packet being received at the message manager;

placing each segment of the first packet in a memory buffer after reassembly;

reassembling each segment of the second packet in response to each segment of the second packet being received at the message manager; and

placing each segment of the second packet in the memory after reassembly.

11. The method of claim 10 , wherein an order of the first packet and the second packet is maintained in an ordered data stream in response to stalling the second segmentation engine if the last segment of the second packet is received in the second segmentation engine prior to the last segment of the first packet being processed by the first segmentation engine.

12. A data processor device comprising:

a segmentation engine, the segmentation engine to receive packets to be transmitted from the data processor device, the segmentation engine segments a payload of each the packets to be transmitted into a plurality of segments for transmission to a destination data processor device, transmits segments of multiple packets, the segmentation engine determines if a last segment of a prior packet for transmission in an ordered data stream from the data processor has been transmitted when a last segment of a subsequent packet is ready for transmission, and stalls if the last segment of the subsequent packet is ready to be processed in the segmentation engine prior to the last segment of the prior packet being transmitted.

13. The data processor device of claim 12 , further comprising:

a context rotation module, the context rotation module to indicate a value of a field in a header of the packets, wherein the value of the field in the header of the packets are different to distinguish between packets at the destination data processor device.

14. The data processor device of claim 13 , wherein the context rotation engine selects a field in the header of the packets to be modified based on a queue selection process implemented at the destination data processor device.

15. The data processor device of claim 14 , wherein the queue selection process causes the destination data processor device to queue the packets in the same queue.

16. The data processor device of claim 12 , wherein information in the header of the header of the packets being dequeued is the same.

17. The data processor device of claim 16 , wherein the context field is masked for the packets in the destination data processor device when determining a target queue where the packets are to be queued.

18. The data processor device of claim 12 , wherein an order of the packets is maintained in the ordered data stream in response to the segmentation engine being stalled if the last segment of the subsequent packet is ready to be processed in the segmentation engine prior to the last segment of the prior packet being transmitted.

19. The data processor device of claim 12 , further comprising:

a plurality of segmentation engines, the plurality of segmentation engines concurrently segment different packets in the data stream.

20. The data processor device of claim 19 , wherein one of the plurality of segmentation engines stalls the other segmentation engines until a last segment of a packet in the one segmentation engine is transmitted to the destination processor, wherein packets in the other segmentation engines are subsequent packets in the data stream to the packet in the one segmentation engine.

Assignments (23)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 13, 2025
From: NXP USA, INC.
To: TAIWAN SEMICONDUCTOR MANUFACTURING COMPANY LIMITED
Reel/Frame 072889/0939 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 5, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041260/0850 →
MERGER Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040652/0241 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0744 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0704 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0725 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030445/0581 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030445/0709 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded May 20, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 030445/0737 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2013
From: JOKINEN, TOMMI M.; KRAMER, DAVID B.; XU, KUN
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 029760/0458 →