From cb041810b0e13456cb0c6f1d142831064e41718e Mon Sep 17 00:00:00 2001 From: Joakim Tjernlund Date: Fri, 12 Nov 2010 03:55:09 +0000 Subject: [PATCH] --- yaml --- r: 222038 b: refs/heads/master c: 75e6047431872dadd0b13503b374e48ccd71a507 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/ucc_geth.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index f8b1a3f97d22..f1db2488debb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2040bd57b5f0c52dc4503e0e960b1dcafaf30a8b +refs/heads/master: 75e6047431872dadd0b13503b374e48ccd71a507 diff --git a/trunk/drivers/net/ucc_geth.c b/trunk/drivers/net/ucc_geth.c index cf6653f71d23..acbdab3d66ca 100644 --- a/trunk/drivers/net/ucc_geth.c +++ b/trunk/drivers/net/ucc_geth.c @@ -2050,12 +2050,16 @@ static void ucc_geth_stop(struct ucc_geth_private *ugeth) ugeth_vdbg("%s: IN", __func__); + /* + * Tell the kernel the link is down. + * Must be done before disabling the controller + * or deadlock may happen. + */ + phy_stop(phydev); + /* Disable the controller */ ugeth_disable(ugeth, COMM_DIR_RX_AND_TX); - /* Tell the kernel the link is down */ - phy_stop(phydev); - /* Mask all interrupts */ out_be32(ugeth->uccf->p_uccm, 0x00000000);