[mcs814x] nuport-mac: rework PHY interrupt configuration to avoid races
authorFlorian Fainelli <florian@openwrt.org>
Wed, 8 Aug 2012 21:51:18 +0000 (21:51 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Wed, 8 Aug 2012 21:51:18 +0000 (21:51 +0000)
SVN-Revision: 33070

target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c

index 8cd3d0e6b6ea42edc773f998452d454aa482eb89..833e6fa018186bd38d21f891e6130bf3202f8154 100644 (file)
@@ -765,7 +765,12 @@ static int nuport_mac_open(struct net_device *dev)
                goto out_emac_clk;
        }
 
-       phy_start(priv->phydev);
+       ret = request_irq(priv->tx_irq, &nuport_mac_tx_interrupt,
+                               0, dev->name, dev);
+       if (ret) {
+               netdev_err(dev, "unable to request rx interrupt\n");
+               goto out_link_irq;
+       }
 
        /* Enable link interrupt monitoring for our PHY address */
        reg = LINK_INT_EN | (priv->phydev->addr << LINK_PHY_ADDR_SHIFT);
@@ -779,12 +784,7 @@ static int nuport_mac_open(struct net_device *dev)
        nuport_mac_writel(LINK_POLL_MASK, LINK_INT_POLL_TIME);
        spin_unlock_irqrestore(&priv->lock, flags);
 
-       ret = request_irq(priv->tx_irq, &nuport_mac_tx_interrupt,
-                               0, dev->name, dev);
-       if (ret) {
-               netdev_err(dev, "unable to request rx interrupt\n");
-               goto out_link_irq;
-       }
+       phy_start(priv->phydev);
 
        napi_enable(&priv->napi);