diff options
Diffstat (limited to 'drivers/net/ibm_newemac/core.c')
| -rw-r--r-- | drivers/net/ibm_newemac/core.c | 33 | 
1 files changed, 11 insertions, 22 deletions
diff --git a/drivers/net/ibm_newemac/core.c b/drivers/net/ibm_newemac/core.c index 385dc3204cb..079450fe5e9 100644 --- a/drivers/net/ibm_newemac/core.c +++ b/drivers/net/ibm_newemac/core.c @@ -1279,7 +1279,7 @@ static void emac_force_link_update(struct emac_instance *dev)  	netif_carrier_off(dev->ndev);  	smp_rmb();  	if (dev->link_polling) { -		cancel_rearming_delayed_work(&dev->link_work); +		cancel_delayed_work_sync(&dev->link_work);  		if (dev->link_polling)  			schedule_delayed_work(&dev->link_work,  PHY_POLL_LINK_OFF);  	} @@ -1294,7 +1294,7 @@ static int emac_close(struct net_device *ndev)  	if (dev->phy.address >= 0) {  		dev->link_polling = 0; -		cancel_rearming_delayed_work(&dev->link_work); +		cancel_delayed_work_sync(&dev->link_work);  	}  	mutex_lock(&dev->link_lock);  	emac_netif_stop(dev); @@ -2053,13 +2053,6 @@ static void emac_ethtool_get_pauseparam(struct net_device *ndev,  	mutex_unlock(&dev->link_lock);  } -static u32 emac_ethtool_get_rx_csum(struct net_device *ndev) -{ -	struct emac_instance *dev = netdev_priv(ndev); - -	return dev->tah_dev != NULL; -} -  static int emac_get_regs_len(struct emac_instance *dev)  {  	if (emac_has_feature(dev, EMAC_FTR_EMAC4)) @@ -2203,15 +2196,11 @@ static const struct ethtool_ops emac_ethtool_ops = {  	.get_ringparam = emac_ethtool_get_ringparam,  	.get_pauseparam = emac_ethtool_get_pauseparam, -	.get_rx_csum = emac_ethtool_get_rx_csum, -  	.get_strings = emac_ethtool_get_strings,  	.get_sset_count = emac_ethtool_get_sset_count,  	.get_ethtool_stats = emac_ethtool_get_ethtool_stats,  	.get_link = ethtool_op_get_link, -	.get_tx_csum = ethtool_op_get_tx_csum, -	.get_sg = ethtool_op_get_sg,  };  static int emac_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd) @@ -2719,8 +2708,7 @@ static const struct net_device_ops emac_gige_netdev_ops = {  	.ndo_change_mtu		= emac_change_mtu,  }; -static int __devinit emac_probe(struct platform_device *ofdev, -				const struct of_device_id *match) +static int __devinit emac_probe(struct platform_device *ofdev)  {  	struct net_device *ndev;  	struct emac_instance *dev; @@ -2860,8 +2848,10 @@ static int __devinit emac_probe(struct platform_device *ofdev,  	if (err != 0)  		goto err_detach_tah; -	if (dev->tah_dev) -		ndev->features |= NETIF_F_IP_CSUM | NETIF_F_SG; +	if (dev->tah_dev) { +		ndev->hw_features = NETIF_F_IP_CSUM | NETIF_F_SG; +		ndev->features |= ndev->hw_features | NETIF_F_RXCSUM; +	}  	ndev->watchdog_timeo = 5 * HZ;  	if (emac_phy_supports_gige(dev->phy_mode)) {  		ndev->netdev_ops = &emac_gige_netdev_ops; @@ -2871,7 +2861,6 @@ static int __devinit emac_probe(struct platform_device *ofdev,  	SET_ETHTOOL_OPS(ndev, &emac_ethtool_ops);  	netif_carrier_off(ndev); -	netif_stop_queue(ndev);  	err = register_netdev(ndev);  	if (err) { @@ -2951,7 +2940,7 @@ static int __devexit emac_remove(struct platform_device *ofdev)  	unregister_netdev(dev->ndev); -	flush_scheduled_work(); +	cancel_work_sync(&dev->reset_work);  	if (emac_has_feature(dev, EMAC_FTR_HAS_TAH))  		tah_detach(dev->tah_dev, dev->tah_port); @@ -2995,7 +2984,7 @@ static struct of_device_id emac_match[] =  };  MODULE_DEVICE_TABLE(of, emac_match); -static struct of_platform_driver emac_driver = { +static struct platform_driver emac_driver = {  	.driver = {  		.name = "emac",  		.owner = THIS_MODULE, @@ -3070,7 +3059,7 @@ static int __init emac_init(void)  	rc = tah_init();  	if (rc)  		goto err_rgmii; -	rc = of_register_platform_driver(&emac_driver); +	rc = platform_driver_register(&emac_driver);  	if (rc)  		goto err_tah; @@ -3092,7 +3081,7 @@ static void __exit emac_exit(void)  {  	int i; -	of_unregister_platform_driver(&emac_driver); +	platform_driver_unregister(&emac_driver);  	tah_exit();  	rgmii_exit();  | 
