Showing results for 
Show  only  | Search instead for 
Did you mean: 
Registered: ‎07-02-2018

Disabling Ethernet CRC (FCS) Calculation


We are implementing a custom network device with MII interface in the PL side of Zynq-7000. One GEM of PS is connected to the module
via EMIO. We want to disable FCS (CRC) calculation of GEM because we will calculate CRC later.

PS runs Petalinux 2019.1. We tried to disable CRC calculation with the following command:

# ethtool -k eth0 tx off

Although ethtool reports (ethtool -K eth0) that tx-checksumming off after the command, packets send via MII interface
have still valid CRC at the end. I think that although TX CRC offloading is disabled for eth0, somewhat CRC is calculated
by Linux network stack on the CPU not by GEM and appended to the packet.

So, how can we disable CRC calculation for TX packets? It is suggested that the above command should work but in our case
we still get CRC [1].



Tags (1)
1 Reply
Registered: ‎10-08-2018

How are you sending frames?  If it's with raw sockets, Linux still generates the frame checksums whether its done in software or hardware.  I don't think you can transmit an ethernet frame with no or an invalid layer 2 checksum without modifications.

If you need to strip the frame checksum, you could do it in custom hardware, or modify Linux (preferably the MACB driver) to not send it for you at all with something like a device tree option.  Modifying the network stack is also possible, though I'm not sure how much effort and risk is involved.

Nathan Sullivan - Senior Embedded Software Engineer -
0 Kudos