Jesper Nilsson wrote:
> static int > e100_probe_transceiver(struct net_device* dev) > { > +#if !defined(CONFIG_ETRAX_NO_PHY) > unsigned int phyid_high; > unsigned int phyid_low; > unsigned int oui; > struct transceiver_ops* ops = NULL; > + struct net_local *np = netdev_priv(dev); > + > + spin_lock(&np->transceiver_lock); > > /* Probe MDIO physical address */ > - for (mdio_phy_addr = 0; mdio_phy_addr <= 31; mdio_phy_addr++) { > - if (e100_get_mdio_reg(dev, mdio_phy_addr, MII_BMSR) != 0xffff) > + for (np->mii_if.phy_id = 0; np->mii_if.phy_id <= 31; > + np->mii_if.phy_id++) { > + if (e100_get_mdio_reg(dev, > + np->mii_if.phy_id, MII_BMSR) != 0xffff) > break; > } > - if (mdio_phy_addr == 32) > + if (np->mii_if.phy_id == 32) > return -ENODEV; You need to unlock before this return. > > /* Get manufacturer */ > - phyid_high = e100_get_mdio_reg(dev, mdio_phy_addr, MII_PHYSID1); > - phyid_low = e100_get_mdio_reg(dev, mdio_phy_addr, MII_PHYSID2); > + phyid_high = e100_get_mdio_reg(dev, np->mii_if.phy_id, MII_PHYSID1); > + phyid_low = e100_get_mdio_reg(dev, np->mii_if.phy_id, MII_PHYSID2); > oui = (phyid_high << 6) | (phyid_low >> 10); > > for (ops = &transceivers[0]; ops->oui; ops++) { > @@ -998,6 +912,8 @@ > } > transceiver = ops; > > + spin_unlock(&np->transceiver_lock); > +#endif > return 0; > } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/