IP Library Granted Patent US 10,560,357
Granted Patent B2
US 10,560,357 · App. 16/045,781 · Granted Feb 11, 2020

Distributed checksum calculation for communication packets

Inventors: Lukas Reinbold (Oberkirch-Stadelhofen, DE); Thomas Kniplitsch (Insheim, DE)
Assignee: Marvell World Trade Ltd.
H04L43/0847H04L1/0061H04L12/46H04L47/6245H04L69/08H04L69/22H04N21/2383H04N21/4382
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 10,560,357
App. No.
16/045,781
Granted
Feb 11, 2020
Kind
B2
Abstract

A packet generator includes a checksum calculator configured to distinguish, in a communication packet belonging to a sequence of packets, between (i) one or more constant values of a header of the packet, the one or more constant values remaining unchanged across the packets in the sequence, (ii) a payload of the packet, and (iii) one or more variable values of the header, the one or more variable values changing among the packets in the sequence, to determine a constant-values partial checksum calculated over the constant values of the header, to calculate a payload partial checksum over the payload, to calculate a final checksum value for the packet based on (i) the constant-values partial checksum, (ii) the payload partial checksum and (iii) the variable values of the header, and to insert the final checksum value into the packet. An egress interface transmits the packet over a network.

Claims (33)

1. A packet generator, comprising:

a checksum calculator, configured to:

distinguish, in a communication packet belonging to a sequence of communication packets, between (i) one or more constant values of a header of the communication packet, the one or more constant values remaining unchanged across the communication packets in the sequence, (ii) a payload of the communication packet, and (iii) one or more variable values of the header of the communication packet, wherein the one or more variable values span a first number of data words and change among the communication packets in the sequence;

determine a constant-values partial checksum, which is calculated over the constant values of the header and remains unchanged across the communication packets in the sequence;

calculate a payload partial checksum over the payload;

calculate a final checksum value for the communication packet based on (i) the constant-values partial checksum, (ii) the payload partial checksum and (iii) the variable values of the header, by rearranging the variable values of the header in a second number of data words, smaller than the first number, and calculating the final checksum over the second number of data words; and

insert the final checksum value into the communication packet; and

an egress interface, configured to transmit the communication packet, including the final checksum value, over a communication network.

2. The packet generator according to claim 1 , wherein the checksum calculator is configured to determine the constant-values partial checksum and to calculate the payload partial checksum independently of one another.

3. The packet generator according to claim 1 , wherein the checksum calculator is configured to determine the constant-values partial checksum before the payload is received in the packet generator.

4. The packet generator according to claim 1 , wherein the checksum calculator is configured to calculate the constant-values partial checksum upon initialization of the packet generator and to store the calculated constant-values partial checksum in a memory, or to read from the memory an offline-calculated constant-values partial checksum.

5. The packet generator according to claim 1 , wherein the header of the communication packet spans one or more data words, and wherein the checksum calculator is configured to determine the constant-values partial checksum by zeroing any bits of the data words that do not belong to the constant values of the header, and then calculating the constant-values partial checksum over non-zeroed bits of the data words corresponding to the constant values.

6. The packet generator according to claim 1 , wherein the checksum calculator is configured to calculate the payload partial checksum over the payload in parallel with the payload being written into the memory buffer.

7. The packet generator according to claim 1 , wherein the checksum calculator is configured to calculate the final checksum value in parallel with transmission of the communication packet, and to complete calculation of the final checksum value and insertion of the final checksum value into the communication packet before a transmission time of the final checksum value.

8. The packet generator according to claim 1 , further comprising a transmit (TX) First-In First-Out (FIFO) buffer configured to hold at least the payload of the communication packet, wherein the checksum calculator comprises:

input-side logic, which is coupled to an input of the FIFO buffer and configured to insert the payload partial checksum into a status word that propagates via the FIFO buffer together with the payload; and

output-side logic, which is coupled to an output of the FIFO buffer and configured to extract the status word from the FIFO buffer, calculate the final checksum value based on the payload partial checksum in the status word, and insert the final checksum value into the communication packet.

9. A packet generation method, comprising:

in a communication packet belonging to a sequence of communication packets, distinguishing between (i) one or more constant values of a header of the communication packet, the one or more constant values remaining unchanged across the communication packets in the sequence, (ii) a payload of the communication packet, and (iii) one or more variable values of the header of the communication packet, wherein the one or more variable values span a first number of data words and change among the communication packets in the sequence;

determining a constant-values partial checksum, which is calculated over the constant values of the header and remains unchanged across the communication packets in the sequence;

calculating a payload partial checksum over the payload;

calculating a final checksum value for the communication packet based on (i) the constant-values partial checksum, (ii) the payload partial checksum and (iii) the variable values of the header, by rearranging the variable values of the header in a second number of data words, smaller than the first number, and calculating the final checksum over the second number of data words;

inserting the final checksum value into the communication packet; and

transmitting the communication packet, including the final checksum value, over a communication network.

10. The method according to claim 9 , wherein determining the constant-values partial checksum and calculating the payload partial checksum are performed independently of one another.

11. The method according to claim 9 , wherein determining the constant-values partial checksum is performed before the payload is received in the packet generator.

12. The method according to claim 9 , wherein determining the constant-values partial checksum comprises calculating the constant-values partial checksum upon initialization of the packet generator and storing the calculated constant-values partial checksum in a memory, or reading from the memory an offline-calculated constant-values partial checksum.

13. The method according to claim 9 , wherein the header of the communication packet spans one or more data words, and wherein determining the constant-values partial checksum comprises zeroing any bits of the data words that do not belong to the constant values of the header, and then calculating the constant-values partial checksum over non-zeroed bits of the data words corresponding to the constant values.

14. The method according to claim 9 , wherein calculating the payload partial checksum over the payload is performed in parallel with the payload being written into the memory buffer.

15. The method according to claim 9 , wherein calculating the final checksum value comprises calculating the final checksum value in parallel with transmission of the communication packet, and completing calculation of the final checksum value and insertion of the final checksum value into the communication packet before a transmission time of the final checksum value.

16. The packet generator according to claim 9 , further comprising holding at least the payload of the communication packet in a transmit (TX) First-In First-Out (FIFO) buffer, wherein calculating the final checksum value comprises:

inserting the payload partial checksum into a status word that propagates via the FIFO buffer together with the payload; and

extracting the status word from the FIFO buffer, calculating the final checksum value based on the payload partial checksum in the status word, and inserting the final checksum value into the communication packet.

Assignments (9)
MERGER Recorded Sep 5, 2025
From: INFINEON TECHNOLOGIES US NEWCO LLC
To: INFINEON TECHNOLOGIES AMERICAS CORP.
Reel/Frame 072563/0971 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2025
From: MARVELL ASIA PTE LTD
To: INFINEON TECHNOLOGIES US NEWCO LLC
Reel/Frame 072558/0700 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2020
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 051778/0537 →
LICENSE Recorded Aug 3, 2018
From: MARVELL WORLD TRADE LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 046552/0397 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2018
From: MARVELL INTERNATIONAL LTD.
To: MARVELL WORLD TRADE LTD.
Reel/Frame 046552/0021 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2018
From: MARVELL SEMICONDUCTOR GERMANY GMBH
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 046551/0683 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2018
From: REINBOLD, LUKAS; KNIPLITSCH, THOMAS
To: MARVELL SEMICONDUCTOR GERMANY GMBH
Reel/Frame 046551/0371 →
Continuity (3)
Provisional Application 62591590 · Nov 28, 2017
Provisional Application 62650187 · Mar 29, 2018
Related Publication 20190166027A1 · May 30, 2019