Conversion of e1000e probe() and remove() to devres. Depends on "[patch 1/4] Update net core to use devres."
Signed-off-by: Brandon Philips <[EMAIL PROTECTED]> --- drivers/net/e1000e/netdev.c | 70 ++++++++++---------------------------------- 1 file changed, 17 insertions(+), 53 deletions(-) Index: linux-netdev/drivers/net/e1000e/netdev.c =================================================================== --- linux-netdev.orig/drivers/net/e1000e/netdev.c +++ linux-netdev/drivers/net/e1000e/netdev.c @@ -2516,6 +2516,7 @@ void e1000e_reinit_locked(struct e1000_a static int __devinit e1000_sw_init(struct e1000_adapter *adapter) { struct e1000_hw *hw = &adapter->hw; + struct pci_dev *pdev = adapter->pdev; struct net_device *netdev = adapter->netdev; adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN; @@ -2523,11 +2524,13 @@ static int __devinit e1000_sw_init(struc hw->mac.max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN; hw->mac.min_frame_size = ETH_ZLEN + ETH_FCS_LEN; - adapter->tx_ring = kzalloc(sizeof(struct e1000_ring), GFP_KERNEL); + adapter->tx_ring = devm_kzalloc(&pdev->dev, + sizeof(struct e1000_ring), GFP_KERNEL); if (!adapter->tx_ring) goto err; - adapter->rx_ring = kzalloc(sizeof(struct e1000_ring), GFP_KERNEL); + adapter->rx_ring = devm_kzalloc(&pdev->dev, + sizeof(struct e1000_ring), GFP_KERNEL); if (!adapter->rx_ring) goto err; @@ -2544,8 +2547,6 @@ static int __devinit e1000_sw_init(struc err: ndev_err(netdev, "Unable to allocate memory for queues\n"); - kfree(adapter->rx_ring); - kfree(adapter->tx_ring); return -ENOMEM; } @@ -4016,15 +4017,13 @@ static int __devinit e1000_probe(struct struct e1000_adapter *adapter; struct e1000_hw *hw; const struct e1000_info *ei = e1000_info_tbl[ent->driver_data]; - unsigned long mmio_start, mmio_len; - unsigned long flash_start, flash_len; static int cards_found; int i, err, pci_using_dac; u16 eeprom_data = 0; u16 eeprom_apme_mask = E1000_EEPROM_APME; - err = pci_enable_device(pdev); + err = pcim_enable_device(pdev); if (err) return err; @@ -4042,21 +4041,20 @@ static int __devinit e1000_probe(struct if (err) { dev_err(&pdev->dev, "No usable DMA " "configuration, aborting\n"); - goto err_dma; + return err; } } } err = pci_request_regions(pdev, e1000e_driver_name); if (err) - goto err_pci_reg; + return err; pci_set_master(pdev); - err = -ENOMEM; - netdev = alloc_etherdev(sizeof(struct e1000_adapter)); + netdev = devm_alloc_etherdev(&pdev->dev, sizeof(struct e1000_adapter)); if (!netdev) - goto err_alloc_etherdev; + return -ENOMEM; SET_MODULE_OWNER(netdev); SET_NETDEV_DEV(netdev, &pdev->dev); @@ -4073,21 +4071,16 @@ static int __devinit e1000_probe(struct adapter->hw.mac.type = ei->mac; adapter->msg_enable = (1 << NETIF_MSG_DRV | NETIF_MSG_PROBE) - 1; - mmio_start = pci_resource_start(pdev, 0); - mmio_len = pci_resource_len(pdev, 0); - err = -EIO; - adapter->hw.hw_addr = ioremap(mmio_start, mmio_len); + adapter->hw.hw_addr = pcim_iomap(pdev, 0, 0); if (!adapter->hw.hw_addr) - goto err_ioremap; + return -EIO; if ((adapter->flags & FLAG_HAS_FLASH) && (pci_resource_flags(pdev, 1) & IORESOURCE_MEM)) { - flash_start = pci_resource_start(pdev, 1); - flash_len = pci_resource_len(pdev, 1); - adapter->hw.flash_address = ioremap(flash_start, flash_len); + adapter->hw.flash_address = pcim_iomap(pdev, 1, 0); if (!adapter->hw.flash_address) - goto err_flashmap; + return -EIO; } /* construct the net_device struct */ @@ -4112,17 +4105,15 @@ static int __devinit e1000_probe(struct #endif strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1); - netdev->mem_start = mmio_start; - netdev->mem_end = mmio_start + mmio_len; + netdev->mem_start = pci_resource_start(pdev, 0); + netdev->mem_end = netdev->mem_start + pci_resource_len(pdev, 0); adapter->bd_number = cards_found++; /* setup adapter struct */ err = e1000_sw_init(adapter); if (err) - goto err_sw_init; - - err = -EIO; + return err; memcpy(&hw->mac.ops, ei->mac_ops, sizeof(hw->mac.ops)); memcpy(&hw->nvm.ops, ei->nvm_ops, sizeof(hw->nvm.ops)); @@ -4290,21 +4281,6 @@ err_eeprom: if (!e1000_check_reset_block(&adapter->hw)) e1000_phy_hw_reset(&adapter->hw); - if (adapter->hw.flash_address) - iounmap(adapter->hw.flash_address); - -err_flashmap: - kfree(adapter->tx_ring); - kfree(adapter->rx_ring); -err_sw_init: - iounmap(adapter->hw.hw_addr); -err_ioremap: - free_netdev(netdev); -err_alloc_etherdev: - pci_release_regions(pdev); -err_pci_reg: -err_dma: - pci_disable_device(pdev); return err; } @@ -4340,18 +4316,6 @@ static void __devexit e1000_remove(struc if (!e1000_check_reset_block(&adapter->hw)) e1000_phy_hw_reset(&adapter->hw); - - kfree(adapter->tx_ring); - kfree(adapter->rx_ring); - - iounmap(adapter->hw.hw_addr); - if (adapter->hw.flash_address) - iounmap(adapter->hw.flash_address); - pci_release_regions(pdev); - - free_netdev(netdev); - - pci_disable_device(pdev); } /* PCI Error Recovery (ERS) */ - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html