Re: [PATCH] ftgmac100: Disable HW checksum generation on AST2500

From: Benjamin Herrenschmidt
Date: Wed Oct 09 2019 - 20:10:04 EST


On Wed, 2019-10-09 at 14:18 -0400, Oskar Senft wrote:
> Does HW in the AST2500 actually perform the HW checksum calculation,
> or would that be the responsibility of the NIC that it's talking to
> via NC-SI?

I wouldn't rely on the NC-SI NIC for UDP/TCP checksums. We should be
providing it with well formed traffic.

Cheers,
Ben.

> Oskar.
>
> On Wed, Oct 9, 2019 at 12:38 AM Benjamin Herrenschmidt <
> benh@xxxxxxxxxxxxxxxxxxx> wrote:
> > On Wed, 2019-09-11 at 14:48 +0000, Joel Stanley wrote:
> > > Hi Ben,
> > >
> > > On Tue, 10 Sep 2019 at 22:05, Florian Fainelli <
> > f.fainelli@xxxxxxxxx>
> > > wrote:
> > > >
> > > > On 9/10/19 2:37 PM, Vijay Khemka wrote:
> > > > > HW checksum generation is not working for AST2500, specially
> > with
> > > > > IPV6
> > > > > over NCSI. All TCP packets with IPv6 get dropped. By
> > disabling
> > > > > this
> > > > > it works perfectly fine with IPV6.
> > > > >
> > > > > Verified with IPV6 enabled and can do ssh.
> > > >
> > > > How about IPv4, do these packets have problem? If not, can you
> > > > continue
> > > > advertising NETIF_F_IP_CSUM but take out NETIF_F_IPV6_CSUM?
> > > >
> > > > >
> > > > > Signed-off-by: Vijay Khemka <vijaykhemka@xxxxxx>
> > > > > ---
> > > > > drivers/net/ethernet/faraday/ftgmac100.c | 5 +++--
> > > > > 1 file changed, 3 insertions(+), 2 deletions(-)
> > > > >
> > > > > diff --git a/drivers/net/ethernet/faraday/ftgmac100.c
> > > > > b/drivers/net/ethernet/faraday/ftgmac100.c
> > > > > index 030fed65393e..591c9725002b 100644
> > > > > --- a/drivers/net/ethernet/faraday/ftgmac100.c
> > > > > +++ b/drivers/net/ethernet/faraday/ftgmac100.c
> > > > > @@ -1839,8 +1839,9 @@ static int ftgmac100_probe(struct
> > > > > platform_device *pdev)
> > > > > if (priv->use_ncsi)
> > > > > netdev->hw_features |=
> > NETIF_F_HW_VLAN_CTAG_FILTER;
> > > > >
> > > > > - /* AST2400 doesn't have working HW checksum generation
> > */
> > > > > - if (np && (of_device_is_compatible(np, "aspeed,ast2400-
> > > > > mac")))
> > > > > + /* AST2400 and AST2500 doesn't have working HW
> > checksum
> > > > > generation */
> > > > > + if (np && (of_device_is_compatible(np, "aspeed,ast2400-
> > > > > mac") ||
> > > > > + of_device_is_compatible(np, "aspeed,ast2500-
> > > > > mac")))
> > >
> > > Do you recall under what circumstances we need to disable
> > hardware
> > > checksumming?
> >
> > Any news on this ? AST2400 has no HW checksum logic in HW, AST2500
> > should work for IPV4 fine, we should only selectively disable it
> > for
> > IPV6.
> >
> > Can you do an updated patch ?
> >
> > Cheers,
> > Ben.
> >