[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <cdc38cdf-536c-c23b-46c1-abadf14001a2@bootlin.com>
Date: Tue, 19 Dec 2023 10:50:15 +0100 (CET)
From: Romain Gantois <romain.gantois@...tlin.com>
To: Andrew Lunn <andrew@...n.ch>
cc: Romain Gantois <romain.gantois@...tlin.com>,
Alexandre Torgue <alexandre.torgue@...s.st.com>,
Jose Abreu <joabreu@...opsys.com>, "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
Maxime Coquelin <mcoquelin.stm32@...il.com>,
Miquel Raynal <miquel.raynal@...tlin.com>,
Maxime Chevallier <maxime.chevallier@...tlin.com>,
Sylvain Girard <sylvain.girard@...com>,
Pascal EBERHARD <pascal.eberhard@...com>,
Richard Tresidder <rtresidd@...ctromag.com.au>, netdev@...r.kernel.org,
linux-stm32@...md-mailman.stormreply.com,
linux-arm-kernel@...ts.infradead.org
Subject: Re: [PATCH net 0/1] Prevent DSA tags from breaking COE
On Mon, 18 Dec 2023, Andrew Lunn wrote:
...
> Probably a dumb question.... Does this COE also perform checksum
> validation on receive? Is it also getting confused by the DSA header?
>
> You must of tested receive, so it works somehow, but i just wounder if
> something needs to be done to be on the safe side?
That's a good point, I just investigated the RX path a bit more and the MAC
indeed has IP/TCP/UDP RX checksum offloading enabled. However, the
external switch in my setup uses EDSA tags, which displace the "true" ethertype
field to the end of the DSA header and replaces the "normal" ethertype with
ETH_P_EDSA (0xdada). So to the MAC controller, the ethernet frame has an unknown
ethertype, and so it doesn't see it as an IP frame at all. All of the
ethtool counters related to IP stuff are at 0, which supports this.
This explains why checksum offloading doesn't break the RX path in my case.
However, other maybe other DSA switches using different frame formats could
cause different behavior? Considering this, I think it would be safer to change
the dsa_breaks_tx_coe flag to a general dsa_breaks_coe flag. It makes sense to
me to assume that if DSA tags break TX COE, then RX COE will also not work.
I'll take this into account when I send a v2.
Best Regards,
--
Romain Gantois, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
Powered by blists - more mailing lists