struct ltq_etop_priv {
        struct net_device *netdev;
+       struct platform_device *pdev;
        struct ltq_eth_data *pldata;
        struct resource *res;
 
        priv->mii_bus->read = ltq_etop_mdio_rd;
        priv->mii_bus->write = ltq_etop_mdio_wr;
        priv->mii_bus->name = "ltq_mii";
-       snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%x", 0);
+       snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
+               priv->pdev->name, priv->pdev->id);
        priv->mii_bus->irq = kmalloc(sizeof(int) * PHY_MAX_ADDR, GFP_KERNEL);
        if (!priv->mii_bus->irq) {
                err = -ENOMEM;
        dev->ethtool_ops = <q_etop_ethtool_ops;
        priv = netdev_priv(dev);
        priv->res = res;
+       priv->pdev = pdev;
        priv->pldata = dev_get_platdata(&pdev->dev);
        priv->netdev = dev;
        spin_lock_init(&priv->lock);