hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/drivers/net/ethernet/dlink/dl2k.c
....@@ -1,18 +1,12 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /* D-Link DL2000-based Gigabit Ethernet Adapter Linux driver */
23 /*
34 Copyright (c) 2001, 2002 by D-Link Corporation
45 Written by Edward Peng.<edward_peng@dlink.com.tw>
56 Created 03-May-2001, base on Linux' sundance.c.
67
7
- This program is free software; you can redistribute it and/or modify
8
- it under the terms of the GNU General Public License as published by
9
- the Free Software Foundation; either version 2 of the License, or
10
- (at your option) any later version.
118 */
129
13
-#define DRV_NAME "DL2000/TC902x-based linux driver"
14
-#define DRV_VERSION "v1.19"
15
-#define DRV_RELDATE "2007/08/12"
1610 #include "dl2k.h"
1711 #include <linux/dma-mapping.h>
1812
....@@ -23,8 +17,6 @@
2317 #define dr16(reg) ioread16(ioaddr + (reg))
2418 #define dr8(reg) ioread8(ioaddr + (reg))
2519
26
-static char version[] =
27
- KERN_INFO DRV_NAME " " DRV_VERSION " " DRV_RELDATE "\n";
2820 #define MAX_UNITS 8
2921 static int mtu[MAX_UNITS];
3022 static int vlan[MAX_UNITS];
....@@ -69,7 +61,7 @@
6961
7062 static int rio_open (struct net_device *dev);
7163 static void rio_timer (struct timer_list *t);
72
-static void rio_tx_timeout (struct net_device *dev);
64
+static void rio_tx_timeout (struct net_device *dev, unsigned int txqueue);
7365 static netdev_tx_t start_xmit (struct sk_buff *skb, struct net_device *dev);
7466 static irqreturn_t rio_interrupt (int irq, void *dev_instance);
7567 static void rio_free_tx (struct net_device *dev, int irq);
....@@ -116,12 +108,8 @@
116108 int chip_idx = ent->driver_data;
117109 int err, irq;
118110 void __iomem *ioaddr;
119
- static int version_printed;
120111 void *ring_space;
121112 dma_addr_t ring_dma;
122
-
123
- if (!version_printed++)
124
- printk ("%s", version);
125113
126114 err = pci_enable_device (pdev);
127115 if (err)
....@@ -234,13 +222,15 @@
234222
235223 pci_set_drvdata (pdev, dev);
236224
237
- ring_space = pci_alloc_consistent (pdev, TX_TOTAL_SIZE, &ring_dma);
225
+ ring_space = dma_alloc_coherent(&pdev->dev, TX_TOTAL_SIZE, &ring_dma,
226
+ GFP_KERNEL);
238227 if (!ring_space)
239228 goto err_out_iounmap;
240229 np->tx_ring = ring_space;
241230 np->tx_ring_dma = ring_dma;
242231
243
- ring_space = pci_alloc_consistent (pdev, RX_TOTAL_SIZE, &ring_dma);
232
+ ring_space = dma_alloc_coherent(&pdev->dev, RX_TOTAL_SIZE, &ring_dma,
233
+ GFP_KERNEL);
244234 if (!ring_space)
245235 goto err_out_unmap_tx;
246236 np->rx_ring = ring_space;
....@@ -291,9 +281,11 @@
291281 return 0;
292282
293283 err_out_unmap_rx:
294
- pci_free_consistent (pdev, RX_TOTAL_SIZE, np->rx_ring, np->rx_ring_dma);
284
+ dma_free_coherent(&pdev->dev, RX_TOTAL_SIZE, np->rx_ring,
285
+ np->rx_ring_dma);
295286 err_out_unmap_tx:
296
- pci_free_consistent (pdev, TX_TOTAL_SIZE, np->tx_ring, np->tx_ring_dma);
287
+ dma_free_coherent(&pdev->dev, TX_TOTAL_SIZE, np->tx_ring,
288
+ np->tx_ring_dma);
297289 err_out_iounmap:
298290 #ifdef MEM_MAPPING
299291 pci_iounmap(pdev, np->ioaddr);
....@@ -447,8 +439,9 @@
447439 for (i = 0; i < RX_RING_SIZE; i++) {
448440 skb = np->rx_skbuff[i];
449441 if (skb) {
450
- pci_unmap_single(np->pdev, desc_to_dma(&np->rx_ring[i]),
451
- skb->len, PCI_DMA_FROMDEVICE);
442
+ dma_unmap_single(&np->pdev->dev,
443
+ desc_to_dma(&np->rx_ring[i]),
444
+ skb->len, DMA_FROM_DEVICE);
452445 dev_kfree_skb(skb);
453446 np->rx_skbuff[i] = NULL;
454447 }
....@@ -458,8 +451,9 @@
458451 for (i = 0; i < TX_RING_SIZE; i++) {
459452 skb = np->tx_skbuff[i];
460453 if (skb) {
461
- pci_unmap_single(np->pdev, desc_to_dma(&np->tx_ring[i]),
462
- skb->len, PCI_DMA_TODEVICE);
454
+ dma_unmap_single(&np->pdev->dev,
455
+ desc_to_dma(&np->tx_ring[i]),
456
+ skb->len, DMA_TO_DEVICE);
463457 dev_kfree_skb(skb);
464458 np->tx_skbuff[i] = NULL;
465459 }
....@@ -516,9 +510,8 @@
516510 sizeof(struct netdev_desc));
517511 /* Rubicon now supports 40 bits of addressing space. */
518512 np->rx_ring[i].fraginfo =
519
- cpu_to_le64(pci_map_single(
520
- np->pdev, skb->data, np->rx_buf_sz,
521
- PCI_DMA_FROMDEVICE));
513
+ cpu_to_le64(dma_map_single(&np->pdev->dev, skb->data,
514
+ np->rx_buf_sz, DMA_FROM_DEVICE));
522515 np->rx_ring[i].fraginfo |= cpu_to_le64((u64)np->rx_buf_sz << 48);
523516 }
524517
....@@ -684,9 +677,8 @@
684677 }
685678 np->rx_skbuff[entry] = skb;
686679 np->rx_ring[entry].fraginfo =
687
- cpu_to_le64 (pci_map_single
688
- (np->pdev, skb->data, np->rx_buf_sz,
689
- PCI_DMA_FROMDEVICE));
680
+ cpu_to_le64 (dma_map_single(&np->pdev->dev, skb->data,
681
+ np->rx_buf_sz, DMA_FROM_DEVICE));
690682 }
691683 np->rx_ring[entry].fraginfo |=
692684 cpu_to_le64((u64)np->rx_buf_sz << 48);
....@@ -699,7 +691,7 @@
699691 }
700692
701693 static void
702
-rio_tx_timeout (struct net_device *dev)
694
+rio_tx_timeout (struct net_device *dev, unsigned int txqueue)
703695 {
704696 struct netdev_private *np = netdev_priv(dev);
705697 void __iomem *ioaddr = np->ioaddr;
....@@ -740,9 +732,8 @@
740732 ((u64)np->vlan << 32) |
741733 ((u64)skb->priority << 45);
742734 }
743
- txdesc->fraginfo = cpu_to_le64 (pci_map_single (np->pdev, skb->data,
744
- skb->len,
745
- PCI_DMA_TODEVICE));
735
+ txdesc->fraginfo = cpu_to_le64 (dma_map_single(&np->pdev->dev, skb->data,
736
+ skb->len, DMA_TO_DEVICE));
746737 txdesc->fraginfo |= cpu_to_le64((u64)skb->len << 48);
747738
748739 /* DL2K bug: DMA fails to get next descriptor ptr in 10Mbps mode
....@@ -839,13 +830,13 @@
839830 if (!(np->tx_ring[entry].status & cpu_to_le64(TFDDone)))
840831 break;
841832 skb = np->tx_skbuff[entry];
842
- pci_unmap_single (np->pdev,
843
- desc_to_dma(&np->tx_ring[entry]),
844
- skb->len, PCI_DMA_TODEVICE);
833
+ dma_unmap_single(&np->pdev->dev,
834
+ desc_to_dma(&np->tx_ring[entry]), skb->len,
835
+ DMA_TO_DEVICE);
845836 if (irq)
846
- dev_kfree_skb_irq (skb);
837
+ dev_consume_skb_irq(skb);
847838 else
848
- dev_kfree_skb (skb);
839
+ dev_kfree_skb(skb);
849840
850841 np->tx_skbuff[entry] = NULL;
851842 entry = (entry + 1) % TX_RING_SIZE;
....@@ -961,25 +952,25 @@
961952
962953 /* Small skbuffs for short packets */
963954 if (pkt_len > copy_thresh) {
964
- pci_unmap_single (np->pdev,
965
- desc_to_dma(desc),
966
- np->rx_buf_sz,
967
- PCI_DMA_FROMDEVICE);
955
+ dma_unmap_single(&np->pdev->dev,
956
+ desc_to_dma(desc),
957
+ np->rx_buf_sz,
958
+ DMA_FROM_DEVICE);
968959 skb_put (skb = np->rx_skbuff[entry], pkt_len);
969960 np->rx_skbuff[entry] = NULL;
970961 } else if ((skb = netdev_alloc_skb_ip_align(dev, pkt_len))) {
971
- pci_dma_sync_single_for_cpu(np->pdev,
972
- desc_to_dma(desc),
973
- np->rx_buf_sz,
974
- PCI_DMA_FROMDEVICE);
962
+ dma_sync_single_for_cpu(&np->pdev->dev,
963
+ desc_to_dma(desc),
964
+ np->rx_buf_sz,
965
+ DMA_FROM_DEVICE);
975966 skb_copy_to_linear_data (skb,
976967 np->rx_skbuff[entry]->data,
977968 pkt_len);
978969 skb_put (skb, pkt_len);
979
- pci_dma_sync_single_for_device(np->pdev,
980
- desc_to_dma(desc),
981
- np->rx_buf_sz,
982
- PCI_DMA_FROMDEVICE);
970
+ dma_sync_single_for_device(&np->pdev->dev,
971
+ desc_to_dma(desc),
972
+ np->rx_buf_sz,
973
+ DMA_FROM_DEVICE);
983974 }
984975 skb->protocol = eth_type_trans (skb, dev);
985976 #if 0
....@@ -1012,9 +1003,8 @@
10121003 }
10131004 np->rx_skbuff[entry] = skb;
10141005 np->rx_ring[entry].fraginfo =
1015
- cpu_to_le64 (pci_map_single
1016
- (np->pdev, skb->data, np->rx_buf_sz,
1017
- PCI_DMA_FROMDEVICE));
1006
+ cpu_to_le64(dma_map_single(&np->pdev->dev, skb->data,
1007
+ np->rx_buf_sz, DMA_FROM_DEVICE));
10181008 }
10191009 np->rx_ring[entry].fraginfo |=
10201010 cpu_to_le64((u64)np->rx_buf_sz << 48);
....@@ -1247,7 +1237,6 @@
12471237 struct netdev_private *np = netdev_priv(dev);
12481238
12491239 strlcpy(info->driver, "dl2k", sizeof(info->driver));
1250
- strlcpy(info->version, DRV_VERSION, sizeof(info->version));
12511240 strlcpy(info->bus_info, pci_name(np->pdev), sizeof(info->bus_info));
12521241 }
12531242
....@@ -1809,10 +1798,10 @@
18091798 struct netdev_private *np = netdev_priv(dev);
18101799
18111800 unregister_netdev (dev);
1812
- pci_free_consistent (pdev, RX_TOTAL_SIZE, np->rx_ring,
1813
- np->rx_ring_dma);
1814
- pci_free_consistent (pdev, TX_TOTAL_SIZE, np->tx_ring,
1815
- np->tx_ring_dma);
1801
+ dma_free_coherent(&pdev->dev, RX_TOTAL_SIZE, np->rx_ring,
1802
+ np->rx_ring_dma);
1803
+ dma_free_coherent(&pdev->dev, TX_TOTAL_SIZE, np->tx_ring,
1804
+ np->tx_ring_dma);
18161805 #ifdef MEM_MAPPING
18171806 pci_iounmap(pdev, np->ioaddr);
18181807 #endif
....@@ -1875,13 +1864,5 @@
18751864 };
18761865
18771866 module_pci_driver(rio_driver);
1878
-/*
18791867
1880
-Compile command:
1881
-
1882
-gcc -D__KERNEL__ -DMODULE -I/usr/src/linux/include -Wall -Wstrict-prototypes -O2 -c dl2k.c
1883
-
1884
-Read Documentation/networking/dl2k.txt for details.
1885
-
1886
-*/
1887
-
1868
+/* Read Documentation/networking/device_drivers/ethernet/dlink/dl2k.rst. */