Thread (7 messages) flat view 7 messages, 3 authors, 2021-05-20

Re: stmmac: zero udp checksum

From: Jakub Kicinski <kuba@kernel.org>
Date: 2021-04-05 23:03:44

On Mon, 5 Apr 2021 18:42:53 +0200 Andrew Lunn wrote:
quoted
But was is still a bit strange to me is that it seems like the stmmac driver
behaves different than other ethernet drivers which do not drop UDP packets
with zero checksums when rx checksumming is enabled.  
To answer that, you need somebody with more knowledge of the stmmac
hardware.
+1 stmmac maintainers could you advise?
It is actually quite hard to do. It means you need to parse
more of the frame to determine if the frame contains a VXLAN
encapsulated frame. Probably the stmmac cannot do that. It sees the
checksum is wrong and drops the packet.

Have you looked at where it actually drops the packet?
Is it one of

https://elixir.bootlin.com/linux/latest/source/drivers/net/ethernet/stmicro/stmmac/norm_desc.c#L95

or

https://elixir.bootlin.com/linux/latest/source/drivers/net/ethernet/stmicro/stmmac/enh_desc.c#L87

It could be, you need to see if the checksum has fail, then check if
the checksum is actually zero, and then go deeper into the frame and
check if it is a vxlan frame. It could be the linux software checksum
code knows about this vxlan exception, so you can just run that before
deciding to drop the frame.
To be clear the expectation is that devices / drivers will only drop
packets on L2 / FCS errors. If L3 or L4 csum is incorrect the packet
should be passed up the stack and kernel will handle it how it sees fit.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help