ftgmac100: Disable HW checksum generation on AST2400, enable on others
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 12 Apr 2017 03:27:03 +0000 (13:27 +1000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 12 Apr 2017 14:17:01 +0000 (10:17 -0400)
We found out that HW checksum generation only works from AST2500
onward. This disables it on AST2400 and removes the "no-hw-checksum"
properties in the device-trees. The problem we had wasn't related
to NC-SI.

Also rework the logic testing for that property so it can be used
to disable HW checksum generation and checking regardless of whether
NC-SI is used or not in case other variants out there need this.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/arm/boot/dts/aspeed-g4.dtsi
arch/arm/boot/dts/aspeed-g5.dtsi
drivers/net/ethernet/faraday/ftgmac100.c

index 6068e79fb65178ac946c61c5686201284013f521..c79c937b0a8aab92f2227deb8bf2d756542b57e8 100644 (file)
@@ -45,7 +45,6 @@
                        compatible = "aspeed,ast2400-mac", "faraday,ftgmac100";
                        reg = <0x1e660000 0x180>;
                        interrupts = <2>;
-                       no-hw-checksum;
                        status = "disabled";
                };
 
@@ -53,7 +52,6 @@
                        compatible = "aspeed,ast2400-mac", "faraday,ftgmac100";
                        reg = <0x1e680000 0x180>;
                        interrupts = <3>;
-                       no-hw-checksum;
                        status = "disabled";
                };
 
index 4dbe91a0279218bddcc8971e00e1b11117e384ea..b6596633036cd3a66c29e0c4c28663980fa7c200 100644 (file)
@@ -36,7 +36,6 @@
                        compatible = "aspeed,ast2500-mac", "faraday,ftgmac100";
                        reg = <0x1e660000 0x180>;
                        interrupts = <2>;
-                       no-hw-checksum;
                        status = "disabled";
                };
 
@@ -44,7 +43,6 @@
                        compatible = "aspeed,ast2500-mac", "faraday,ftgmac100";
                        reg = <0x1e680000 0x180>;
                        interrupts = <3>;
-                       no-hw-checksum;
                        status = "disabled";
                };
 
index e793d353882fe85d8e753af364967fc38d7ad2d2..099309920d6a937756729ee7cafe57541fa98629 100644 (file)
@@ -1473,15 +1473,15 @@ static int ftgmac100_probe(struct platform_device *pdev)
                        goto err_setup_mdio;
        }
 
-       /* We have to disable on-chip IP checksum functionality
-        * when NCSI is enabled on the interface. It doesn't work
-        * in that case.
-        */
+       /* Base feature set */
        netdev->features = NETIF_F_RXCSUM | NETIF_F_HW_CSUM |
                NETIF_F_GRO | NETIF_F_SG;
-       if (priv->use_ncsi &&
-           of_get_property(np, "no-hw-checksum", NULL))
+
+       /* AST2400  doesn't have working HW checksum generation */
+       if (np && (of_device_is_compatible(np, "aspeed,ast2400-mac")))
                netdev->features &= ~NETIF_F_HW_CSUM;
+       if (np && of_get_property(np, "no-hw-checksum", NULL))
+               netdev->features &= ~(NETIF_F_HW_CSUM | NETIF_F_RXCSUM);
 
        /* register network device */
        err = register_netdev(netdev);