hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/net/ethernet/adaptec/starfire.c
....@@ -27,8 +27,6 @@
2727 */
2828
2929 #define DRV_NAME "starfire"
30
-#define DRV_VERSION "2.1"
31
-#define DRV_RELDATE "July 6, 2008"
3230
3331 #include <linux/interrupt.h>
3432 #include <linux/module.h>
....@@ -165,15 +163,9 @@
165163 #define FIRMWARE_RX "adaptec/starfire_rx.bin"
166164 #define FIRMWARE_TX "adaptec/starfire_tx.bin"
167165
168
-/* These identify the driver base version and may not be removed. */
169
-static const char version[] =
170
-KERN_INFO "starfire.c:v1.03 7/26/2000 Written by Donald Becker <becker@scyld.com>\n"
171
-" (unofficial 2.2/2.4 kernel port, version " DRV_VERSION ", " DRV_RELDATE ")\n";
172
-
173166 MODULE_AUTHOR("Donald Becker <becker@scyld.com>");
174167 MODULE_DESCRIPTION("Adaptec Starfire Ethernet driver");
175168 MODULE_LICENSE("GPL");
176
-MODULE_VERSION(DRV_VERSION);
177169 MODULE_FIRMWARE(FIRMWARE_RX);
178170 MODULE_FIRMWARE(FIRMWARE_TX);
179171
....@@ -576,7 +568,7 @@
576568 static void mdio_write(struct net_device *dev, int phy_id, int location, int value);
577569 static int netdev_open(struct net_device *dev);
578570 static void check_duplex(struct net_device *dev);
579
-static void tx_timeout(struct net_device *dev);
571
+static void tx_timeout(struct net_device *dev, unsigned int txqueue);
580572 static void init_ring(struct net_device *dev);
581573 static netdev_tx_t start_tx(struct sk_buff *skb, struct net_device *dev);
582574 static irqreturn_t intr_handler(int irq, void *dev_instance);
....@@ -653,13 +645,6 @@
653645 void __iomem *base;
654646 int drv_flags, io_size;
655647 int boguscnt;
656
-
657
-/* when built into the kernel, we only print version if device is found */
658
-#ifndef MODULE
659
- static int printed_version;
660
- if (!printed_version++)
661
- printk(version);
662
-#endif
663648
664649 if (pci_enable_device (pdev))
665650 return -EIO;
....@@ -901,7 +886,9 @@
901886 tx_ring_size = ((sizeof(starfire_tx_desc) * TX_RING_SIZE + QUEUE_ALIGN - 1) / QUEUE_ALIGN) * QUEUE_ALIGN;
902887 rx_ring_size = sizeof(struct starfire_rx_desc) * RX_RING_SIZE;
903888 np->queue_mem_size = tx_done_q_size + rx_done_q_size + tx_ring_size + rx_ring_size;
904
- np->queue_mem = pci_alloc_consistent(np->pci_dev, np->queue_mem_size, &np->queue_mem_dma);
889
+ np->queue_mem = dma_alloc_coherent(&np->pci_dev->dev,
890
+ np->queue_mem_size,
891
+ &np->queue_mem_dma, GFP_ATOMIC);
905892 if (np->queue_mem == NULL) {
906893 free_irq(irq, dev);
907894 return -ENOMEM;
....@@ -1105,7 +1092,7 @@
11051092 }
11061093
11071094
1108
-static void tx_timeout(struct net_device *dev)
1095
+static void tx_timeout(struct net_device *dev, unsigned int txqueue)
11091096 {
11101097 struct netdev_private *np = netdev_priv(dev);
11111098 void __iomem *ioaddr = np->base;
....@@ -1151,9 +1138,11 @@
11511138 np->rx_info[i].skb = skb;
11521139 if (skb == NULL)
11531140 break;
1154
- np->rx_info[i].mapping = pci_map_single(np->pci_dev, skb->data, np->rx_buf_sz, PCI_DMA_FROMDEVICE);
1155
- if (pci_dma_mapping_error(np->pci_dev,
1156
- np->rx_info[i].mapping)) {
1141
+ np->rx_info[i].mapping = dma_map_single(&np->pci_dev->dev,
1142
+ skb->data,
1143
+ np->rx_buf_sz,
1144
+ DMA_FROM_DEVICE);
1145
+ if (dma_mapping_error(&np->pci_dev->dev, np->rx_info[i].mapping)) {
11571146 dev_kfree_skb(skb);
11581147 np->rx_info[i].skb = NULL;
11591148 break;
....@@ -1232,18 +1221,19 @@
12321221 status |= skb_first_frag_len(skb) | (skb_num_frags(skb) << 16);
12331222
12341223 np->tx_info[entry].mapping =
1235
- pci_map_single(np->pci_dev, skb->data, skb_first_frag_len(skb), PCI_DMA_TODEVICE);
1224
+ dma_map_single(&np->pci_dev->dev, skb->data,
1225
+ skb_first_frag_len(skb),
1226
+ DMA_TO_DEVICE);
12361227 } else {
12371228 const skb_frag_t *this_frag = &skb_shinfo(skb)->frags[i - 1];
12381229 status |= skb_frag_size(this_frag);
12391230 np->tx_info[entry].mapping =
1240
- pci_map_single(np->pci_dev,
1231
+ dma_map_single(&np->pci_dev->dev,
12411232 skb_frag_address(this_frag),
12421233 skb_frag_size(this_frag),
1243
- PCI_DMA_TODEVICE);
1234
+ DMA_TO_DEVICE);
12441235 }
1245
- if (pci_dma_mapping_error(np->pci_dev,
1246
- np->tx_info[entry].mapping)) {
1236
+ if (dma_mapping_error(&np->pci_dev->dev, np->tx_info[entry].mapping)) {
12471237 dev->stats.tx_dropped++;
12481238 goto err_out;
12491239 }
....@@ -1286,18 +1276,16 @@
12861276 entry = prev_tx % TX_RING_SIZE;
12871277 np->tx_info[entry].skb = NULL;
12881278 if (i > 0) {
1289
- pci_unmap_single(np->pci_dev,
1279
+ dma_unmap_single(&np->pci_dev->dev,
12901280 np->tx_info[entry].mapping,
1291
- skb_first_frag_len(skb),
1292
- PCI_DMA_TODEVICE);
1281
+ skb_first_frag_len(skb), DMA_TO_DEVICE);
12931282 np->tx_info[entry].mapping = 0;
12941283 entry = (entry + np->tx_info[entry].used_slots) % TX_RING_SIZE;
12951284 for (j = 1; j < i; j++) {
1296
- pci_unmap_single(np->pci_dev,
1285
+ dma_unmap_single(&np->pci_dev->dev,
12971286 np->tx_info[entry].mapping,
1298
- skb_frag_size(
1299
- &skb_shinfo(skb)->frags[j-1]),
1300
- PCI_DMA_TODEVICE);
1287
+ skb_frag_size(&skb_shinfo(skb)->frags[j - 1]),
1288
+ DMA_TO_DEVICE);
13011289 entry++;
13021290 }
13031291 }
....@@ -1371,26 +1359,26 @@
13711359 u16 entry = (tx_status & 0x7fff) / sizeof(starfire_tx_desc);
13721360 struct sk_buff *skb = np->tx_info[entry].skb;
13731361 np->tx_info[entry].skb = NULL;
1374
- pci_unmap_single(np->pci_dev,
1362
+ dma_unmap_single(&np->pci_dev->dev,
13751363 np->tx_info[entry].mapping,
13761364 skb_first_frag_len(skb),
1377
- PCI_DMA_TODEVICE);
1365
+ DMA_TO_DEVICE);
13781366 np->tx_info[entry].mapping = 0;
13791367 np->dirty_tx += np->tx_info[entry].used_slots;
13801368 entry = (entry + np->tx_info[entry].used_slots) % TX_RING_SIZE;
13811369 {
13821370 int i;
13831371 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
1384
- pci_unmap_single(np->pci_dev,
1372
+ dma_unmap_single(&np->pci_dev->dev,
13851373 np->tx_info[entry].mapping,
13861374 skb_frag_size(&skb_shinfo(skb)->frags[i]),
1387
- PCI_DMA_TODEVICE);
1375
+ DMA_TO_DEVICE);
13881376 np->dirty_tx++;
13891377 entry++;
13901378 }
13911379 }
13921380
1393
- dev_kfree_skb_irq(skb);
1381
+ dev_consume_skb_irq(skb);
13941382 }
13951383 np->tx_done_q[np->tx_done].status = 0;
13961384 np->tx_done = (np->tx_done + 1) % DONE_Q_SIZE;
....@@ -1476,16 +1464,18 @@
14761464 if (pkt_len < rx_copybreak &&
14771465 (skb = netdev_alloc_skb(dev, pkt_len + 2)) != NULL) {
14781466 skb_reserve(skb, 2); /* 16 byte align the IP header */
1479
- pci_dma_sync_single_for_cpu(np->pci_dev,
1480
- np->rx_info[entry].mapping,
1481
- pkt_len, PCI_DMA_FROMDEVICE);
1467
+ dma_sync_single_for_cpu(&np->pci_dev->dev,
1468
+ np->rx_info[entry].mapping,
1469
+ pkt_len, DMA_FROM_DEVICE);
14821470 skb_copy_to_linear_data(skb, np->rx_info[entry].skb->data, pkt_len);
1483
- pci_dma_sync_single_for_device(np->pci_dev,
1484
- np->rx_info[entry].mapping,
1485
- pkt_len, PCI_DMA_FROMDEVICE);
1471
+ dma_sync_single_for_device(&np->pci_dev->dev,
1472
+ np->rx_info[entry].mapping,
1473
+ pkt_len, DMA_FROM_DEVICE);
14861474 skb_put(skb, pkt_len);
14871475 } else {
1488
- pci_unmap_single(np->pci_dev, np->rx_info[entry].mapping, np->rx_buf_sz, PCI_DMA_FROMDEVICE);
1476
+ dma_unmap_single(&np->pci_dev->dev,
1477
+ np->rx_info[entry].mapping,
1478
+ np->rx_buf_sz, DMA_FROM_DEVICE);
14891479 skb = np->rx_info[entry].skb;
14901480 skb_put(skb, pkt_len);
14911481 np->rx_info[entry].skb = NULL;
....@@ -1603,9 +1593,9 @@
16031593 if (skb == NULL)
16041594 break; /* Better luck next round. */
16051595 np->rx_info[entry].mapping =
1606
- pci_map_single(np->pci_dev, skb->data, np->rx_buf_sz, PCI_DMA_FROMDEVICE);
1607
- if (pci_dma_mapping_error(np->pci_dev,
1608
- np->rx_info[entry].mapping)) {
1596
+ dma_map_single(&np->pci_dev->dev, skb->data,
1597
+ np->rx_buf_sz, DMA_FROM_DEVICE);
1598
+ if (dma_mapping_error(&np->pci_dev->dev, np->rx_info[entry].mapping)) {
16091599 dev_kfree_skb(skb);
16101600 np->rx_info[entry].skb = NULL;
16111601 break;
....@@ -1853,7 +1843,6 @@
18531843 {
18541844 struct netdev_private *np = netdev_priv(dev);
18551845 strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
1856
- strlcpy(info->version, DRV_VERSION, sizeof(info->version));
18571846 strlcpy(info->bus_info, pci_name(np->pci_dev), sizeof(info->bus_info));
18581847 }
18591848
....@@ -1979,7 +1968,9 @@
19791968 for (i = 0; i < RX_RING_SIZE; i++) {
19801969 np->rx_ring[i].rxaddr = cpu_to_dma(0xBADF00D0); /* An invalid address. */
19811970 if (np->rx_info[i].skb != NULL) {
1982
- pci_unmap_single(np->pci_dev, np->rx_info[i].mapping, np->rx_buf_sz, PCI_DMA_FROMDEVICE);
1971
+ dma_unmap_single(&np->pci_dev->dev,
1972
+ np->rx_info[i].mapping,
1973
+ np->rx_buf_sz, DMA_FROM_DEVICE);
19831974 dev_kfree_skb(np->rx_info[i].skb);
19841975 }
19851976 np->rx_info[i].skb = NULL;
....@@ -1989,9 +1980,8 @@
19891980 struct sk_buff *skb = np->tx_info[i].skb;
19901981 if (skb == NULL)
19911982 continue;
1992
- pci_unmap_single(np->pci_dev,
1993
- np->tx_info[i].mapping,
1994
- skb_first_frag_len(skb), PCI_DMA_TODEVICE);
1983
+ dma_unmap_single(&np->pci_dev->dev, np->tx_info[i].mapping,
1984
+ skb_first_frag_len(skb), DMA_TO_DEVICE);
19951985 np->tx_info[i].mapping = 0;
19961986 dev_kfree_skb(skb);
19971987 np->tx_info[i].skb = NULL;
....@@ -2000,28 +1990,21 @@
20001990 return 0;
20011991 }
20021992
2003
-#ifdef CONFIG_PM
2004
-static int starfire_suspend(struct pci_dev *pdev, pm_message_t state)
1993
+static int __maybe_unused starfire_suspend(struct device *dev_d)
20051994 {
2006
- struct net_device *dev = pci_get_drvdata(pdev);
1995
+ struct net_device *dev = dev_get_drvdata(dev_d);
20071996
20081997 if (netif_running(dev)) {
20091998 netif_device_detach(dev);
20101999 netdev_close(dev);
20112000 }
20122001
2013
- pci_save_state(pdev);
2014
- pci_set_power_state(pdev, pci_choose_state(pdev,state));
2015
-
20162002 return 0;
20172003 }
20182004
2019
-static int starfire_resume(struct pci_dev *pdev)
2005
+static int __maybe_unused starfire_resume(struct device *dev_d)
20202006 {
2021
- struct net_device *dev = pci_get_drvdata(pdev);
2022
-
2023
- pci_set_power_state(pdev, PCI_D0);
2024
- pci_restore_state(pdev);
2007
+ struct net_device *dev = dev_get_drvdata(dev_d);
20252008
20262009 if (netif_running(dev)) {
20272010 netdev_open(dev);
....@@ -2030,8 +2013,6 @@
20302013
20312014 return 0;
20322015 }
2033
-#endif /* CONFIG_PM */
2034
-
20352016
20362017 static void starfire_remove_one(struct pci_dev *pdev)
20372018 {
....@@ -2043,7 +2024,8 @@
20432024 unregister_netdev(dev);
20442025
20452026 if (np->queue_mem)
2046
- pci_free_consistent(pdev, np->queue_mem_size, np->queue_mem, np->queue_mem_dma);
2027
+ dma_free_coherent(&pdev->dev, np->queue_mem_size,
2028
+ np->queue_mem, np->queue_mem_dma);
20472029
20482030
20492031 /* XXX: add wakeup code -- requires firmware for MagicPacket */
....@@ -2056,15 +2038,13 @@
20562038 free_netdev(dev); /* Will also free np!! */
20572039 }
20582040
2041
+static SIMPLE_DEV_PM_OPS(starfire_pm_ops, starfire_suspend, starfire_resume);
20592042
20602043 static struct pci_driver starfire_driver = {
20612044 .name = DRV_NAME,
20622045 .probe = starfire_init_one,
20632046 .remove = starfire_remove_one,
2064
-#ifdef CONFIG_PM
2065
- .suspend = starfire_suspend,
2066
- .resume = starfire_resume,
2067
-#endif /* CONFIG_PM */
2047
+ .driver.pm = &starfire_pm_ops,
20682048 .id_table = starfire_pci_tbl,
20692049 };
20702050
....@@ -2073,8 +2053,6 @@
20732053 {
20742054 /* when a module, this is printed whether or not devices are found in probe */
20752055 #ifdef MODULE
2076
- printk(version);
2077
-
20782056 printk(KERN_INFO DRV_NAME ": polling (NAPI) enabled\n");
20792057 #endif
20802058