| .. | .. |
|---|
| 150 | 150 | |
|---|
| 151 | 151 | |
|---|
| 152 | 152 | #define DRV_NAME "e100" |
|---|
| 153 | | -#define DRV_EXT "-NAPI" |
|---|
| 154 | | -#define DRV_VERSION "3.5.24-k2"DRV_EXT |
|---|
| 155 | 153 | #define DRV_DESCRIPTION "Intel(R) PRO/100 Network Driver" |
|---|
| 156 | 154 | #define DRV_COPYRIGHT "Copyright(c) 1999-2006 Intel Corporation" |
|---|
| 157 | 155 | |
|---|
| .. | .. |
|---|
| 164 | 162 | |
|---|
| 165 | 163 | MODULE_DESCRIPTION(DRV_DESCRIPTION); |
|---|
| 166 | 164 | MODULE_AUTHOR(DRV_COPYRIGHT); |
|---|
| 167 | | -MODULE_LICENSE("GPL"); |
|---|
| 168 | | -MODULE_VERSION(DRV_VERSION); |
|---|
| 165 | +MODULE_LICENSE("GPL v2"); |
|---|
| 169 | 166 | MODULE_FIRMWARE(FIRMWARE_D101M); |
|---|
| 170 | 167 | MODULE_FIRMWARE(FIRMWARE_D101S); |
|---|
| 171 | 168 | MODULE_FIRMWARE(FIRMWARE_D102E); |
|---|
| .. | .. |
|---|
| 387 | 384 | cb_ok = 0x2000, |
|---|
| 388 | 385 | }; |
|---|
| 389 | 386 | |
|---|
| 390 | | -/** |
|---|
| 387 | +/* |
|---|
| 391 | 388 | * cb_command - Command Block flags |
|---|
| 392 | 389 | * @cb_tx_nc: 0: controller does CRC (normal), 1: CRC from skb memory |
|---|
| 393 | 390 | */ |
|---|
| .. | .. |
|---|
| 1534 | 1531 | e100_hw_reset(nic); |
|---|
| 1535 | 1532 | |
|---|
| 1536 | 1533 | netif_err(nic, hw, nic->netdev, "e100_hw_init\n"); |
|---|
| 1537 | | - if (!in_interrupt() && (err = e100_self_test(nic))) |
|---|
| 1534 | + if ((err = e100_self_test(nic))) |
|---|
| 1538 | 1535 | return err; |
|---|
| 1539 | 1536 | |
|---|
| 1540 | 1537 | if ((err = e100_phy_init(nic))) |
|---|
| .. | .. |
|---|
| 1742 | 1739 | dma_addr_t dma_addr; |
|---|
| 1743 | 1740 | cb->command = nic->tx_command; |
|---|
| 1744 | 1741 | |
|---|
| 1745 | | - dma_addr = pci_map_single(nic->pdev, |
|---|
| 1746 | | - skb->data, skb->len, PCI_DMA_TODEVICE); |
|---|
| 1742 | + dma_addr = dma_map_single(&nic->pdev->dev, skb->data, skb->len, |
|---|
| 1743 | + DMA_TO_DEVICE); |
|---|
| 1747 | 1744 | /* If we can't map the skb, have the upper layer try later */ |
|---|
| 1748 | | - if (pci_dma_mapping_error(nic->pdev, dma_addr)) { |
|---|
| 1749 | | - dev_kfree_skb_any(skb); |
|---|
| 1750 | | - skb = NULL; |
|---|
| 1745 | + if (dma_mapping_error(&nic->pdev->dev, dma_addr)) |
|---|
| 1751 | 1746 | return -ENOMEM; |
|---|
| 1752 | | - } |
|---|
| 1753 | 1747 | |
|---|
| 1754 | 1748 | /* |
|---|
| 1755 | 1749 | * Use the last 4 bytes of the SKB payload packet as the CRC, used for |
|---|
| .. | .. |
|---|
| 1831 | 1825 | dev->stats.tx_packets++; |
|---|
| 1832 | 1826 | dev->stats.tx_bytes += cb->skb->len; |
|---|
| 1833 | 1827 | |
|---|
| 1834 | | - pci_unmap_single(nic->pdev, |
|---|
| 1835 | | - le32_to_cpu(cb->u.tcb.tbd.buf_addr), |
|---|
| 1836 | | - le16_to_cpu(cb->u.tcb.tbd.size), |
|---|
| 1837 | | - PCI_DMA_TODEVICE); |
|---|
| 1828 | + dma_unmap_single(&nic->pdev->dev, |
|---|
| 1829 | + le32_to_cpu(cb->u.tcb.tbd.buf_addr), |
|---|
| 1830 | + le16_to_cpu(cb->u.tcb.tbd.size), |
|---|
| 1831 | + DMA_TO_DEVICE); |
|---|
| 1838 | 1832 | dev_kfree_skb_any(cb->skb); |
|---|
| 1839 | 1833 | cb->skb = NULL; |
|---|
| 1840 | 1834 | tx_cleaned = 1; |
|---|
| .. | .. |
|---|
| 1858 | 1852 | while (nic->cbs_avail != nic->params.cbs.count) { |
|---|
| 1859 | 1853 | struct cb *cb = nic->cb_to_clean; |
|---|
| 1860 | 1854 | if (cb->skb) { |
|---|
| 1861 | | - pci_unmap_single(nic->pdev, |
|---|
| 1862 | | - le32_to_cpu(cb->u.tcb.tbd.buf_addr), |
|---|
| 1863 | | - le16_to_cpu(cb->u.tcb.tbd.size), |
|---|
| 1864 | | - PCI_DMA_TODEVICE); |
|---|
| 1855 | + dma_unmap_single(&nic->pdev->dev, |
|---|
| 1856 | + le32_to_cpu(cb->u.tcb.tbd.buf_addr), |
|---|
| 1857 | + le16_to_cpu(cb->u.tcb.tbd.size), |
|---|
| 1858 | + DMA_TO_DEVICE); |
|---|
| 1865 | 1859 | dev_kfree_skb(cb->skb); |
|---|
| 1866 | 1860 | } |
|---|
| 1867 | 1861 | nic->cb_to_clean = nic->cb_to_clean->next; |
|---|
| .. | .. |
|---|
| 1928 | 1922 | |
|---|
| 1929 | 1923 | /* Init, and map the RFD. */ |
|---|
| 1930 | 1924 | skb_copy_to_linear_data(rx->skb, &nic->blank_rfd, sizeof(struct rfd)); |
|---|
| 1931 | | - rx->dma_addr = pci_map_single(nic->pdev, rx->skb->data, |
|---|
| 1932 | | - RFD_BUF_LEN, PCI_DMA_BIDIRECTIONAL); |
|---|
| 1925 | + rx->dma_addr = dma_map_single(&nic->pdev->dev, rx->skb->data, |
|---|
| 1926 | + RFD_BUF_LEN, DMA_BIDIRECTIONAL); |
|---|
| 1933 | 1927 | |
|---|
| 1934 | | - if (pci_dma_mapping_error(nic->pdev, rx->dma_addr)) { |
|---|
| 1928 | + if (dma_mapping_error(&nic->pdev->dev, rx->dma_addr)) { |
|---|
| 1935 | 1929 | dev_kfree_skb_any(rx->skb); |
|---|
| 1936 | 1930 | rx->skb = NULL; |
|---|
| 1937 | 1931 | rx->dma_addr = 0; |
|---|
| .. | .. |
|---|
| 1944 | 1938 | if (rx->prev->skb) { |
|---|
| 1945 | 1939 | struct rfd *prev_rfd = (struct rfd *)rx->prev->skb->data; |
|---|
| 1946 | 1940 | put_unaligned_le32(rx->dma_addr, &prev_rfd->link); |
|---|
| 1947 | | - pci_dma_sync_single_for_device(nic->pdev, rx->prev->dma_addr, |
|---|
| 1948 | | - sizeof(struct rfd), PCI_DMA_BIDIRECTIONAL); |
|---|
| 1941 | + dma_sync_single_for_device(&nic->pdev->dev, |
|---|
| 1942 | + rx->prev->dma_addr, |
|---|
| 1943 | + sizeof(struct rfd), |
|---|
| 1944 | + DMA_BIDIRECTIONAL); |
|---|
| 1949 | 1945 | } |
|---|
| 1950 | 1946 | |
|---|
| 1951 | 1947 | return 0; |
|---|
| .. | .. |
|---|
| 1964 | 1960 | return -EAGAIN; |
|---|
| 1965 | 1961 | |
|---|
| 1966 | 1962 | /* Need to sync before taking a peek at cb_complete bit */ |
|---|
| 1967 | | - pci_dma_sync_single_for_cpu(nic->pdev, rx->dma_addr, |
|---|
| 1968 | | - sizeof(struct rfd), PCI_DMA_BIDIRECTIONAL); |
|---|
| 1963 | + dma_sync_single_for_cpu(&nic->pdev->dev, rx->dma_addr, |
|---|
| 1964 | + sizeof(struct rfd), DMA_BIDIRECTIONAL); |
|---|
| 1969 | 1965 | rfd_status = le16_to_cpu(rfd->status); |
|---|
| 1970 | 1966 | |
|---|
| 1971 | 1967 | netif_printk(nic, rx_status, KERN_DEBUG, nic->netdev, |
|---|
| .. | .. |
|---|
| 1984 | 1980 | |
|---|
| 1985 | 1981 | if (ioread8(&nic->csr->scb.status) & rus_no_res) |
|---|
| 1986 | 1982 | nic->ru_running = RU_SUSPENDED; |
|---|
| 1987 | | - pci_dma_sync_single_for_device(nic->pdev, rx->dma_addr, |
|---|
| 1988 | | - sizeof(struct rfd), |
|---|
| 1989 | | - PCI_DMA_FROMDEVICE); |
|---|
| 1983 | + dma_sync_single_for_device(&nic->pdev->dev, rx->dma_addr, |
|---|
| 1984 | + sizeof(struct rfd), |
|---|
| 1985 | + DMA_FROM_DEVICE); |
|---|
| 1990 | 1986 | return -ENODATA; |
|---|
| 1991 | 1987 | } |
|---|
| 1992 | 1988 | |
|---|
| .. | .. |
|---|
| 1998 | 1994 | actual_size = RFD_BUF_LEN - sizeof(struct rfd); |
|---|
| 1999 | 1995 | |
|---|
| 2000 | 1996 | /* Get data */ |
|---|
| 2001 | | - pci_unmap_single(nic->pdev, rx->dma_addr, |
|---|
| 2002 | | - RFD_BUF_LEN, PCI_DMA_BIDIRECTIONAL); |
|---|
| 1997 | + dma_unmap_single(&nic->pdev->dev, rx->dma_addr, RFD_BUF_LEN, |
|---|
| 1998 | + DMA_BIDIRECTIONAL); |
|---|
| 2003 | 1999 | |
|---|
| 2004 | 2000 | /* If this buffer has the el bit, but we think the receiver |
|---|
| 2005 | 2001 | * is still running, check to see if it really stopped while |
|---|
| .. | .. |
|---|
| 2100 | 2096 | (struct rfd *)new_before_last_rx->skb->data; |
|---|
| 2101 | 2097 | new_before_last_rfd->size = 0; |
|---|
| 2102 | 2098 | new_before_last_rfd->command |= cpu_to_le16(cb_el); |
|---|
| 2103 | | - pci_dma_sync_single_for_device(nic->pdev, |
|---|
| 2104 | | - new_before_last_rx->dma_addr, sizeof(struct rfd), |
|---|
| 2105 | | - PCI_DMA_BIDIRECTIONAL); |
|---|
| 2099 | + dma_sync_single_for_device(&nic->pdev->dev, |
|---|
| 2100 | + new_before_last_rx->dma_addr, |
|---|
| 2101 | + sizeof(struct rfd), |
|---|
| 2102 | + DMA_BIDIRECTIONAL); |
|---|
| 2106 | 2103 | |
|---|
| 2107 | 2104 | /* Now that we have a new stopping point, we can clear the old |
|---|
| 2108 | 2105 | * stopping point. We must sync twice to get the proper |
|---|
| 2109 | 2106 | * ordering on the hardware side of things. */ |
|---|
| 2110 | 2107 | old_before_last_rfd->command &= ~cpu_to_le16(cb_el); |
|---|
| 2111 | | - pci_dma_sync_single_for_device(nic->pdev, |
|---|
| 2112 | | - old_before_last_rx->dma_addr, sizeof(struct rfd), |
|---|
| 2113 | | - PCI_DMA_BIDIRECTIONAL); |
|---|
| 2108 | + dma_sync_single_for_device(&nic->pdev->dev, |
|---|
| 2109 | + old_before_last_rx->dma_addr, |
|---|
| 2110 | + sizeof(struct rfd), |
|---|
| 2111 | + DMA_BIDIRECTIONAL); |
|---|
| 2114 | 2112 | old_before_last_rfd->size = cpu_to_le16(VLAN_ETH_FRAME_LEN |
|---|
| 2115 | 2113 | + ETH_FCS_LEN); |
|---|
| 2116 | | - pci_dma_sync_single_for_device(nic->pdev, |
|---|
| 2117 | | - old_before_last_rx->dma_addr, sizeof(struct rfd), |
|---|
| 2118 | | - PCI_DMA_BIDIRECTIONAL); |
|---|
| 2114 | + dma_sync_single_for_device(&nic->pdev->dev, |
|---|
| 2115 | + old_before_last_rx->dma_addr, |
|---|
| 2116 | + sizeof(struct rfd), |
|---|
| 2117 | + DMA_BIDIRECTIONAL); |
|---|
| 2119 | 2118 | } |
|---|
| 2120 | 2119 | |
|---|
| 2121 | 2120 | if (restart_required) { |
|---|
| .. | .. |
|---|
| 2137 | 2136 | if (nic->rxs) { |
|---|
| 2138 | 2137 | for (rx = nic->rxs, i = 0; i < count; rx++, i++) { |
|---|
| 2139 | 2138 | if (rx->skb) { |
|---|
| 2140 | | - pci_unmap_single(nic->pdev, rx->dma_addr, |
|---|
| 2141 | | - RFD_BUF_LEN, PCI_DMA_BIDIRECTIONAL); |
|---|
| 2139 | + dma_unmap_single(&nic->pdev->dev, |
|---|
| 2140 | + rx->dma_addr, RFD_BUF_LEN, |
|---|
| 2141 | + DMA_BIDIRECTIONAL); |
|---|
| 2142 | 2142 | dev_kfree_skb(rx->skb); |
|---|
| 2143 | 2143 | } |
|---|
| 2144 | 2144 | } |
|---|
| .. | .. |
|---|
| 2158 | 2158 | nic->rx_to_use = nic->rx_to_clean = NULL; |
|---|
| 2159 | 2159 | nic->ru_running = RU_UNINITIALIZED; |
|---|
| 2160 | 2160 | |
|---|
| 2161 | | - if (!(nic->rxs = kcalloc(count, sizeof(struct rx), GFP_ATOMIC))) |
|---|
| 2161 | + if (!(nic->rxs = kcalloc(count, sizeof(struct rx), GFP_KERNEL))) |
|---|
| 2162 | 2162 | return -ENOMEM; |
|---|
| 2163 | 2163 | |
|---|
| 2164 | 2164 | for (rx = nic->rxs, i = 0; i < count; rx++, i++) { |
|---|
| .. | .. |
|---|
| 2180 | 2180 | before_last = (struct rfd *)rx->skb->data; |
|---|
| 2181 | 2181 | before_last->command |= cpu_to_le16(cb_el); |
|---|
| 2182 | 2182 | before_last->size = 0; |
|---|
| 2183 | | - pci_dma_sync_single_for_device(nic->pdev, rx->dma_addr, |
|---|
| 2184 | | - sizeof(struct rfd), PCI_DMA_BIDIRECTIONAL); |
|---|
| 2183 | + dma_sync_single_for_device(&nic->pdev->dev, rx->dma_addr, |
|---|
| 2184 | + sizeof(struct rfd), DMA_BIDIRECTIONAL); |
|---|
| 2185 | 2185 | |
|---|
| 2186 | 2186 | nic->rx_to_use = nic->rx_to_clean = nic->rxs; |
|---|
| 2187 | 2187 | nic->ru_running = RU_SUSPENDED; |
|---|
| .. | .. |
|---|
| 2225 | 2225 | e100_rx_clean(nic, &work_done, budget); |
|---|
| 2226 | 2226 | e100_tx_clean(nic); |
|---|
| 2227 | 2227 | |
|---|
| 2228 | | - /* If budget not fully consumed, exit the polling mode */ |
|---|
| 2229 | | - if (work_done < budget) { |
|---|
| 2230 | | - napi_complete_done(napi, work_done); |
|---|
| 2228 | + /* If budget fully consumed, continue polling */ |
|---|
| 2229 | + if (work_done == budget) |
|---|
| 2230 | + return budget; |
|---|
| 2231 | + |
|---|
| 2232 | + /* only re-enable interrupt if stack agrees polling is really done */ |
|---|
| 2233 | + if (likely(napi_complete_done(napi, work_done))) |
|---|
| 2231 | 2234 | e100_enable_irq(nic); |
|---|
| 2232 | | - } |
|---|
| 2233 | 2235 | |
|---|
| 2234 | 2236 | return work_done; |
|---|
| 2235 | 2237 | } |
|---|
| .. | .. |
|---|
| 2314 | 2316 | e100_rx_clean_list(nic); |
|---|
| 2315 | 2317 | } |
|---|
| 2316 | 2318 | |
|---|
| 2317 | | -static void e100_tx_timeout(struct net_device *netdev) |
|---|
| 2319 | +static void e100_tx_timeout(struct net_device *netdev, unsigned int txqueue) |
|---|
| 2318 | 2320 | { |
|---|
| 2319 | 2321 | struct nic *nic = netdev_priv(netdev); |
|---|
| 2320 | 2322 | |
|---|
| .. | .. |
|---|
| 2378 | 2380 | |
|---|
| 2379 | 2381 | msleep(10); |
|---|
| 2380 | 2382 | |
|---|
| 2381 | | - pci_dma_sync_single_for_cpu(nic->pdev, nic->rx_to_clean->dma_addr, |
|---|
| 2382 | | - RFD_BUF_LEN, PCI_DMA_BIDIRECTIONAL); |
|---|
| 2383 | + dma_sync_single_for_cpu(&nic->pdev->dev, nic->rx_to_clean->dma_addr, |
|---|
| 2384 | + RFD_BUF_LEN, DMA_BIDIRECTIONAL); |
|---|
| 2383 | 2385 | |
|---|
| 2384 | 2386 | if (memcmp(nic->rx_to_clean->skb->data + sizeof(struct rfd), |
|---|
| 2385 | 2387 | skb->data, ETH_DATA_LEN)) |
|---|
| .. | .. |
|---|
| 2428 | 2430 | { |
|---|
| 2429 | 2431 | struct nic *nic = netdev_priv(netdev); |
|---|
| 2430 | 2432 | strlcpy(info->driver, DRV_NAME, sizeof(info->driver)); |
|---|
| 2431 | | - strlcpy(info->version, DRV_VERSION, sizeof(info->version)); |
|---|
| 2432 | 2433 | strlcpy(info->bus_info, pci_name(nic->pdev), |
|---|
| 2433 | 2434 | sizeof(info->bus_info)); |
|---|
| 2434 | 2435 | } |
|---|
| .. | .. |
|---|
| 2603 | 2604 | { |
|---|
| 2604 | 2605 | struct ethtool_cmd cmd; |
|---|
| 2605 | 2606 | struct nic *nic = netdev_priv(netdev); |
|---|
| 2606 | | - int i, err; |
|---|
| 2607 | + int i; |
|---|
| 2607 | 2608 | |
|---|
| 2608 | 2609 | memset(data, 0, E100_TEST_LEN * sizeof(u64)); |
|---|
| 2609 | 2610 | data[0] = !mii_link_ok(&nic->mii); |
|---|
| .. | .. |
|---|
| 2611 | 2612 | if (test->flags & ETH_TEST_FL_OFFLINE) { |
|---|
| 2612 | 2613 | |
|---|
| 2613 | 2614 | /* save speed, duplex & autoneg settings */ |
|---|
| 2614 | | - err = mii_ethtool_gset(&nic->mii, &cmd); |
|---|
| 2615 | + mii_ethtool_gset(&nic->mii, &cmd); |
|---|
| 2615 | 2616 | |
|---|
| 2616 | 2617 | if (netif_running(netdev)) |
|---|
| 2617 | 2618 | e100_down(nic); |
|---|
| .. | .. |
|---|
| 2620 | 2621 | data[4] = e100_loopback_test(nic, lb_phy); |
|---|
| 2621 | 2622 | |
|---|
| 2622 | 2623 | /* restore speed, duplex & autoneg settings */ |
|---|
| 2623 | | - err = mii_ethtool_sset(&nic->mii, &cmd); |
|---|
| 2624 | + mii_ethtool_sset(&nic->mii, &cmd); |
|---|
| 2624 | 2625 | |
|---|
| 2625 | 2626 | if (netif_running(netdev)) |
|---|
| 2626 | 2627 | e100_up(nic); |
|---|
| .. | .. |
|---|
| 2761 | 2762 | |
|---|
| 2762 | 2763 | static int e100_alloc(struct nic *nic) |
|---|
| 2763 | 2764 | { |
|---|
| 2764 | | - nic->mem = pci_alloc_consistent(nic->pdev, sizeof(struct mem), |
|---|
| 2765 | | - &nic->dma_addr); |
|---|
| 2765 | + nic->mem = dma_alloc_coherent(&nic->pdev->dev, sizeof(struct mem), |
|---|
| 2766 | + &nic->dma_addr, GFP_KERNEL); |
|---|
| 2766 | 2767 | return nic->mem ? 0 : -ENOMEM; |
|---|
| 2767 | 2768 | } |
|---|
| 2768 | 2769 | |
|---|
| 2769 | 2770 | static void e100_free(struct nic *nic) |
|---|
| 2770 | 2771 | { |
|---|
| 2771 | 2772 | if (nic->mem) { |
|---|
| 2772 | | - pci_free_consistent(nic->pdev, sizeof(struct mem), |
|---|
| 2773 | | - nic->mem, nic->dma_addr); |
|---|
| 2773 | + dma_free_coherent(&nic->pdev->dev, sizeof(struct mem), |
|---|
| 2774 | + nic->mem, nic->dma_addr); |
|---|
| 2774 | 2775 | nic->mem = NULL; |
|---|
| 2775 | 2776 | } |
|---|
| 2776 | 2777 | } |
|---|
| .. | .. |
|---|
| 2803 | 2804 | |
|---|
| 2804 | 2805 | netdev->features = features; |
|---|
| 2805 | 2806 | e100_exec_cb(nic, NULL, e100_configure); |
|---|
| 2806 | | - return 0; |
|---|
| 2807 | + return 1; |
|---|
| 2807 | 2808 | } |
|---|
| 2808 | 2809 | |
|---|
| 2809 | 2810 | static const struct net_device_ops e100_netdev_ops = { |
|---|
| .. | .. |
|---|
| 2863 | 2864 | goto err_out_disable_pdev; |
|---|
| 2864 | 2865 | } |
|---|
| 2865 | 2866 | |
|---|
| 2866 | | - if ((err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)))) { |
|---|
| 2867 | + if ((err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)))) { |
|---|
| 2867 | 2868 | netif_err(nic, probe, nic->netdev, "No usable DMA configuration, aborting\n"); |
|---|
| 2868 | 2869 | goto err_out_free_res; |
|---|
| 2869 | 2870 | } |
|---|
| .. | .. |
|---|
| 2999 | 3000 | struct net_device *netdev = pci_get_drvdata(pdev); |
|---|
| 3000 | 3001 | struct nic *nic = netdev_priv(netdev); |
|---|
| 3001 | 3002 | |
|---|
| 3002 | | - if (netif_running(netdev)) |
|---|
| 3003 | | - e100_down(nic); |
|---|
| 3004 | 3003 | netif_device_detach(netdev); |
|---|
| 3005 | 3004 | |
|---|
| 3006 | | - pci_save_state(pdev); |
|---|
| 3005 | + if (netif_running(netdev)) |
|---|
| 3006 | + e100_down(nic); |
|---|
| 3007 | 3007 | |
|---|
| 3008 | 3008 | if ((nic->flags & wol_magic) | e100_asf(nic)) { |
|---|
| 3009 | 3009 | /* enable reverse auto-negotiation */ |
|---|
| .. | .. |
|---|
| 3020 | 3020 | *enable_wake = false; |
|---|
| 3021 | 3021 | } |
|---|
| 3022 | 3022 | |
|---|
| 3023 | | - pci_clear_master(pdev); |
|---|
| 3023 | + pci_disable_device(pdev); |
|---|
| 3024 | 3024 | } |
|---|
| 3025 | 3025 | |
|---|
| 3026 | 3026 | static int __e100_power_off(struct pci_dev *pdev, bool wake) |
|---|
| .. | .. |
|---|
| 3034 | 3034 | return 0; |
|---|
| 3035 | 3035 | } |
|---|
| 3036 | 3036 | |
|---|
| 3037 | | -#ifdef CONFIG_PM |
|---|
| 3038 | | -static int e100_suspend(struct pci_dev *pdev, pm_message_t state) |
|---|
| 3037 | +static int __maybe_unused e100_suspend(struct device *dev_d) |
|---|
| 3039 | 3038 | { |
|---|
| 3040 | 3039 | bool wake; |
|---|
| 3041 | | - __e100_shutdown(pdev, &wake); |
|---|
| 3042 | | - return __e100_power_off(pdev, wake); |
|---|
| 3040 | + |
|---|
| 3041 | + __e100_shutdown(to_pci_dev(dev_d), &wake); |
|---|
| 3042 | + |
|---|
| 3043 | + return 0; |
|---|
| 3043 | 3044 | } |
|---|
| 3044 | 3045 | |
|---|
| 3045 | | -static int e100_resume(struct pci_dev *pdev) |
|---|
| 3046 | +static int __maybe_unused e100_resume(struct device *dev_d) |
|---|
| 3046 | 3047 | { |
|---|
| 3047 | | - struct net_device *netdev = pci_get_drvdata(pdev); |
|---|
| 3048 | + struct net_device *netdev = dev_get_drvdata(dev_d); |
|---|
| 3048 | 3049 | struct nic *nic = netdev_priv(netdev); |
|---|
| 3050 | + int err; |
|---|
| 3049 | 3051 | |
|---|
| 3050 | | - pci_set_power_state(pdev, PCI_D0); |
|---|
| 3051 | | - pci_restore_state(pdev); |
|---|
| 3052 | | - /* ack any pending wake events, disable PME */ |
|---|
| 3053 | | - pci_enable_wake(pdev, PCI_D0, 0); |
|---|
| 3052 | + err = pci_enable_device(to_pci_dev(dev_d)); |
|---|
| 3053 | + if (err) { |
|---|
| 3054 | + netdev_err(netdev, "Resume cannot enable PCI device, aborting\n"); |
|---|
| 3055 | + return err; |
|---|
| 3056 | + } |
|---|
| 3057 | + pci_set_master(to_pci_dev(dev_d)); |
|---|
| 3054 | 3058 | |
|---|
| 3055 | 3059 | /* disable reverse auto-negotiation */ |
|---|
| 3056 | 3060 | if (nic->phy == phy_82552_v) { |
|---|
| .. | .. |
|---|
| 3062 | 3066 | smartspeed & ~(E100_82552_REV_ANEG)); |
|---|
| 3063 | 3067 | } |
|---|
| 3064 | 3068 | |
|---|
| 3065 | | - netif_device_attach(netdev); |
|---|
| 3066 | 3069 | if (netif_running(netdev)) |
|---|
| 3067 | 3070 | e100_up(nic); |
|---|
| 3068 | 3071 | |
|---|
| 3072 | + netif_device_attach(netdev); |
|---|
| 3073 | + |
|---|
| 3069 | 3074 | return 0; |
|---|
| 3070 | 3075 | } |
|---|
| 3071 | | -#endif /* CONFIG_PM */ |
|---|
| 3072 | 3076 | |
|---|
| 3073 | 3077 | static void e100_shutdown(struct pci_dev *pdev) |
|---|
| 3074 | 3078 | { |
|---|
| .. | .. |
|---|
| 3156 | 3160 | .resume = e100_io_resume, |
|---|
| 3157 | 3161 | }; |
|---|
| 3158 | 3162 | |
|---|
| 3163 | +static SIMPLE_DEV_PM_OPS(e100_pm_ops, e100_suspend, e100_resume); |
|---|
| 3164 | + |
|---|
| 3159 | 3165 | static struct pci_driver e100_driver = { |
|---|
| 3160 | 3166 | .name = DRV_NAME, |
|---|
| 3161 | 3167 | .id_table = e100_id_table, |
|---|
| 3162 | 3168 | .probe = e100_probe, |
|---|
| 3163 | 3169 | .remove = e100_remove, |
|---|
| 3164 | | -#ifdef CONFIG_PM |
|---|
| 3170 | + |
|---|
| 3165 | 3171 | /* Power Management hooks */ |
|---|
| 3166 | | - .suspend = e100_suspend, |
|---|
| 3167 | | - .resume = e100_resume, |
|---|
| 3168 | | -#endif |
|---|
| 3172 | + .driver.pm = &e100_pm_ops, |
|---|
| 3173 | + |
|---|
| 3169 | 3174 | .shutdown = e100_shutdown, |
|---|
| 3170 | 3175 | .err_handler = &e100_err_handler, |
|---|
| 3171 | 3176 | }; |
|---|
| .. | .. |
|---|
| 3173 | 3178 | static int __init e100_init_module(void) |
|---|
| 3174 | 3179 | { |
|---|
| 3175 | 3180 | if (((1 << debug) - 1) & NETIF_MSG_DRV) { |
|---|
| 3176 | | - pr_info("%s, %s\n", DRV_DESCRIPTION, DRV_VERSION); |
|---|
| 3181 | + pr_info("%s\n", DRV_DESCRIPTION); |
|---|
| 3177 | 3182 | pr_info("%s\n", DRV_COPYRIGHT); |
|---|
| 3178 | 3183 | } |
|---|
| 3179 | 3184 | return pci_register_driver(&e100_driver); |
|---|