forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
....@@ -1,30 +1,14 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Copyright(c) 2007 Atheros Corporation. All rights reserved.
34 *
45 * Derived from Intel e1000 driver
56 * Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
6
- *
7
- * This program is free software; you can redistribute it and/or modify it
8
- * under the terms of the GNU General Public License as published by the Free
9
- * Software Foundation; either version 2 of the License, or (at your option)
10
- * any later version.
11
- *
12
- * This program is distributed in the hope that it will be useful, but WITHOUT
13
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15
- * more details.
16
- *
17
- * You should have received a copy of the GNU General Public License along with
18
- * this program; if not, write to the Free Software Foundation, Inc., 59
19
- * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
207 */
218
229 #include "atl1e.h"
2310
24
-#define DRV_VERSION "1.0.0.7-NAPI"
25
-
2611 char atl1e_driver_name[] = "ATL1E";
27
-char atl1e_driver_version[] = DRV_VERSION;
2812 #define PCI_DEVICE_ID_ATTANSIC_L1E 0x1026
2913 /*
3014 * atl1e_pci_tbl - PCI Device ID Table
....@@ -46,7 +30,6 @@
4630 MODULE_AUTHOR("Atheros Corporation, <xiong.huang@atheros.com>, Jie Yang <jie.yang@atheros.com>");
4731 MODULE_DESCRIPTION("Atheros 1000M Ethernet Network Driver");
4832 MODULE_LICENSE("GPL");
49
-MODULE_VERSION(DRV_VERSION);
5033
5134 static void atl1e_setup_mac_ctrl(struct atl1e_adapter *adapter);
5235
....@@ -128,7 +111,7 @@
128111
129112 /**
130113 * atl1e_phy_config - Timer Call-back
131
- * @data: pointer to netdev cast into an unsigned long
114
+ * @t: timer list containing pointer to netdev cast into an unsigned long
132115 */
133116 static void atl1e_phy_config(struct timer_list *t)
134117 {
....@@ -144,8 +127,6 @@
144127
145128 void atl1e_reinit_locked(struct atl1e_adapter *adapter)
146129 {
147
-
148
- WARN_ON(in_interrupt());
149130 while (test_and_set_bit(__AT_RESETTING, &adapter->flags))
150131 msleep(1);
151132 atl1e_down(adapter);
....@@ -213,7 +194,7 @@
213194
214195 /**
215196 * atl1e_link_chg_task - deal with link change event Out of interrupt context
216
- * @netdev: network interface device structure
197
+ * @work: work struct with driver info
217198 */
218199 static void atl1e_link_chg_task(struct work_struct *work)
219200 {
....@@ -263,8 +244,9 @@
263244 /**
264245 * atl1e_tx_timeout - Respond to a Tx Hang
265246 * @netdev: network interface device structure
247
+ * @txqueue: the index of the hanging queue
266248 */
267
-static void atl1e_tx_timeout(struct net_device *netdev)
249
+static void atl1e_tx_timeout(struct net_device *netdev, unsigned int txqueue)
268250 {
269251 struct atl1e_adapter *adapter = netdev_priv(netdev);
270252
....@@ -671,11 +653,13 @@
671653 tx_buffer = &tx_ring->tx_buffer[index];
672654 if (tx_buffer->dma) {
673655 if (tx_buffer->flags & ATL1E_TX_PCIMAP_SINGLE)
674
- pci_unmap_single(pdev, tx_buffer->dma,
675
- tx_buffer->length, PCI_DMA_TODEVICE);
656
+ dma_unmap_single(&pdev->dev, tx_buffer->dma,
657
+ tx_buffer->length,
658
+ DMA_TO_DEVICE);
676659 else if (tx_buffer->flags & ATL1E_TX_PCIMAP_PAGE)
677
- pci_unmap_page(pdev, tx_buffer->dma,
678
- tx_buffer->length, PCI_DMA_TODEVICE);
660
+ dma_unmap_page(&pdev->dev, tx_buffer->dma,
661
+ tx_buffer->length,
662
+ DMA_TO_DEVICE);
679663 tx_buffer->dma = 0;
680664 }
681665 }
....@@ -791,8 +775,8 @@
791775 atl1e_clean_rx_ring(adapter);
792776
793777 if (adapter->ring_vir_addr) {
794
- pci_free_consistent(pdev, adapter->ring_size,
795
- adapter->ring_vir_addr, adapter->ring_dma);
778
+ dma_free_coherent(&pdev->dev, adapter->ring_size,
779
+ adapter->ring_vir_addr, adapter->ring_dma);
796780 adapter->ring_vir_addr = NULL;
797781 }
798782
....@@ -827,11 +811,12 @@
827811 /* real ring DMA buffer */
828812
829813 size = adapter->ring_size;
830
- adapter->ring_vir_addr = pci_zalloc_consistent(pdev, adapter->ring_size,
831
- &adapter->ring_dma);
814
+ adapter->ring_vir_addr = dma_alloc_coherent(&pdev->dev,
815
+ adapter->ring_size,
816
+ &adapter->ring_dma, GFP_KERNEL);
832817 if (adapter->ring_vir_addr == NULL) {
833818 netdev_err(adapter->netdev,
834
- "pci_alloc_consistent failed, size = D%d\n", size);
819
+ "dma_alloc_coherent failed, size = D%d\n", size);
835820 return -ENOMEM;
836821 }
837822
....@@ -887,8 +872,8 @@
887872 return 0;
888873 failed:
889874 if (adapter->ring_vir_addr != NULL) {
890
- pci_free_consistent(pdev, adapter->ring_size,
891
- adapter->ring_vir_addr, adapter->ring_dma);
875
+ dma_free_coherent(&pdev->dev, adapter->ring_size,
876
+ adapter->ring_vir_addr, adapter->ring_dma);
892877 adapter->ring_vir_addr = NULL;
893878 }
894879 return err;
....@@ -1250,16 +1235,20 @@
12501235 tx_buffer = &tx_ring->tx_buffer[next_to_clean];
12511236 if (tx_buffer->dma) {
12521237 if (tx_buffer->flags & ATL1E_TX_PCIMAP_SINGLE)
1253
- pci_unmap_single(adapter->pdev, tx_buffer->dma,
1254
- tx_buffer->length, PCI_DMA_TODEVICE);
1238
+ dma_unmap_single(&adapter->pdev->dev,
1239
+ tx_buffer->dma,
1240
+ tx_buffer->length,
1241
+ DMA_TO_DEVICE);
12551242 else if (tx_buffer->flags & ATL1E_TX_PCIMAP_PAGE)
1256
- pci_unmap_page(adapter->pdev, tx_buffer->dma,
1257
- tx_buffer->length, PCI_DMA_TODEVICE);
1243
+ dma_unmap_page(&adapter->pdev->dev,
1244
+ tx_buffer->dma,
1245
+ tx_buffer->length,
1246
+ DMA_TO_DEVICE);
12581247 tx_buffer->dma = 0;
12591248 }
12601249
12611250 if (tx_buffer->skb) {
1262
- dev_kfree_skb_irq(tx_buffer->skb);
1251
+ dev_consume_skb_irq(tx_buffer->skb);
12631252 tx_buffer->skb = NULL;
12641253 }
12651254
....@@ -1512,6 +1501,8 @@
15121501
15131502 /**
15141503 * atl1e_clean - NAPI Rx polling callback
1504
+ * @napi: napi info
1505
+ * @budget: number of packets to clean
15151506 */
15161507 static int atl1e_clean(struct napi_struct *napi, int budget)
15171508 {
....@@ -1651,8 +1642,11 @@
16511642 real_len = (((unsigned char *)ip_hdr(skb) - skb->data)
16521643 + ntohs(ip_hdr(skb)->tot_len));
16531644
1654
- if (real_len < skb->len)
1655
- pskb_trim(skb, real_len);
1645
+ if (real_len < skb->len) {
1646
+ err = pskb_trim(skb, real_len);
1647
+ if (err)
1648
+ return err;
1649
+ }
16561650
16571651 hdr_len = (skb_transport_offset(skb) + tcp_hdrlen(skb));
16581652 if (unlikely(skb->len == hdr_len)) {
....@@ -1727,8 +1721,9 @@
17271721
17281722 tx_buffer = atl1e_get_tx_buffer(adapter, use_tpd);
17291723 tx_buffer->length = map_len;
1730
- tx_buffer->dma = pci_map_single(adapter->pdev,
1731
- skb->data, hdr_len, PCI_DMA_TODEVICE);
1724
+ tx_buffer->dma = dma_map_single(&adapter->pdev->dev,
1725
+ skb->data, hdr_len,
1726
+ DMA_TO_DEVICE);
17321727 if (dma_mapping_error(&adapter->pdev->dev, tx_buffer->dma))
17331728 return -ENOSPC;
17341729
....@@ -1756,8 +1751,9 @@
17561751 ((buf_len - mapped_len) >= MAX_TX_BUF_LEN) ?
17571752 MAX_TX_BUF_LEN : (buf_len - mapped_len);
17581753 tx_buffer->dma =
1759
- pci_map_single(adapter->pdev, skb->data + mapped_len,
1760
- map_len, PCI_DMA_TODEVICE);
1754
+ dma_map_single(&adapter->pdev->dev,
1755
+ skb->data + mapped_len, map_len,
1756
+ DMA_TO_DEVICE);
17611757
17621758 if (dma_mapping_error(&adapter->pdev->dev, tx_buffer->dma)) {
17631759 /* We need to unwind the mappings we've done */
....@@ -1766,8 +1762,10 @@
17661762 while (adapter->tx_ring.next_to_use != ring_end) {
17671763 tpd = atl1e_get_tpd(adapter);
17681764 tx_buffer = atl1e_get_tx_buffer(adapter, tpd);
1769
- pci_unmap_single(adapter->pdev, tx_buffer->dma,
1770
- tx_buffer->length, PCI_DMA_TODEVICE);
1765
+ dma_unmap_single(&adapter->pdev->dev,
1766
+ tx_buffer->dma,
1767
+ tx_buffer->length,
1768
+ DMA_TO_DEVICE);
17711769 }
17721770 /* Reset the tx rings next pointer */
17731771 adapter->tx_ring.next_to_use = ring_start;
....@@ -1783,11 +1781,10 @@
17831781 }
17841782
17851783 for (f = 0; f < nr_frags; f++) {
1786
- const struct skb_frag_struct *frag;
1784
+ const skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
17871785 u16 i;
17881786 u16 seg_num;
17891787
1790
- frag = &skb_shinfo(skb)->frags[f];
17911788 buf_len = skb_frag_size(frag);
17921789
17931790 seg_num = (buf_len + MAX_TX_BUF_LEN - 1) / MAX_TX_BUF_LEN;
....@@ -2318,8 +2315,8 @@
23182315 * various kernel subsystems to support the mechanics required by a
23192316 * fixed-high-32-bit system.
23202317 */
2321
- if ((pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) != 0) ||
2322
- (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)) != 0)) {
2318
+ err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
2319
+ if (err) {
23232320 dev_err(&pdev->dev, "No usable DMA configuration,aborting\n");
23242321 goto err_dma;
23252322 }