UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Participant rebakker
Participant
675 Views
Registered: ‎11-12-2014

How to enable AXI Ethernet/LWIP Full checksum offload

Jump to solution

I have implemented the AXI Ethernet Subsystem using Full TX/RX checksum offload.

Within the SDK Board Support Package Settings I enabled.

temac_adapter_options

  • tcp_ip_rx_checksum_offload = true
  • tcp_ip_tx_checksum_offload = true

This enables the generation of the IP header checksum and the UDP checksum.

I tested this by sending a 'hand made' Ethernet packet within the payload of a LWIP pbuf and passed it through to the low_level_output() (netif->linkoutput) function.

I left the locations within this pbuf->payload for the IP header checksum and the UDP checksum to be 0x0000, and the actually transmitted packed contained valid checksums for IP header checksum and the UDP checksum. I checked this using WireShark.

 

I also left the location within this pbuf->payload for the Ethernet Frame Check Sequence (FCS) to be 0x00000000.

This FCS value after the end of the UDP data and part of the Ethernet packet is however not changed when received by WireShark, and remains 0x00000000.

 

What did I do wrong. What are the requirements to have the AXI Ethernet Subsystem also generated the FCS within a BSP using LWIP?

 

0 Kudos
1 Solution

Accepted Solutions
Participant rebakker
Participant
619 Views
Registered: ‎11-12-2014

Re: How to enable AXI Ethernet/LWIP Full checksum offload

Jump to solution

Full checksum off loading is enabled within the AXI Ethernet IP for Tx and Rx. That's not the problem.

I think I misinterpreted this.

The locations of the IP header checksum and the UDP checksum should be 0x0000 within the Ethernet packet when transmitting, so the MAC can fill in the checksums at the right locations. So I also added an 0x00000000 at the end of the Ethernet packet to let de MAC use this location to fill in the FCS.

When receiving the Ethernet packet using Wireshark the FCS is not shown. But the FCS is not shown with any received packet by Wireshark. Probably the FCS is appended by the MAC and stripped before Wireshark displays the packet contents, because the communication is reported to be without errors by Wireshark and the data is also received correctly by the host.

So probably all misinterpretations by me.

 

2 Replies
Moderator
Moderator
629 Views
Registered: ‎08-25-2009

Re: How to enable AXI Ethernet/LWIP Full checksum offload

Jump to solution

HI @rebakker,

 

Do you also enable checksum offload in the AXI Ethernet IP? Could you please double check on this?

"Don't forget to reply, kudo and accept as solution."
0 Kudos
Participant rebakker
Participant
620 Views
Registered: ‎11-12-2014

Re: How to enable AXI Ethernet/LWIP Full checksum offload

Jump to solution

Full checksum off loading is enabled within the AXI Ethernet IP for Tx and Rx. That's not the problem.

I think I misinterpreted this.

The locations of the IP header checksum and the UDP checksum should be 0x0000 within the Ethernet packet when transmitting, so the MAC can fill in the checksums at the right locations. So I also added an 0x00000000 at the end of the Ethernet packet to let de MAC use this location to fill in the FCS.

When receiving the Ethernet packet using Wireshark the FCS is not shown. But the FCS is not shown with any received packet by Wireshark. Probably the FCS is appended by the MAC and stripped before Wireshark displays the packet contents, because the communication is reported to be without errors by Wireshark and the data is also received correctly by the host.

So probably all misinterpretations by me.