Merge branch 'net-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6

+19 -18
+1 -1
arch/arm/mach-ixp4xx/ixp4xx_npe.c
··· 714 } 715 716 if (!found) 717 - return -ENOSYS; 718 return 0; 719 } 720
··· 714 } 715 716 if (!found) 717 + return -ENODEV; 718 return 0; 719 } 720
+16 -15
drivers/net/arm/ixp4xx_eth.c
··· 338 if (cpu_is_ixp43x()) { 339 /* IXP43x lacks NPE-B and uses NPE-C for MII PHY access */ 340 if (!(ixp4xx_read_feature_bits() & IXP4XX_FEATURE_NPEC_ETH)) 341 - return -ENOSYS; 342 mdio_regs = (struct eth_regs __iomem *)IXP4XX_EthC_BASE_VIRT; 343 } else { 344 /* All MII PHY accesses use NPE-B Ethernet registers */ 345 if (!(ixp4xx_read_feature_bits() & IXP4XX_FEATURE_NPEB_ETH0)) 346 - return -ENOSYS; 347 mdio_regs = (struct eth_regs __iomem *)IXP4XX_EthB_BASE_VIRT; 348 } 349 ··· 1174 regs_phys = IXP4XX_EthC_BASE_PHYS; 1175 break; 1176 default: 1177 - err = -ENOSYS; 1178 goto err_free; 1179 } 1180 ··· 1189 goto err_free; 1190 } 1191 1192 - if (register_netdev(dev)) { 1193 - err = -EIO; 1194 - goto err_npe_rel; 1195 - } 1196 - 1197 port->mem_res = request_mem_region(regs_phys, REGS_SIZE, dev->name); 1198 if (!port->mem_res) { 1199 err = -EBUSY; 1200 - goto err_unreg; 1201 } 1202 1203 port->plat = plat; ··· 1210 snprintf(phy_id, BUS_ID_SIZE, PHY_ID_FMT, "0", plat->phy); 1211 port->phydev = phy_connect(dev, phy_id, &ixp4xx_adjust_link, 0, 1212 PHY_INTERFACE_MODE_MII); 1213 - if (IS_ERR(port->phydev)) { 1214 - printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name); 1215 - return PTR_ERR(port->phydev); 1216 - } 1217 1218 port->phydev->irq = PHY_POLL; 1219 1220 printk(KERN_INFO "%s: MII PHY %i on %s\n", dev->name, plat->phy, 1221 npe_name(port->npe)); 1222 1223 return 0; 1224 1225 - err_unreg: 1226 - unregister_netdev(dev); 1227 err_npe_rel: 1228 npe_release(port->npe); 1229 err_free: ··· 1242 struct port *port = netdev_priv(dev); 1243 1244 unregister_netdev(dev); 1245 npe_port_tab[NPE_ID(port->id)] = NULL; 1246 platform_set_drvdata(pdev, NULL); 1247 npe_release(port->npe);
··· 338 if (cpu_is_ixp43x()) { 339 /* IXP43x lacks NPE-B and uses NPE-C for MII PHY access */ 340 if (!(ixp4xx_read_feature_bits() & IXP4XX_FEATURE_NPEC_ETH)) 341 + return -ENODEV; 342 mdio_regs = (struct eth_regs __iomem *)IXP4XX_EthC_BASE_VIRT; 343 } else { 344 /* All MII PHY accesses use NPE-B Ethernet registers */ 345 if (!(ixp4xx_read_feature_bits() & IXP4XX_FEATURE_NPEB_ETH0)) 346 + return -ENODEV; 347 mdio_regs = (struct eth_regs __iomem *)IXP4XX_EthB_BASE_VIRT; 348 } 349 ··· 1174 regs_phys = IXP4XX_EthC_BASE_PHYS; 1175 break; 1176 default: 1177 + err = -ENODEV; 1178 goto err_free; 1179 } 1180 ··· 1189 goto err_free; 1190 } 1191 1192 port->mem_res = request_mem_region(regs_phys, REGS_SIZE, dev->name); 1193 if (!port->mem_res) { 1194 err = -EBUSY; 1195 + goto err_npe_rel; 1196 } 1197 1198 port->plat = plat; ··· 1215 snprintf(phy_id, BUS_ID_SIZE, PHY_ID_FMT, "0", plat->phy); 1216 port->phydev = phy_connect(dev, phy_id, &ixp4xx_adjust_link, 0, 1217 PHY_INTERFACE_MODE_MII); 1218 + if ((err = IS_ERR(port->phydev))) 1219 + goto err_free_mem; 1220 1221 port->phydev->irq = PHY_POLL; 1222 + 1223 + if ((err = register_netdev(dev))) 1224 + goto err_phy_dis; 1225 1226 printk(KERN_INFO "%s: MII PHY %i on %s\n", dev->name, plat->phy, 1227 npe_name(port->npe)); 1228 1229 return 0; 1230 1231 + err_phy_dis: 1232 + phy_disconnect(port->phydev); 1233 + err_free_mem: 1234 + npe_port_tab[NPE_ID(port->id)] = NULL; 1235 + platform_set_drvdata(pdev, NULL); 1236 + release_resource(port->mem_res); 1237 err_npe_rel: 1238 npe_release(port->npe); 1239 err_free: ··· 1242 struct port *port = netdev_priv(dev); 1243 1244 unregister_netdev(dev); 1245 + phy_disconnect(port->phydev); 1246 npe_port_tab[NPE_ID(port->id)] = NULL; 1247 platform_set_drvdata(pdev, NULL); 1248 npe_release(port->npe);
+2 -2
drivers/net/wan/ixp4xx_hss.c
··· 1249 return -ENOMEM; 1250 1251 if ((port->npe = npe_request(0)) == NULL) { 1252 - err = -ENOSYS; 1253 goto err_free; 1254 } 1255 ··· 1311 if ((ixp4xx_read_feature_bits() & 1312 (IXP4XX_FEATURE_HDLC | IXP4XX_FEATURE_HSS)) != 1313 (IXP4XX_FEATURE_HDLC | IXP4XX_FEATURE_HSS)) 1314 - return -ENOSYS; 1315 1316 spin_lock_init(&npe_lock); 1317
··· 1249 return -ENOMEM; 1250 1251 if ((port->npe = npe_request(0)) == NULL) { 1252 + err = -ENODEV; 1253 goto err_free; 1254 } 1255 ··· 1311 if ((ixp4xx_read_feature_bits() & 1312 (IXP4XX_FEATURE_HDLC | IXP4XX_FEATURE_HSS)) != 1313 (IXP4XX_FEATURE_HDLC | IXP4XX_FEATURE_HSS)) 1314 + return -ENODEV; 1315 1316 spin_lock_init(&npe_lock); 1317