07-10-2020 01:58 AM
Hi,
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].
Best,
Alper
07-10-2020 02:22 PM
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.