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: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
78d28543a6
commit
6aff0bf641
@ -45,7 +45,6 @@
|
|||||||
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 @@
|
|||||||
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 @@
|
|||||||
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 @@
|
|||||||
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)
|
|||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user