From 41d207eca423a90aaad16acd43e92c2fb3ff905a Mon Sep 17 00:00:00 2001 From: Anton Vorontsov Date: Thu, 18 Dec 2008 08:23:29 +0000 Subject: [PATCH] --- yaml --- r: 122783 b: refs/heads/master c: 67c2fb8ff0eda3cee95954a1dd245c3ce1a10486 h: refs/heads/master i: 122781: 59662a096cd5043db0fdc9540d96b1fd8f44345b 122779: eee28f3a090b3922d024d9d59108f3f71b25f1f9 122775: 627b0a00c5e8fc64562d43209996be069286da50 122767: 6c10917b3c5b62f8be867b93db3e512e87d7ed82 122751: 6daa3d51d7075525f05f5211545e144444ae1142 v: v3 --- [refs] | 2 +- trunk/drivers/net/ucc_geth.c | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 0fc5681b09f7..5f71557d2de8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1762a29ae5ebdd974eb2ba0c36b56ab6f7a9c16d +refs/heads/master: 67c2fb8ff0eda3cee95954a1dd245c3ce1a10486 diff --git a/trunk/drivers/net/ucc_geth.c b/trunk/drivers/net/ucc_geth.c index 6ebefe951b95..3d1966c34d29 100644 --- a/trunk/drivers/net/ucc_geth.c +++ b/trunk/drivers/net/ucc_geth.c @@ -2300,8 +2300,6 @@ static void ucc_geth_stop(struct ucc_geth_private *ugeth) tempval &= ~(MACCFG1_ENABLE_RX | MACCFG1_ENABLE_TX); out_be32(&ug_regs->maccfg1, tempval); - free_irq(ugeth->ug_info->uf_info.irq, ugeth->dev); - ucc_geth_memclean(ugeth); } @@ -3759,21 +3757,20 @@ static int ucc_geth_open(struct net_device *dev) phy_start(ugeth->phydev); - err = - request_irq(ugeth->ug_info->uf_info.irq, ucc_geth_irq_handler, 0, - "UCC Geth", dev); + err = ugeth_enable(ugeth, COMM_DIR_RX_AND_TX); if (err) { if (netif_msg_ifup(ugeth)) - ugeth_err("%s: Cannot get IRQ for net device, aborting.", - dev->name); + ugeth_err("%s: Cannot enable net device, aborting.", dev->name); ucc_geth_stop(ugeth); goto out_err; } - err = ugeth_enable(ugeth, COMM_DIR_RX_AND_TX); + err = request_irq(ugeth->ug_info->uf_info.irq, ucc_geth_irq_handler, + 0, "UCC Geth", dev); if (err) { if (netif_msg_ifup(ugeth)) - ugeth_err("%s: Cannot enable net device, aborting.", dev->name); + ugeth_err("%s: Cannot get IRQ for net device, aborting.", + dev->name); ucc_geth_stop(ugeth); goto out_err; } @@ -3799,6 +3796,8 @@ static int ucc_geth_close(struct net_device *dev) ucc_geth_stop(ugeth); + free_irq(ugeth->ug_info->uf_info.irq, ugeth->dev); + phy_disconnect(ugeth->phydev); ugeth->phydev = NULL;