hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/drivers/net/ethernet/atheros/atlx/atl1.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Copyright(c) 2005 - 2006 Attansic Corporation. All rights reserved.
34 * Copyright(c) 2006 - 2007 Chris Snook <csnook@redhat.com>
....@@ -5,23 +6,6 @@
56 *
67 * Derived from Intel e1000 driver
78 * Copyright(c) 1999 - 2005 Intel Corporation. All rights reserved.
8
- *
9
- * This program is free software; you can redistribute it and/or modify it
10
- * under the terms of the GNU General Public License as published by the Free
11
- * Software Foundation; either version 2 of the License, or (at your option)
12
- * any later version.
13
- *
14
- * This program is distributed in the hope that it will be useful, but WITHOUT
15
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
17
- * more details.
18
- *
19
- * You should have received a copy of the GNU General Public License along with
20
- * this program; if not, write to the Free Software Foundation, Inc., 59
21
- * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
- *
23
- * The full GNU General Public License is included in this distribution in the
24
- * file called COPYING.
259 *
2610 * Contact Information:
2711 * Xiong Huang <xiong.huang@atheros.com>
....@@ -63,7 +47,6 @@
6347 #include <linux/jiffies.h>
6448 #include <linux/mii.h>
6549 #include <linux/module.h>
66
-#include <linux/moduleparam.h>
6750 #include <linux/net.h>
6851 #include <linux/netdevice.h>
6952 #include <linux/pci.h>
....@@ -82,12 +65,10 @@
8265
8366 #include "atl1.h"
8467
85
-#define ATLX_DRIVER_VERSION "2.1.3"
8668 MODULE_AUTHOR("Xiong Huang <xiong.huang@atheros.com>, "
8769 "Chris Snook <csnook@redhat.com>, "
8870 "Jay Cliburn <jcliburn@gmail.com>");
8971 MODULE_LICENSE("GPL");
90
-MODULE_VERSION(ATLX_DRIVER_VERSION);
9172
9273 /* Temporary hack for merging atl1 and atl2 */
9374 #include "atlx.c"
....@@ -1061,7 +1042,7 @@
10611042 * each ring/block may need up to 8 bytes for alignment, hence the
10621043 * additional 40 bytes tacked onto the end.
10631044 */
1064
- ring_header->size = size =
1045
+ ring_header->size =
10651046 sizeof(struct tx_packet_desc) * tpd_ring->count
10661047 + sizeof(struct rx_free_desc) * rfd_ring->count
10671048 + sizeof(struct rx_return_desc) * rrd_ring->count
....@@ -1069,15 +1050,13 @@
10691050 + sizeof(struct stats_msg_block)
10701051 + 40;
10711052
1072
- ring_header->desc = pci_alloc_consistent(pdev, ring_header->size,
1073
- &ring_header->dma);
1053
+ ring_header->desc = dma_alloc_coherent(&pdev->dev, ring_header->size,
1054
+ &ring_header->dma, GFP_KERNEL);
10741055 if (unlikely(!ring_header->desc)) {
10751056 if (netif_msg_drv(adapter))
1076
- dev_err(&pdev->dev, "pci_alloc_consistent failed\n");
1057
+ dev_err(&pdev->dev, "dma_alloc_coherent failed\n");
10771058 goto err_nomem;
10781059 }
1079
-
1080
- memset(ring_header->desc, 0, ring_header->size);
10811060
10821061 /* init TPD ring */
10831062 tpd_ring->dma = ring_header->dma;
....@@ -1157,8 +1136,8 @@
11571136 for (i = 0; i < rfd_ring->count; i++) {
11581137 buffer_info = &rfd_ring->buffer_info[i];
11591138 if (buffer_info->dma) {
1160
- pci_unmap_page(pdev, buffer_info->dma,
1161
- buffer_info->length, PCI_DMA_FROMDEVICE);
1139
+ dma_unmap_page(&pdev->dev, buffer_info->dma,
1140
+ buffer_info->length, DMA_FROM_DEVICE);
11621141 buffer_info->dma = 0;
11631142 }
11641143 if (buffer_info->skb) {
....@@ -1196,8 +1175,8 @@
11961175 for (i = 0; i < tpd_ring->count; i++) {
11971176 buffer_info = &tpd_ring->buffer_info[i];
11981177 if (buffer_info->dma) {
1199
- pci_unmap_page(pdev, buffer_info->dma,
1200
- buffer_info->length, PCI_DMA_TODEVICE);
1178
+ dma_unmap_page(&pdev->dev, buffer_info->dma,
1179
+ buffer_info->length, DMA_TO_DEVICE);
12011180 buffer_info->dma = 0;
12021181 }
12031182 }
....@@ -1238,8 +1217,8 @@
12381217 atl1_clean_rx_ring(adapter);
12391218
12401219 kfree(tpd_ring->buffer_info);
1241
- pci_free_consistent(pdev, ring_header->size, ring_header->desc,
1242
- ring_header->dma);
1220
+ dma_free_coherent(&pdev->dev, ring_header->size, ring_header->desc,
1221
+ ring_header->dma);
12431222
12441223 tpd_ring->buffer_info = NULL;
12451224 tpd_ring->desc = NULL;
....@@ -1722,7 +1701,7 @@
17221701 adapter->soft_stats.scc += smb->tx_1_col;
17231702 adapter->soft_stats.mcc += smb->tx_2_col;
17241703 adapter->soft_stats.latecol += smb->tx_late_col;
1725
- adapter->soft_stats.tx_underun += smb->tx_underrun;
1704
+ adapter->soft_stats.tx_underrun += smb->tx_underrun;
17261705 adapter->soft_stats.tx_trunc += smb->tx_trunc;
17271706 adapter->soft_stats.tx_pause += smb->tx_pause;
17281707
....@@ -1887,9 +1866,9 @@
18871866 buffer_info->length = (u16) adapter->rx_buffer_len;
18881867 page = virt_to_page(skb->data);
18891868 offset = offset_in_page(skb->data);
1890
- buffer_info->dma = pci_map_page(pdev, page, offset,
1869
+ buffer_info->dma = dma_map_page(&pdev->dev, page, offset,
18911870 adapter->rx_buffer_len,
1892
- PCI_DMA_FROMDEVICE);
1871
+ DMA_FROM_DEVICE);
18931872 rfd_desc->buffer_addr = cpu_to_le64(buffer_info->dma);
18941873 rfd_desc->buf_len = cpu_to_le16(adapter->rx_buffer_len);
18951874 rfd_desc->coalese = 0;
....@@ -2013,8 +1992,8 @@
20131992 }
20141993
20151994 /* Good Receive */
2016
- pci_unmap_page(adapter->pdev, buffer_info->dma,
2017
- buffer_info->length, PCI_DMA_FROMDEVICE);
1995
+ dma_unmap_page(&adapter->pdev->dev, buffer_info->dma,
1996
+ buffer_info->length, DMA_FROM_DEVICE);
20181997 buffer_info->dma = 0;
20191998 skb = buffer_info->skb;
20201999 length = le16_to_cpu(rrd->xsz.xsum_sz.pkt_size);
....@@ -2083,13 +2062,13 @@
20832062 while (cmb_tpd_next_to_clean != sw_tpd_next_to_clean) {
20842063 buffer_info = &tpd_ring->buffer_info[sw_tpd_next_to_clean];
20852064 if (buffer_info->dma) {
2086
- pci_unmap_page(adapter->pdev, buffer_info->dma,
2087
- buffer_info->length, PCI_DMA_TODEVICE);
2065
+ dma_unmap_page(&adapter->pdev->dev, buffer_info->dma,
2066
+ buffer_info->length, DMA_TO_DEVICE);
20882067 buffer_info->dma = 0;
20892068 }
20902069
20912070 if (buffer_info->skb) {
2092
- dev_kfree_skb_irq(buffer_info->skb);
2071
+ dev_consume_skb_irq(buffer_info->skb);
20932072 buffer_info->skb = NULL;
20942073 }
20952074
....@@ -2231,9 +2210,9 @@
22312210 buffer_info->length = hdr_len;
22322211 page = virt_to_page(skb->data);
22332212 offset = offset_in_page(skb->data);
2234
- buffer_info->dma = pci_map_page(adapter->pdev, page,
2213
+ buffer_info->dma = dma_map_page(&adapter->pdev->dev, page,
22352214 offset, hdr_len,
2236
- PCI_DMA_TODEVICE);
2215
+ DMA_TO_DEVICE);
22372216
22382217 if (++next_to_use == tpd_ring->count)
22392218 next_to_use = 0;
....@@ -2256,9 +2235,10 @@
22562235 (hdr_len + i * ATL1_MAX_TX_BUF_LEN));
22572236 offset = offset_in_page(skb->data +
22582237 (hdr_len + i * ATL1_MAX_TX_BUF_LEN));
2259
- buffer_info->dma = pci_map_page(adapter->pdev,
2260
- page, offset, buffer_info->length,
2261
- PCI_DMA_TODEVICE);
2238
+ buffer_info->dma = dma_map_page(&adapter->pdev->dev,
2239
+ page, offset,
2240
+ buffer_info->length,
2241
+ DMA_TO_DEVICE);
22622242 if (++next_to_use == tpd_ring->count)
22632243 next_to_use = 0;
22642244 }
....@@ -2268,17 +2248,17 @@
22682248 buffer_info->length = buf_len;
22692249 page = virt_to_page(skb->data);
22702250 offset = offset_in_page(skb->data);
2271
- buffer_info->dma = pci_map_page(adapter->pdev, page,
2272
- offset, buf_len, PCI_DMA_TODEVICE);
2251
+ buffer_info->dma = dma_map_page(&adapter->pdev->dev, page,
2252
+ offset, buf_len,
2253
+ DMA_TO_DEVICE);
22732254 if (++next_to_use == tpd_ring->count)
22742255 next_to_use = 0;
22752256 }
22762257
22772258 for (f = 0; f < nr_frags; f++) {
2278
- const struct skb_frag_struct *frag;
2259
+ const skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
22792260 u16 i, nseg;
22802261
2281
- frag = &skb_shinfo(skb)->frags[f];
22822262 buf_len = skb_frag_size(frag);
22832263
22842264 nseg = (buf_len + ATL1_MAX_TX_BUF_LEN - 1) /
....@@ -2440,7 +2420,6 @@
24402420 atl1_tx_map(adapter, skb, ptpd);
24412421 atl1_tx_queue(adapter, count, ptpd);
24422422 atl1_update_mailbox(adapter);
2443
- mmiowb();
24442423 return NETDEV_TX_OK;
24452424 }
24462425
....@@ -2573,7 +2552,7 @@
25732552
25742553 /**
25752554 * atl1_phy_config - Timer Call-back
2576
- * @data: pointer to netdev cast into an unsigned long
2555
+ * @t: timer_list containing pointer to netdev cast into an unsigned long
25772556 */
25782557 static void atl1_phy_config(struct timer_list *t)
25792558 {
....@@ -2774,8 +2753,7 @@
27742753 #ifdef CONFIG_PM_SLEEP
27752754 static int atl1_suspend(struct device *dev)
27762755 {
2777
- struct pci_dev *pdev = to_pci_dev(dev);
2778
- struct net_device *netdev = pci_get_drvdata(pdev);
2756
+ struct net_device *netdev = dev_get_drvdata(dev);
27792757 struct atl1_adapter *adapter = netdev_priv(netdev);
27802758 struct atl1_hw *hw = &adapter->hw;
27812759 u32 ctrl = 0;
....@@ -2800,7 +2778,7 @@
28002778 val = atl1_get_speed_and_duplex(hw, &speed, &duplex);
28012779 if (val) {
28022780 if (netif_msg_ifdown(adapter))
2803
- dev_printk(KERN_DEBUG, &pdev->dev,
2781
+ dev_printk(KERN_DEBUG, dev,
28042782 "error getting speed/duplex\n");
28052783 goto disable_wol;
28062784 }
....@@ -2857,8 +2835,7 @@
28572835
28582836 static int atl1_resume(struct device *dev)
28592837 {
2860
- struct pci_dev *pdev = to_pci_dev(dev);
2861
- struct net_device *netdev = pci_get_drvdata(pdev);
2838
+ struct net_device *netdev = dev_get_drvdata(dev);
28622839 struct atl1_adapter *adapter = netdev_priv(netdev);
28632840
28642841 iowrite32(0, adapter->hw.hw_addr + REG_WOL_CTRL);
....@@ -2947,7 +2924,7 @@
29472924 * various kernel subsystems to support the mechanics required by a
29482925 * fixed-high-32-bit system.
29492926 */
2950
- err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
2927
+ err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
29512928 if (err) {
29522929 dev_err(&pdev->dev, "no usable DMA configuration\n");
29532930 goto err_dma;
....@@ -2988,8 +2965,6 @@
29882965 /* get device revision number */
29892966 adapter->hw.dev_rev = ioread16(adapter->hw.hw_addr +
29902967 (REG_MASTER_CTRL + 2));
2991
- if (netif_msg_probe(adapter))
2992
- dev_info(&pdev->dev, "version %s\n", ATLX_DRIVER_VERSION);
29932968
29942969 /* set default ring resource counts */
29952970 adapter->rfd_ring.count = adapter->rrd_ring.count = ATL1_DEFAULT_RFD;
....@@ -3180,7 +3155,7 @@
31803155 {"tx_deferred_ok", ATL1_STAT(soft_stats.deffer)},
31813156 {"tx_single_coll_ok", ATL1_STAT(soft_stats.scc)},
31823157 {"tx_multi_coll_ok", ATL1_STAT(soft_stats.mcc)},
3183
- {"tx_underun", ATL1_STAT(soft_stats.tx_underun)},
3158
+ {"tx_underrun", ATL1_STAT(soft_stats.tx_underrun)},
31843159 {"tx_trunc", ATL1_STAT(soft_stats.tx_trunc)},
31853160 {"tx_pause", ATL1_STAT(soft_stats.tx_pause)},
31863161 {"rx_pause", ATL1_STAT(soft_stats.rx_pause)},
....@@ -3278,7 +3253,6 @@
32783253 u16 phy_data;
32793254 int ret_val = 0;
32803255 u16 old_media_type = hw->media_type;
3281
- u32 advertising;
32823256
32833257 if (netif_running(adapter->netdev)) {
32843258 if (netif_msg_link(adapter))
....@@ -3312,25 +3286,7 @@
33123286 hw->media_type = MEDIA_TYPE_10M_HALF;
33133287 }
33143288 }
3315
- switch (hw->media_type) {
3316
- case MEDIA_TYPE_AUTO_SENSOR:
3317
- advertising =
3318
- ADVERTISED_10baseT_Half |
3319
- ADVERTISED_10baseT_Full |
3320
- ADVERTISED_100baseT_Half |
3321
- ADVERTISED_100baseT_Full |
3322
- ADVERTISED_1000baseT_Full |
3323
- ADVERTISED_Autoneg | ADVERTISED_TP;
3324
- break;
3325
- case MEDIA_TYPE_1000M_FULL:
3326
- advertising =
3327
- ADVERTISED_1000baseT_Full |
3328
- ADVERTISED_Autoneg | ADVERTISED_TP;
3329
- break;
3330
- default:
3331
- advertising = 0;
3332
- break;
3333
- }
3289
+
33343290 if (atl1_phy_setup_autoneg_adv(hw)) {
33353291 ret_val = -EINVAL;
33363292 if (netif_msg_link(adapter))
....@@ -3386,8 +3342,6 @@
33863342 struct atl1_adapter *adapter = netdev_priv(netdev);
33873343
33883344 strlcpy(drvinfo->driver, ATLX_DRIVER_NAME, sizeof(drvinfo->driver));
3389
- strlcpy(drvinfo->version, ATLX_DRIVER_VERSION,
3390
- sizeof(drvinfo->version));
33913345 strlcpy(drvinfo->bus_info, pci_name(adapter->pdev),
33923346 sizeof(drvinfo->bus_info));
33933347 }