compatible = "aspeed,ast2400-mac", "faraday,ftgmac100";
                        reg = <0x1e660000 0x180>;
                        interrupts = <2>;
-                       no-hw-checksum;
                        status = "disabled";
                };
 
                        compatible = "aspeed,ast2400-mac", "faraday,ftgmac100";
                        reg = <0x1e680000 0x180>;
                        interrupts = <3>;
-                       no-hw-checksum;
                        status = "disabled";
                };
 
 
                        compatible = "aspeed,ast2500-mac", "faraday,ftgmac100";
                        reg = <0x1e660000 0x180>;
                        interrupts = <2>;
-                       no-hw-checksum;
                        status = "disabled";
                };
 
                        compatible = "aspeed,ast2500-mac", "faraday,ftgmac100";
                        reg = <0x1e680000 0x180>;
                        interrupts = <3>;
-                       no-hw-checksum;
                        status = "disabled";
                };
 
 
                        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);