A method and apparatus is presented for performing a sequence-level CRC calculation on
fiber channel communications within a switching platform domain. A CRC generator searches the data communication for frames that contain the type of data for which a sequence-level CRC is desired, such as for a sequence containing
SCSI data. If found, and the type of data allows multiple frames per sequence, the present invention creates a CRC value for the sequence. An intermediate CRC value is stored in a
queue to allow the simultaneous calculation of sequence level CRC values for multiple frames. With inbound data, the sequence-level CRC is appended to the end of the sequence data. With outbound data, the calculated value is compared with the appended, expected value, With single-frame
fiber channel protocols, the frame-level CRC value is obtained directly from the frames entering the switching platform domain. This value is placed in a local
queue, from which it is appended to the data
payload by a processor for transmission within the switching platform. When the
single frame is leaving the switching platform domain, the flow of data leaving the switching platform domain is monitored and the frame-level CRC value calculated by the
fiber channel controller is replaced with the original frame-level CRC value.