forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/ethernet/natsemi/natsemi.c
....@@ -612,7 +612,7 @@
612612 static void check_link(struct net_device *dev);
613613 static void netdev_timer(struct timer_list *t);
614614 static void dump_ring(struct net_device *dev);
615
-static void ns_tx_timeout(struct net_device *dev);
615
+static void ns_tx_timeout(struct net_device *dev, unsigned int txqueue);
616616 static int alloc_ring(struct net_device *dev);
617617 static void refill_rx(struct net_device *dev);
618618 static void init_ring(struct net_device *dev);
....@@ -1878,7 +1878,7 @@
18781878 }
18791879 }
18801880
1881
-static void ns_tx_timeout(struct net_device *dev)
1881
+static void ns_tx_timeout(struct net_device *dev, unsigned int txqueue)
18821882 {
18831883 struct netdev_private *np = netdev_priv(dev);
18841884 void __iomem * ioaddr = ns_ioaddr(dev);
....@@ -1913,9 +1913,9 @@
19131913 static int alloc_ring(struct net_device *dev)
19141914 {
19151915 struct netdev_private *np = netdev_priv(dev);
1916
- np->rx_ring = pci_alloc_consistent(np->pci_dev,
1917
- sizeof(struct netdev_desc) * (RX_RING_SIZE+TX_RING_SIZE),
1918
- &np->ring_dma);
1916
+ np->rx_ring = dma_alloc_coherent(&np->pci_dev->dev,
1917
+ sizeof(struct netdev_desc) * (RX_RING_SIZE + TX_RING_SIZE),
1918
+ &np->ring_dma, GFP_KERNEL);
19191919 if (!np->rx_ring)
19201920 return -ENOMEM;
19211921 np->tx_ring = &np->rx_ring[RX_RING_SIZE];
....@@ -1936,10 +1936,10 @@
19361936 np->rx_skbuff[entry] = skb;
19371937 if (skb == NULL)
19381938 break; /* Better luck next round. */
1939
- np->rx_dma[entry] = pci_map_single(np->pci_dev,
1940
- skb->data, buflen, PCI_DMA_FROMDEVICE);
1941
- if (pci_dma_mapping_error(np->pci_dev,
1942
- np->rx_dma[entry])) {
1939
+ np->rx_dma[entry] = dma_map_single(&np->pci_dev->dev,
1940
+ skb->data, buflen,
1941
+ DMA_FROM_DEVICE);
1942
+ if (dma_mapping_error(&np->pci_dev->dev, np->rx_dma[entry])) {
19431943 dev_kfree_skb_any(skb);
19441944 np->rx_skbuff[entry] = NULL;
19451945 break; /* Better luck next round. */
....@@ -2010,9 +2010,8 @@
20102010
20112011 for (i = 0; i < TX_RING_SIZE; i++) {
20122012 if (np->tx_skbuff[i]) {
2013
- pci_unmap_single(np->pci_dev,
2014
- np->tx_dma[i], np->tx_skbuff[i]->len,
2015
- PCI_DMA_TODEVICE);
2013
+ dma_unmap_single(&np->pci_dev->dev, np->tx_dma[i],
2014
+ np->tx_skbuff[i]->len, DMA_TO_DEVICE);
20162015 dev_kfree_skb(np->tx_skbuff[i]);
20172016 dev->stats.tx_dropped++;
20182017 }
....@@ -2031,9 +2030,9 @@
20312030 np->rx_ring[i].cmd_status = 0;
20322031 np->rx_ring[i].addr = cpu_to_le32(0xBADF00D0); /* An invalid address. */
20332032 if (np->rx_skbuff[i]) {
2034
- pci_unmap_single(np->pci_dev, np->rx_dma[i],
2035
- buflen + NATSEMI_PADDING,
2036
- PCI_DMA_FROMDEVICE);
2033
+ dma_unmap_single(&np->pci_dev->dev, np->rx_dma[i],
2034
+ buflen + NATSEMI_PADDING,
2035
+ DMA_FROM_DEVICE);
20372036 dev_kfree_skb(np->rx_skbuff[i]);
20382037 }
20392038 np->rx_skbuff[i] = NULL;
....@@ -2049,9 +2048,9 @@
20492048 static void free_ring(struct net_device *dev)
20502049 {
20512050 struct netdev_private *np = netdev_priv(dev);
2052
- pci_free_consistent(np->pci_dev,
2053
- sizeof(struct netdev_desc) * (RX_RING_SIZE+TX_RING_SIZE),
2054
- np->rx_ring, np->ring_dma);
2051
+ dma_free_coherent(&np->pci_dev->dev,
2052
+ sizeof(struct netdev_desc) * (RX_RING_SIZE + TX_RING_SIZE),
2053
+ np->rx_ring, np->ring_dma);
20552054 }
20562055
20572056 static void reinit_rx(struct net_device *dev)
....@@ -2098,9 +2097,9 @@
20982097 entry = np->cur_tx % TX_RING_SIZE;
20992098
21002099 np->tx_skbuff[entry] = skb;
2101
- np->tx_dma[entry] = pci_map_single(np->pci_dev,
2102
- skb->data,skb->len, PCI_DMA_TODEVICE);
2103
- if (pci_dma_mapping_error(np->pci_dev, np->tx_dma[entry])) {
2100
+ np->tx_dma[entry] = dma_map_single(&np->pci_dev->dev, skb->data,
2101
+ skb->len, DMA_TO_DEVICE);
2102
+ if (dma_mapping_error(&np->pci_dev->dev, np->tx_dma[entry])) {
21042103 np->tx_skbuff[entry] = NULL;
21052104 dev_kfree_skb_irq(skb);
21062105 dev->stats.tx_dropped++;
....@@ -2166,11 +2165,10 @@
21662165 dev->stats.tx_window_errors++;
21672166 dev->stats.tx_errors++;
21682167 }
2169
- pci_unmap_single(np->pci_dev,np->tx_dma[entry],
2170
- np->tx_skbuff[entry]->len,
2171
- PCI_DMA_TODEVICE);
2168
+ dma_unmap_single(&np->pci_dev->dev, np->tx_dma[entry],
2169
+ np->tx_skbuff[entry]->len, DMA_TO_DEVICE);
21722170 /* Free the original skb. */
2173
- dev_kfree_skb_irq(np->tx_skbuff[entry]);
2171
+ dev_consume_skb_irq(np->tx_skbuff[entry]);
21742172 np->tx_skbuff[entry] = NULL;
21752173 }
21762174 if (netif_queue_stopped(dev) &&
....@@ -2356,21 +2354,22 @@
23562354 (skb = netdev_alloc_skb(dev, pkt_len + RX_OFFSET)) != NULL) {
23572355 /* 16 byte align the IP header */
23582356 skb_reserve(skb, RX_OFFSET);
2359
- pci_dma_sync_single_for_cpu(np->pci_dev,
2360
- np->rx_dma[entry],
2361
- buflen,
2362
- PCI_DMA_FROMDEVICE);
2357
+ dma_sync_single_for_cpu(&np->pci_dev->dev,
2358
+ np->rx_dma[entry],
2359
+ buflen,
2360
+ DMA_FROM_DEVICE);
23632361 skb_copy_to_linear_data(skb,
23642362 np->rx_skbuff[entry]->data, pkt_len);
23652363 skb_put(skb, pkt_len);
2366
- pci_dma_sync_single_for_device(np->pci_dev,
2367
- np->rx_dma[entry],
2368
- buflen,
2369
- PCI_DMA_FROMDEVICE);
2364
+ dma_sync_single_for_device(&np->pci_dev->dev,
2365
+ np->rx_dma[entry],
2366
+ buflen,
2367
+ DMA_FROM_DEVICE);
23702368 } else {
2371
- pci_unmap_single(np->pci_dev, np->rx_dma[entry],
2369
+ dma_unmap_single(&np->pci_dev->dev,
2370
+ np->rx_dma[entry],
23722371 buflen + NATSEMI_PADDING,
2373
- PCI_DMA_FROMDEVICE);
2372
+ DMA_FROM_DEVICE);
23742373 skb_put(skb = np->rx_skbuff[entry], pkt_len);
23752374 np->rx_skbuff[entry] = NULL;
23762375 }
....@@ -3078,7 +3077,7 @@
30783077 switch(cmd) {
30793078 case SIOCGMIIPHY: /* Get address of MII PHY in use. */
30803079 data->phy_id = np->phy_addr_external;
3081
- /* Fall Through */
3080
+ fallthrough;
30823081
30833082 case SIOCGMIIREG: /* Read MII PHY register. */
30843083 /* The phy_id is not enough to uniquely identify
....@@ -3243,8 +3242,6 @@
32433242 free_netdev (dev);
32443243 }
32453244
3246
-#ifdef CONFIG_PM
3247
-
32483245 /*
32493246 * The ns83815 chip doesn't have explicit RxStop bits.
32503247 * Kicking the Rx or Tx process for a new packet reenables the Rx process
....@@ -3271,9 +3268,9 @@
32713268 * Interrupts must be disabled, otherwise hands_off can cause irq storms.
32723269 */
32733270
3274
-static int natsemi_suspend (struct pci_dev *pdev, pm_message_t state)
3271
+static int __maybe_unused natsemi_suspend(struct device *dev_d)
32753272 {
3276
- struct net_device *dev = pci_get_drvdata (pdev);
3273
+ struct net_device *dev = dev_get_drvdata(dev_d);
32773274 struct netdev_private *np = netdev_priv(dev);
32783275 void __iomem * ioaddr = ns_ioaddr(dev);
32793276
....@@ -3322,11 +3319,10 @@
33223319 }
33233320
33243321
3325
-static int natsemi_resume (struct pci_dev *pdev)
3322
+static int __maybe_unused natsemi_resume(struct device *dev_d)
33263323 {
3327
- struct net_device *dev = pci_get_drvdata (pdev);
3324
+ struct net_device *dev = dev_get_drvdata(dev_d);
33283325 struct netdev_private *np = netdev_priv(dev);
3329
- int ret = 0;
33303326
33313327 rtnl_lock();
33323328 if (netif_device_present(dev))
....@@ -3335,12 +3331,6 @@
33353331 const int irq = np->pci_dev->irq;
33363332
33373333 BUG_ON(!np->hands_off);
3338
- ret = pci_enable_device(pdev);
3339
- if (ret < 0) {
3340
- dev_err(&pdev->dev,
3341
- "pci_enable_device() failed: %d\n", ret);
3342
- goto out;
3343
- }
33443334 /* pci_power_on(pdev); */
33453335
33463336 napi_enable(&np->napi);
....@@ -3360,20 +3350,17 @@
33603350 netif_device_attach(dev);
33613351 out:
33623352 rtnl_unlock();
3363
- return ret;
3353
+ return 0;
33643354 }
33653355
3366
-#endif /* CONFIG_PM */
3356
+static SIMPLE_DEV_PM_OPS(natsemi_pm_ops, natsemi_suspend, natsemi_resume);
33673357
33683358 static struct pci_driver natsemi_driver = {
33693359 .name = DRV_NAME,
33703360 .id_table = natsemi_pci_tbl,
33713361 .probe = natsemi_probe1,
33723362 .remove = natsemi_remove1,
3373
-#ifdef CONFIG_PM
3374
- .suspend = natsemi_suspend,
3375
- .resume = natsemi_resume,
3376
-#endif
3363
+ .driver.pm = &natsemi_pm_ops,
33773364 };
33783365
33793366 static int __init natsemi_init_mod (void)