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.