hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/net/ethernet/intel/e100.c
....@@ -150,8 +150,6 @@
150150
151151
152152 #define DRV_NAME "e100"
153
-#define DRV_EXT "-NAPI"
154
-#define DRV_VERSION "3.5.24-k2"DRV_EXT
155153 #define DRV_DESCRIPTION "Intel(R) PRO/100 Network Driver"
156154 #define DRV_COPYRIGHT "Copyright(c) 1999-2006 Intel Corporation"
157155
....@@ -164,8 +162,7 @@
164162
165163 MODULE_DESCRIPTION(DRV_DESCRIPTION);
166164 MODULE_AUTHOR(DRV_COPYRIGHT);
167
-MODULE_LICENSE("GPL");
168
-MODULE_VERSION(DRV_VERSION);
165
+MODULE_LICENSE("GPL v2");
169166 MODULE_FIRMWARE(FIRMWARE_D101M);
170167 MODULE_FIRMWARE(FIRMWARE_D101S);
171168 MODULE_FIRMWARE(FIRMWARE_D102E);
....@@ -387,7 +384,7 @@
387384 cb_ok = 0x2000,
388385 };
389386
390
-/**
387
+/*
391388 * cb_command - Command Block flags
392389 * @cb_tx_nc: 0: controller does CRC (normal), 1: CRC from skb memory
393390 */
....@@ -1534,7 +1531,7 @@
15341531 e100_hw_reset(nic);
15351532
15361533 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)))
15381535 return err;
15391536
15401537 if ((err = e100_phy_init(nic)))
....@@ -1742,14 +1739,11 @@
17421739 dma_addr_t dma_addr;
17431740 cb->command = nic->tx_command;
17441741
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);
17471744 /* 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))
17511746 return -ENOMEM;
1752
- }
17531747
17541748 /*
17551749 * Use the last 4 bytes of the SKB payload packet as the CRC, used for
....@@ -1831,10 +1825,10 @@
18311825 dev->stats.tx_packets++;
18321826 dev->stats.tx_bytes += cb->skb->len;
18331827
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);
18381832 dev_kfree_skb_any(cb->skb);
18391833 cb->skb = NULL;
18401834 tx_cleaned = 1;
....@@ -1858,10 +1852,10 @@
18581852 while (nic->cbs_avail != nic->params.cbs.count) {
18591853 struct cb *cb = nic->cb_to_clean;
18601854 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);
18651859 dev_kfree_skb(cb->skb);
18661860 }
18671861 nic->cb_to_clean = nic->cb_to_clean->next;
....@@ -1928,10 +1922,10 @@
19281922
19291923 /* Init, and map the RFD. */
19301924 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);
19331927
1934
- if (pci_dma_mapping_error(nic->pdev, rx->dma_addr)) {
1928
+ if (dma_mapping_error(&nic->pdev->dev, rx->dma_addr)) {
19351929 dev_kfree_skb_any(rx->skb);
19361930 rx->skb = NULL;
19371931 rx->dma_addr = 0;
....@@ -1944,8 +1938,10 @@
19441938 if (rx->prev->skb) {
19451939 struct rfd *prev_rfd = (struct rfd *)rx->prev->skb->data;
19461940 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);
19491945 }
19501946
19511947 return 0;
....@@ -1964,8 +1960,8 @@
19641960 return -EAGAIN;
19651961
19661962 /* 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);
19691965 rfd_status = le16_to_cpu(rfd->status);
19701966
19711967 netif_printk(nic, rx_status, KERN_DEBUG, nic->netdev,
....@@ -1984,9 +1980,9 @@
19841980
19851981 if (ioread8(&nic->csr->scb.status) & rus_no_res)
19861982 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);
19901986 return -ENODATA;
19911987 }
19921988
....@@ -1998,8 +1994,8 @@
19981994 actual_size = RFD_BUF_LEN - sizeof(struct rfd);
19991995
20001996 /* 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);
20031999
20042000 /* If this buffer has the el bit, but we think the receiver
20052001 * is still running, check to see if it really stopped while
....@@ -2100,22 +2096,25 @@
21002096 (struct rfd *)new_before_last_rx->skb->data;
21012097 new_before_last_rfd->size = 0;
21022098 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);
21062103
21072104 /* Now that we have a new stopping point, we can clear the old
21082105 * stopping point. We must sync twice to get the proper
21092106 * ordering on the hardware side of things. */
21102107 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);
21142112 old_before_last_rfd->size = cpu_to_le16(VLAN_ETH_FRAME_LEN
21152113 + 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);
21192118 }
21202119
21212120 if (restart_required) {
....@@ -2137,8 +2136,9 @@
21372136 if (nic->rxs) {
21382137 for (rx = nic->rxs, i = 0; i < count; rx++, i++) {
21392138 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);
21422142 dev_kfree_skb(rx->skb);
21432143 }
21442144 }
....@@ -2158,7 +2158,7 @@
21582158 nic->rx_to_use = nic->rx_to_clean = NULL;
21592159 nic->ru_running = RU_UNINITIALIZED;
21602160
2161
- if (!(nic->rxs = kcalloc(count, sizeof(struct rx), GFP_ATOMIC)))
2161
+ if (!(nic->rxs = kcalloc(count, sizeof(struct rx), GFP_KERNEL)))
21622162 return -ENOMEM;
21632163
21642164 for (rx = nic->rxs, i = 0; i < count; rx++, i++) {
....@@ -2180,8 +2180,8 @@
21802180 before_last = (struct rfd *)rx->skb->data;
21812181 before_last->command |= cpu_to_le16(cb_el);
21822182 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);
21852185
21862186 nic->rx_to_use = nic->rx_to_clean = nic->rxs;
21872187 nic->ru_running = RU_SUSPENDED;
....@@ -2225,11 +2225,13 @@
22252225 e100_rx_clean(nic, &work_done, budget);
22262226 e100_tx_clean(nic);
22272227
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)))
22312234 e100_enable_irq(nic);
2232
- }
22332235
22342236 return work_done;
22352237 }
....@@ -2314,7 +2316,7 @@
23142316 e100_rx_clean_list(nic);
23152317 }
23162318
2317
-static void e100_tx_timeout(struct net_device *netdev)
2319
+static void e100_tx_timeout(struct net_device *netdev, unsigned int txqueue)
23182320 {
23192321 struct nic *nic = netdev_priv(netdev);
23202322
....@@ -2378,8 +2380,8 @@
23782380
23792381 msleep(10);
23802382
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);
23832385
23842386 if (memcmp(nic->rx_to_clean->skb->data + sizeof(struct rfd),
23852387 skb->data, ETH_DATA_LEN))
....@@ -2428,7 +2430,6 @@
24282430 {
24292431 struct nic *nic = netdev_priv(netdev);
24302432 strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
2431
- strlcpy(info->version, DRV_VERSION, sizeof(info->version));
24322433 strlcpy(info->bus_info, pci_name(nic->pdev),
24332434 sizeof(info->bus_info));
24342435 }
....@@ -2603,7 +2604,7 @@
26032604 {
26042605 struct ethtool_cmd cmd;
26052606 struct nic *nic = netdev_priv(netdev);
2606
- int i, err;
2607
+ int i;
26072608
26082609 memset(data, 0, E100_TEST_LEN * sizeof(u64));
26092610 data[0] = !mii_link_ok(&nic->mii);
....@@ -2611,7 +2612,7 @@
26112612 if (test->flags & ETH_TEST_FL_OFFLINE) {
26122613
26132614 /* save speed, duplex & autoneg settings */
2614
- err = mii_ethtool_gset(&nic->mii, &cmd);
2615
+ mii_ethtool_gset(&nic->mii, &cmd);
26152616
26162617 if (netif_running(netdev))
26172618 e100_down(nic);
....@@ -2620,7 +2621,7 @@
26202621 data[4] = e100_loopback_test(nic, lb_phy);
26212622
26222623 /* restore speed, duplex & autoneg settings */
2623
- err = mii_ethtool_sset(&nic->mii, &cmd);
2624
+ mii_ethtool_sset(&nic->mii, &cmd);
26242625
26252626 if (netif_running(netdev))
26262627 e100_up(nic);
....@@ -2761,16 +2762,16 @@
27612762
27622763 static int e100_alloc(struct nic *nic)
27632764 {
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);
27662767 return nic->mem ? 0 : -ENOMEM;
27672768 }
27682769
27692770 static void e100_free(struct nic *nic)
27702771 {
27712772 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);
27742775 nic->mem = NULL;
27752776 }
27762777 }
....@@ -2803,7 +2804,7 @@
28032804
28042805 netdev->features = features;
28052806 e100_exec_cb(nic, NULL, e100_configure);
2806
- return 0;
2807
+ return 1;
28072808 }
28082809
28092810 static const struct net_device_ops e100_netdev_ops = {
....@@ -2863,7 +2864,7 @@
28632864 goto err_out_disable_pdev;
28642865 }
28652866
2866
- if ((err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)))) {
2867
+ if ((err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)))) {
28672868 netif_err(nic, probe, nic->netdev, "No usable DMA configuration, aborting\n");
28682869 goto err_out_free_res;
28692870 }
....@@ -2999,11 +3000,10 @@
29993000 struct net_device *netdev = pci_get_drvdata(pdev);
30003001 struct nic *nic = netdev_priv(netdev);
30013002
3002
- if (netif_running(netdev))
3003
- e100_down(nic);
30043003 netif_device_detach(netdev);
30053004
3006
- pci_save_state(pdev);
3005
+ if (netif_running(netdev))
3006
+ e100_down(nic);
30073007
30083008 if ((nic->flags & wol_magic) | e100_asf(nic)) {
30093009 /* enable reverse auto-negotiation */
....@@ -3020,7 +3020,7 @@
30203020 *enable_wake = false;
30213021 }
30223022
3023
- pci_clear_master(pdev);
3023
+ pci_disable_device(pdev);
30243024 }
30253025
30263026 static int __e100_power_off(struct pci_dev *pdev, bool wake)
....@@ -3034,23 +3034,27 @@
30343034 return 0;
30353035 }
30363036
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)
30393038 {
30403039 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;
30433044 }
30443045
3045
-static int e100_resume(struct pci_dev *pdev)
3046
+static int __maybe_unused e100_resume(struct device *dev_d)
30463047 {
3047
- struct net_device *netdev = pci_get_drvdata(pdev);
3048
+ struct net_device *netdev = dev_get_drvdata(dev_d);
30483049 struct nic *nic = netdev_priv(netdev);
3050
+ int err;
30493051
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));
30543058
30553059 /* disable reverse auto-negotiation */
30563060 if (nic->phy == phy_82552_v) {
....@@ -3062,13 +3066,13 @@
30623066 smartspeed & ~(E100_82552_REV_ANEG));
30633067 }
30643068
3065
- netif_device_attach(netdev);
30663069 if (netif_running(netdev))
30673070 e100_up(nic);
30683071
3072
+ netif_device_attach(netdev);
3073
+
30693074 return 0;
30703075 }
3071
-#endif /* CONFIG_PM */
30723076
30733077 static void e100_shutdown(struct pci_dev *pdev)
30743078 {
....@@ -3156,16 +3160,17 @@
31563160 .resume = e100_io_resume,
31573161 };
31583162
3163
+static SIMPLE_DEV_PM_OPS(e100_pm_ops, e100_suspend, e100_resume);
3164
+
31593165 static struct pci_driver e100_driver = {
31603166 .name = DRV_NAME,
31613167 .id_table = e100_id_table,
31623168 .probe = e100_probe,
31633169 .remove = e100_remove,
3164
-#ifdef CONFIG_PM
3170
+
31653171 /* Power Management hooks */
3166
- .suspend = e100_suspend,
3167
- .resume = e100_resume,
3168
-#endif
3172
+ .driver.pm = &e100_pm_ops,
3173
+
31693174 .shutdown = e100_shutdown,
31703175 .err_handler = &e100_err_handler,
31713176 };
....@@ -3173,7 +3178,7 @@
31733178 static int __init e100_init_module(void)
31743179 {
31753180 if (((1 << debug) - 1) & NETIF_MSG_DRV) {
3176
- pr_info("%s, %s\n", DRV_DESCRIPTION, DRV_VERSION);
3181
+ pr_info("%s\n", DRV_DESCRIPTION);
31773182 pr_info("%s\n", DRV_COPYRIGHT);
31783183 }
31793184 return pci_register_driver(&e100_driver);