Skip to content

Commit 828309e

Browse files
shenkigregkh
authored andcommitted
net: ftgmac100: Disable hardware checksum on AST2600
[ Upstream commit 6fd45e7 ] 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 <[email protected]> Reviewed-by: Dylan Hung <[email protected]> Signed-off-by: Joel Stanley <[email protected]> Signed-off-by: David S. Miller <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 640397a commit 828309e

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

drivers/net/ethernet/faraday/ftgmac100.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1893,6 +1893,11 @@ static int ftgmac100_probe(struct platform_device *pdev)
18931893
/* AST2400 doesn't have working HW checksum generation */
18941894
if (np && (of_device_is_compatible(np, "aspeed,ast2400-mac")))
18951895
netdev->hw_features &= ~NETIF_F_HW_CSUM;
1896+
1897+
/* AST2600 tx checksum with NCSI is broken */
1898+
if (priv->use_ncsi && of_device_is_compatible(np, "aspeed,ast2600-mac"))
1899+
netdev->hw_features &= ~NETIF_F_HW_CSUM;
1900+
18961901
if (np && of_get_property(np, "no-hw-checksum", NULL))
18971902
netdev->hw_features &= ~(NETIF_F_HW_CSUM | NETIF_F_RXCSUM);
18981903
netdev->features |= netdev->hw_features;

0 commit comments

Comments
 (0)