A method and apparatus is presented for performing a sequence-level CRC
calculation on fiber channel communications within a switching platform
domain. Specifically, the disclosed invention utilizes a CRC generator to
monitor data communication between an external interface and a fiber
channel controller. The 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. When found, the CRC
generator performs an 8B/10B decode, strips off any fill bytes, and
performs a CRC calculation on the data payload. If the found frame is the
first frame in the sequence, the CRC is done starting with a reset value.
If the frame is not the first, an intermediate value containing the
previous CRC calculation results for this sequence is retrieved and used
to perform the CRC calculations. Upon completion of the calculation for
the frame, a determination is made whether the sequence is complete. If
so, the calculated value is the sequence-level CRC. If not, the calculated
value is stored in memory for use with the next frame in that sequence.
With inbound data, the calculated sequence-level CRC is appended to the
end of the data comprising that sequence. With outbound data, the
calculated value is compared with the appended, expected value, and a CRC
error is generated if the values do not match. The sequence-level CRC
value appended to the sequence data is typically removed before the data
exits the switching platform domain.
Um método e um instrumento são apresentados executando um cálculo do CRC do seqüência-nível em comunicações de canaleta da fibra dentro de um domínio da plataforma do switching. Especificamente, a invenção divulgada utiliza um gerador do CRC para monitorar a transmissão de dados de entre uma relação externa e um controlador de canaleta da fibra. O gerador do CRC procurara a transmissão de dados de pelos frames que contêm o tipo de dados para que um seqüência-nível CRC é desejado, como para uma seqüência que contem dados de SCSI. Quando encontrado, o gerador do CRC executa um 8B/10B descodifica, descasca fora todos os bytes da suficiência, e executa um cálculo do CRC no payload dos dados. Se o frame encontrado for o primeiro frame na seqüência, o CRC é começar feita com um valor da restauração. Se o frame não for o primeiro, um valor intermediário que contem o cálculo precedente do CRC resulta para esta seqüência está recuperado e usado executar os cálculos do CRC. Em cima da conclusão do cálculo para o frame, uma determinação é feita se a seqüência está completa. Se assim, o valor calculado é o seqüência-nível CRC. If.not, o valor calculado é armazenado na memória para o uso com o frame seguinte nessa seqüência. Com dados inbound, o seqüência-nível calculado CRC é adicionado ao fim dos dados que compreendem essa seqüência. Com os dados outbound, o valor calculado é comparado com o valor adicionado, previsto, e um erro do CRC é gerado se os valores não combinarem. O valor do CRC do seqüência-nível adicionado aos dados da seqüência é removido tipicamente antes das saídas dos dados o domínio da plataforma do switching.