lkml.org 
[lkml]   [2022]   [Jun]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 07/66] net: ftgmac100: Disable hardware checksum on AST2600
    Date
    From: Joel Stanley <joel@jms.id.au>

    [ Upstream commit 6fd45e79e8b93b8d22fb8fe22c32fbad7e9190bd ]

    The AST2600 when using the i210 NIC over NC-SI has been observed to
    produce incorrect checksum results with specific MTU values. This was
    first observed when sending data across a long distance set of networks.

    On a local network, the following test was performed using a 1MB file of
    random data.

    On the receiver run this script:

    #!/bin/bash
    while [ 1 ]; do
    # Zero the stats
    nstat -r > /dev/null
    nc -l 9899 > test-file
    # Check for checksum errors
    TcpInCsumErrors=$(nstat | grep TcpInCsumErrors)
    if [ -z "$TcpInCsumErrors" ]; then
    echo No TcpInCsumErrors
    else
    echo TcpInCsumErrors = $TcpInCsumErrors
    fi
    done

    On an AST2600 system:

    # nc <IP of receiver host> 9899 < test-file

    The test was repeated with various MTU values:

    # ip link set mtu 1410 dev eth0

    The observed results:

    1500 - good
    1434 - bad
    1400 - good
    1410 - bad
    1420 - good

    The test was repeated after disabling tx checksumming:

    # ethtool -K eth0 tx-checksumming off

    And all MTU values tested resulted in transfers without error.

    An issue with the driver cannot be ruled out, however there has been no
    bug discovered so far.

    David has done the work to take the original bug report of slow data
    transfer between long distance connections and triaged it down to this
    test case.

    The vendor suspects this this is a hardware issue when using NC-SI. The
    fixes line refers to the patch that introduced AST2600 support.

    Reported-by: David Wilder <wilder@us.ibm.com>
    Reviewed-by: Dylan Hung <dylan_hung@aspeedtech.com>
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/faraday/ftgmac100.c | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
    index e1df2dc810a2..0b833572205f 100644
    --- a/drivers/net/ethernet/faraday/ftgmac100.c
    +++ b/drivers/net/ethernet/faraday/ftgmac100.c
    @@ -1910,6 +1910,11 @@ static int ftgmac100_probe(struct platform_device *pdev)
    /* AST2400 doesn't have working HW checksum generation */
    if (np && (of_device_is_compatible(np, "aspeed,ast2400-mac")))
    netdev->hw_features &= ~NETIF_F_HW_CSUM;
    +
    + /* AST2600 tx checksum with NCSI is broken */
    + if (priv->use_ncsi && of_device_is_compatible(np, "aspeed,ast2600-mac"))
    + netdev->hw_features &= ~NETIF_F_HW_CSUM;
    +
    if (np && of_get_property(np, "no-hw-checksum", NULL))
    netdev->hw_features &= ~(NETIF_F_HW_CSUM | NETIF_F_RXCSUM);
    netdev->features |= netdev->hw_features;
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-03 20:01    [W:4.271 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site