Method of Offloading Cyclic Redundancy Check on Portions of a Packet
First Claim
1. A method comprising:
- receiving a packet from a network over one or more network interfaces, wherein the packet comprises;
an original data stream with an original data unit and one or more additional data units extending to the end of the original data stream, andan original cyclical redundancy check (CRC) value computed from the original data stream;
inserting a modified data unit into the packet in place of the original data unit to generate a modified data stream;
generating a first CRC value from the one or more additional data units;
generating a second CRC value from the modified data unit;
adjusting the second CRC value based on a shift length equal to a distance of the one or more additional data units to generate a perspective shifted second CRC value by using fixed number of distance lookup table operations; and
generating an updated CRC value from the first CRC value and perspective shifted second CRC value, thereby avoiding recalculating a complete CRC value based on an entirety of the modified data stream.
15 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus are provided for computing a CRC value for a packet containing a data stream with a modified data unit data and one or more additional data units extending to the end of the data stream by computing a first CRC value from the one or more additional data units, computing a second CRC value from the modified data unit, adjusting the second CRC value based on a shift length equal to a distance of the one or more additional data units to compute a perspective shifted second CRC value by using fixed number of distance lookup table operations, and generating an updated CRC value from the first CRC value and perspective shifted second CRC value, thereby avoiding recalculating a complete CRC value based on an entirety of the modified data stream.
-
Citations
20 Claims
-
1. A method comprising:
-
receiving a packet from a network over one or more network interfaces, wherein the packet comprises; an original data stream with an original data unit and one or more additional data units extending to the end of the original data stream, and an original cyclical redundancy check (CRC) value computed from the original data stream; inserting a modified data unit into the packet in place of the original data unit to generate a modified data stream; generating a first CRC value from the one or more additional data units; generating a second CRC value from the modified data unit; adjusting the second CRC value based on a shift length equal to a distance of the one or more additional data units to generate a perspective shifted second CRC value by using fixed number of distance lookup table operations; and generating an updated CRC value from the first CRC value and perspective shifted second CRC value, thereby avoiding recalculating a complete CRC value based on an entirety of the modified data stream. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A network device comprising:
-
a memory that stores a packet comprising a data stream with a first data unit and one or more additional data units extending to the end of the data stream; and CRC offload hardware circuitry comprising; first CRC computation circuitry that produces a first CRC value from the first data unit, projection circuitry configured to adjust the first CRC value based on a shift length equal to a distance of the one or more additional data units to compute a perspective shifted first CRC value by using fixed number of distance lookup table operations, second CRC computation circuitry that produces a second CRC value from the one or more additional data units, and XOR logic for combining perspective shifted first CRC value and second CRC value to generate a CRC value for the data stream, thereby avoiding recalculating a complete CRC value based on an entirety of the data stream. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification