hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/net/ethernet/packetengines/hamachi.c
....@@ -548,7 +548,7 @@
548548 static int hamachi_open(struct net_device *dev);
549549 static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
550550 static void hamachi_timer(struct timer_list *t);
551
-static void hamachi_tx_timeout(struct net_device *dev);
551
+static void hamachi_tx_timeout(struct net_device *dev, unsigned int txqueue);
552552 static void hamachi_init_ring(struct net_device *dev);
553553 static netdev_tx_t hamachi_start_xmit(struct sk_buff *skb,
554554 struct net_device *dev);
....@@ -644,13 +644,15 @@
644644 hmp->mii_if.phy_id_mask = 0x1f;
645645 hmp->mii_if.reg_num_mask = 0x1f;
646646
647
- ring_space = pci_alloc_consistent(pdev, TX_TOTAL_SIZE, &ring_dma);
647
+ ring_space = dma_alloc_coherent(&pdev->dev, TX_TOTAL_SIZE, &ring_dma,
648
+ GFP_KERNEL);
648649 if (!ring_space)
649650 goto err_out_cleardev;
650651 hmp->tx_ring = ring_space;
651652 hmp->tx_ring_dma = ring_dma;
652653
653
- ring_space = pci_alloc_consistent(pdev, RX_TOTAL_SIZE, &ring_dma);
654
+ ring_space = dma_alloc_coherent(&pdev->dev, RX_TOTAL_SIZE, &ring_dma,
655
+ GFP_KERNEL);
654656 if (!ring_space)
655657 goto err_out_unmap_tx;
656658 hmp->rx_ring = ring_space;
....@@ -773,11 +775,11 @@
773775 return 0;
774776
775777 err_out_unmap_rx:
776
- pci_free_consistent(pdev, RX_TOTAL_SIZE, hmp->rx_ring,
777
- hmp->rx_ring_dma);
778
+ dma_free_coherent(&pdev->dev, RX_TOTAL_SIZE, hmp->rx_ring,
779
+ hmp->rx_ring_dma);
778780 err_out_unmap_tx:
779
- pci_free_consistent(pdev, TX_TOTAL_SIZE, hmp->tx_ring,
780
- hmp->tx_ring_dma);
781
+ dma_free_coherent(&pdev->dev, TX_TOTAL_SIZE, hmp->tx_ring,
782
+ hmp->tx_ring_dma);
781783 err_out_cleardev:
782784 free_netdev (dev);
783785 err_out_iounmap:
....@@ -1001,9 +1003,9 @@
10011003 /* Free the original skb. */
10021004 skb = hmp->tx_skbuff[entry];
10031005 if (skb) {
1004
- pci_unmap_single(hmp->pci_dev,
1005
- leXX_to_cpu(hmp->tx_ring[entry].addr),
1006
- skb->len, PCI_DMA_TODEVICE);
1006
+ dma_unmap_single(&hmp->pci_dev->dev,
1007
+ leXX_to_cpu(hmp->tx_ring[entry].addr),
1008
+ skb->len, DMA_TO_DEVICE);
10071009 dev_kfree_skb(skb);
10081010 hmp->tx_skbuff[entry] = NULL;
10091011 }
....@@ -1042,7 +1044,7 @@
10421044 add_timer(&hmp->timer);
10431045 }
10441046
1045
-static void hamachi_tx_timeout(struct net_device *dev)
1047
+static void hamachi_tx_timeout(struct net_device *dev, unsigned int txqueue)
10461048 {
10471049 int i;
10481050 struct hamachi_private *hmp = netdev_priv(dev);
....@@ -1093,8 +1095,9 @@
10931095 hmp->tx_ring[i].status_n_length &= cpu_to_le32(0x0000ffff);
10941096 skb = hmp->tx_skbuff[i];
10951097 if (skb){
1096
- pci_unmap_single(hmp->pci_dev, leXX_to_cpu(hmp->tx_ring[i].addr),
1097
- skb->len, PCI_DMA_TODEVICE);
1098
+ dma_unmap_single(&hmp->pci_dev->dev,
1099
+ leXX_to_cpu(hmp->tx_ring[i].addr),
1100
+ skb->len, DMA_TO_DEVICE);
10981101 dev_kfree_skb(skb);
10991102 hmp->tx_skbuff[i] = NULL;
11001103 }
....@@ -1115,9 +1118,9 @@
11151118 struct sk_buff *skb = hmp->rx_skbuff[i];
11161119
11171120 if (skb){
1118
- pci_unmap_single(hmp->pci_dev,
1119
- leXX_to_cpu(hmp->rx_ring[i].addr),
1120
- hmp->rx_buf_sz, PCI_DMA_FROMDEVICE);
1121
+ dma_unmap_single(&hmp->pci_dev->dev,
1122
+ leXX_to_cpu(hmp->rx_ring[i].addr),
1123
+ hmp->rx_buf_sz, DMA_FROM_DEVICE);
11211124 dev_kfree_skb(skb);
11221125 hmp->rx_skbuff[i] = NULL;
11231126 }
....@@ -1131,8 +1134,10 @@
11311134 if (skb == NULL)
11321135 break;
11331136
1134
- hmp->rx_ring[i].addr = cpu_to_leXX(pci_map_single(hmp->pci_dev,
1135
- skb->data, hmp->rx_buf_sz, PCI_DMA_FROMDEVICE));
1137
+ hmp->rx_ring[i].addr = cpu_to_leXX(dma_map_single(&hmp->pci_dev->dev,
1138
+ skb->data,
1139
+ hmp->rx_buf_sz,
1140
+ DMA_FROM_DEVICE));
11361141 hmp->rx_ring[i].status_n_length = cpu_to_le32(DescOwn |
11371142 DescEndPacket | DescIntr | (hmp->rx_buf_sz - 2));
11381143 }
....@@ -1183,8 +1188,10 @@
11831188 if (skb == NULL)
11841189 break;
11851190 skb_reserve(skb, 2); /* 16 byte align the IP header. */
1186
- hmp->rx_ring[i].addr = cpu_to_leXX(pci_map_single(hmp->pci_dev,
1187
- skb->data, hmp->rx_buf_sz, PCI_DMA_FROMDEVICE));
1191
+ hmp->rx_ring[i].addr = cpu_to_leXX(dma_map_single(&hmp->pci_dev->dev,
1192
+ skb->data,
1193
+ hmp->rx_buf_sz,
1194
+ DMA_FROM_DEVICE));
11881195 /* -2 because it doesn't REALLY have that first 2 bytes -KDU */
11891196 hmp->rx_ring[i].status_n_length = cpu_to_le32(DescOwn |
11901197 DescEndPacket | DescIntr | (hmp->rx_buf_sz -2));
....@@ -1233,8 +1240,10 @@
12331240
12341241 hmp->tx_skbuff[entry] = skb;
12351242
1236
- hmp->tx_ring[entry].addr = cpu_to_leXX(pci_map_single(hmp->pci_dev,
1237
- skb->data, skb->len, PCI_DMA_TODEVICE));
1243
+ hmp->tx_ring[entry].addr = cpu_to_leXX(dma_map_single(&hmp->pci_dev->dev,
1244
+ skb->data,
1245
+ skb->len,
1246
+ DMA_TO_DEVICE));
12381247
12391248 /* Hmmmm, could probably put a DescIntr on these, but the way
12401249 the driver is currently coded makes Tx interrupts unnecessary
....@@ -1333,11 +1342,11 @@
13331342 skb = hmp->tx_skbuff[entry];
13341343 /* Free the original skb. */
13351344 if (skb){
1336
- pci_unmap_single(hmp->pci_dev,
1337
- leXX_to_cpu(hmp->tx_ring[entry].addr),
1338
- skb->len,
1339
- PCI_DMA_TODEVICE);
1340
- dev_kfree_skb_irq(skb);
1345
+ dma_unmap_single(&hmp->pci_dev->dev,
1346
+ leXX_to_cpu(hmp->tx_ring[entry].addr),
1347
+ skb->len,
1348
+ DMA_TO_DEVICE);
1349
+ dev_consume_skb_irq(skb);
13411350 hmp->tx_skbuff[entry] = NULL;
13421351 }
13431352 hmp->tx_ring[entry].status_n_length = 0;
....@@ -1413,10 +1422,9 @@
14131422
14141423 if (desc_status & DescOwn)
14151424 break;
1416
- pci_dma_sync_single_for_cpu(hmp->pci_dev,
1417
- leXX_to_cpu(desc->addr),
1418
- hmp->rx_buf_sz,
1419
- PCI_DMA_FROMDEVICE);
1425
+ dma_sync_single_for_cpu(&hmp->pci_dev->dev,
1426
+ leXX_to_cpu(desc->addr),
1427
+ hmp->rx_buf_sz, DMA_FROM_DEVICE);
14201428 buf_addr = (u8 *) hmp->rx_skbuff[entry]->data;
14211429 frame_status = get_unaligned_le32(&(buf_addr[data_size - 12]));
14221430 if (hamachi_debug > 4)
....@@ -1483,10 +1491,10 @@
14831491 "not good with RX_CHECKSUM\n", dev->name);
14841492 #endif
14851493 skb_reserve(skb, 2); /* 16 byte align the IP header */
1486
- pci_dma_sync_single_for_cpu(hmp->pci_dev,
1487
- leXX_to_cpu(hmp->rx_ring[entry].addr),
1488
- hmp->rx_buf_sz,
1489
- PCI_DMA_FROMDEVICE);
1494
+ dma_sync_single_for_cpu(&hmp->pci_dev->dev,
1495
+ leXX_to_cpu(hmp->rx_ring[entry].addr),
1496
+ hmp->rx_buf_sz,
1497
+ DMA_FROM_DEVICE);
14901498 /* Call copy + cksum if available. */
14911499 #if 1 || USE_IP_COPYSUM
14921500 skb_copy_to_linear_data(skb,
....@@ -1496,14 +1504,15 @@
14961504 skb_put_data(skb, hmp->rx_ring_dma
14971505 + entry*sizeof(*desc), pkt_len);
14981506 #endif
1499
- pci_dma_sync_single_for_device(hmp->pci_dev,
1500
- leXX_to_cpu(hmp->rx_ring[entry].addr),
1501
- hmp->rx_buf_sz,
1502
- PCI_DMA_FROMDEVICE);
1507
+ dma_sync_single_for_device(&hmp->pci_dev->dev,
1508
+ leXX_to_cpu(hmp->rx_ring[entry].addr),
1509
+ hmp->rx_buf_sz,
1510
+ DMA_FROM_DEVICE);
15031511 } else {
1504
- pci_unmap_single(hmp->pci_dev,
1512
+ dma_unmap_single(&hmp->pci_dev->dev,
15051513 leXX_to_cpu(hmp->rx_ring[entry].addr),
1506
- hmp->rx_buf_sz, PCI_DMA_FROMDEVICE);
1514
+ hmp->rx_buf_sz,
1515
+ DMA_FROM_DEVICE);
15071516 skb_put(skb = hmp->rx_skbuff[entry], pkt_len);
15081517 hmp->rx_skbuff[entry] = NULL;
15091518 }
....@@ -1586,8 +1595,10 @@
15861595 if (skb == NULL)
15871596 break; /* Better luck next round. */
15881597 skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */
1589
- desc->addr = cpu_to_leXX(pci_map_single(hmp->pci_dev,
1590
- skb->data, hmp->rx_buf_sz, PCI_DMA_FROMDEVICE));
1598
+ desc->addr = cpu_to_leXX(dma_map_single(&hmp->pci_dev->dev,
1599
+ skb->data,
1600
+ hmp->rx_buf_sz,
1601
+ DMA_FROM_DEVICE));
15911602 }
15921603 desc->status_n_length = cpu_to_le32(hmp->rx_buf_sz);
15931604 if (entry >= RX_RING_SIZE-1)
....@@ -1704,9 +1715,9 @@
17041715 skb = hmp->rx_skbuff[i];
17051716 hmp->rx_ring[i].status_n_length = 0;
17061717 if (skb) {
1707
- pci_unmap_single(hmp->pci_dev,
1708
- leXX_to_cpu(hmp->rx_ring[i].addr),
1709
- hmp->rx_buf_sz, PCI_DMA_FROMDEVICE);
1718
+ dma_unmap_single(&hmp->pci_dev->dev,
1719
+ leXX_to_cpu(hmp->rx_ring[i].addr),
1720
+ hmp->rx_buf_sz, DMA_FROM_DEVICE);
17101721 dev_kfree_skb(skb);
17111722 hmp->rx_skbuff[i] = NULL;
17121723 }
....@@ -1715,9 +1726,9 @@
17151726 for (i = 0; i < TX_RING_SIZE; i++) {
17161727 skb = hmp->tx_skbuff[i];
17171728 if (skb) {
1718
- pci_unmap_single(hmp->pci_dev,
1719
- leXX_to_cpu(hmp->tx_ring[i].addr),
1720
- skb->len, PCI_DMA_TODEVICE);
1729
+ dma_unmap_single(&hmp->pci_dev->dev,
1730
+ leXX_to_cpu(hmp->tx_ring[i].addr),
1731
+ skb->len, DMA_TO_DEVICE);
17211732 dev_kfree_skb(skb);
17221733 hmp->tx_skbuff[i] = NULL;
17231734 }
....@@ -1899,10 +1910,10 @@
18991910 if (dev) {
19001911 struct hamachi_private *hmp = netdev_priv(dev);
19011912
1902
- pci_free_consistent(pdev, RX_TOTAL_SIZE, hmp->rx_ring,
1903
- hmp->rx_ring_dma);
1904
- pci_free_consistent(pdev, TX_TOTAL_SIZE, hmp->tx_ring,
1905
- hmp->tx_ring_dma);
1913
+ dma_free_coherent(&pdev->dev, RX_TOTAL_SIZE, hmp->rx_ring,
1914
+ hmp->rx_ring_dma);
1915
+ dma_free_coherent(&pdev->dev, TX_TOTAL_SIZE, hmp->tx_ring,
1916
+ hmp->tx_ring_dma);
19061917 unregister_netdev(dev);
19071918 iounmap(hmp->base);
19081919 free_netdev(dev);