Commit 6aff0bf6 authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by David S. Miller

ftgmac100: Disable HW checksum generation on AST2400, enable on others

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: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 78d28543
...@@ -45,7 +45,6 @@ mac0: ethernet@1e660000 { ...@@ -45,7 +45,6 @@ mac0: ethernet@1e660000 {
compatible = "aspeed,ast2400-mac", "faraday,ftgmac100"; compatible = "aspeed,ast2400-mac", "faraday,ftgmac100";
reg = <0x1e660000 0x180>; reg = <0x1e660000 0x180>;
interrupts = <2>; interrupts = <2>;
no-hw-checksum;
status = "disabled"; status = "disabled";
}; };
...@@ -53,7 +52,6 @@ mac1: ethernet@1e680000 { ...@@ -53,7 +52,6 @@ mac1: ethernet@1e680000 {
compatible = "aspeed,ast2400-mac", "faraday,ftgmac100"; compatible = "aspeed,ast2400-mac", "faraday,ftgmac100";
reg = <0x1e680000 0x180>; reg = <0x1e680000 0x180>;
interrupts = <3>; interrupts = <3>;
no-hw-checksum;
status = "disabled"; status = "disabled";
}; };
......
...@@ -36,7 +36,6 @@ mac0: ethernet@1e660000 { ...@@ -36,7 +36,6 @@ mac0: ethernet@1e660000 {
compatible = "aspeed,ast2500-mac", "faraday,ftgmac100"; compatible = "aspeed,ast2500-mac", "faraday,ftgmac100";
reg = <0x1e660000 0x180>; reg = <0x1e660000 0x180>;
interrupts = <2>; interrupts = <2>;
no-hw-checksum;
status = "disabled"; status = "disabled";
}; };
...@@ -44,7 +43,6 @@ mac1: ethernet@1e680000 { ...@@ -44,7 +43,6 @@ mac1: ethernet@1e680000 {
compatible = "aspeed,ast2500-mac", "faraday,ftgmac100"; compatible = "aspeed,ast2500-mac", "faraday,ftgmac100";
reg = <0x1e680000 0x180>; reg = <0x1e680000 0x180>;
interrupts = <3>; interrupts = <3>;
no-hw-checksum;
status = "disabled"; status = "disabled";
}; };
......
...@@ -1473,15 +1473,15 @@ static int ftgmac100_probe(struct platform_device *pdev) ...@@ -1473,15 +1473,15 @@ static int ftgmac100_probe(struct platform_device *pdev)
goto err_setup_mdio; goto err_setup_mdio;
} }
/* We have to disable on-chip IP checksum functionality /* Base feature set */
* when NCSI is enabled on the interface. It doesn't work
* in that case.
*/
netdev->features = NETIF_F_RXCSUM | NETIF_F_HW_CSUM | netdev->features = NETIF_F_RXCSUM | NETIF_F_HW_CSUM |
NETIF_F_GRO | NETIF_F_SG; 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; 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 */ /* register network device */
err = register_netdev(netdev); err = register_netdev(netdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment