[comp.dcom.lans] How an Ethernet controller knows where is CRC in a frame?

chris@yarra.oz.au (Chris Jankowski) (09/03/90)

How an Ethernet controller knows where is the CRC in the frame?

I understand that the Ethernet frames do not have a data length field 
as the IEEE802.3 frames do (the field is used for protocol type).

      -m-------   Chris Jankowski - Senior Systems Engineer chris@yarra.oz{.au}
    ---mmm-----   Pyramid Technology Corporation Pty. Ltd.  fax  +61 3 820 0536
  -----mmmmm---   11th Floor, 14 Queens Road                tel. +61 3 820 0711
-------mmmmmmm-   Melbourne, Victoria, 3004       AUSTRALIA       (03) 820 0711

"Knowing how things work is the basis for appreciation,
and is thus a source of civilized delight."  -- William Safire

karn@envy..bellcore.com (Phil Karn) (09/04/90)

In article <65138@yarra.oz.au> chris@yarra.oz.au (Chris Jankowski) writes:
>How an Ethernet controller knows where is the CRC in the frame?

It's fairly straightforward. CRCs are checked at the receiver with a
32-stage shift register with the appropriate feedback. Each bit in the
packet is in turn fed into the shift register, and the state of the
shift register can be examined in parallel.  If the CRC is correct,
the shift register will always contain the same value after the last
bit of the CRC has been received, regardless of the data in the packet.

So you just wait until the receive clock stops (which is how you
detect the end of an Ethernet frame) and look at the contents of the
shift register. If it contains anything other than the correct
residue, you know that there has been a CRC error.

Phil