hc
2024-05-10 23fa18eaa71266feff7ba8d83022d9e1cc83c65a
kernel/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
....@@ -1,29 +1,14 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Copyright(c) 2008 - 2009 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 "atl1c.h"
2310
24
-#define ATL1C_DRV_VERSION "1.0.1.1-NAPI"
2511 char atl1c_driver_name[] = "atl1c";
26
-char atl1c_driver_version[] = ATL1C_DRV_VERSION;
2712
2813 /*
2914 * atl1c_pci_tbl - PCI Device ID Table
....@@ -50,7 +35,6 @@
5035 MODULE_AUTHOR("Qualcomm Atheros Inc., <nic-devel@qualcomm.com>");
5136 MODULE_DESCRIPTION("Qualcomm Atheros 100/1000M Ethernet Network Driver");
5237 MODULE_LICENSE("GPL");
53
-MODULE_VERSION(ATL1C_DRV_VERSION);
5438
5539 static int atl1c_stop_mac(struct atl1c_hw *hw);
5640 static void atl1c_disable_l0s_l1(struct atl1c_hw *hw);
....@@ -220,7 +204,7 @@
220204
221205 /**
222206 * atl1c_phy_config - Timer Call-back
223
- * @data: pointer to netdev cast into an unsigned long
207
+ * @t: timer list containing pointer to netdev cast into an unsigned long
224208 */
225209 static void atl1c_phy_config(struct timer_list *t)
226210 {
....@@ -236,7 +220,6 @@
236220
237221 void atl1c_reinit_locked(struct atl1c_adapter *adapter)
238222 {
239
- WARN_ON(in_interrupt());
240223 atl1c_down(adapter);
241224 atl1c_up(adapter);
242225 clear_bit(__AT_RESETTING, &adapter->flags);
....@@ -362,8 +345,9 @@
362345 /**
363346 * atl1c_tx_timeout - Respond to a Tx Hang
364347 * @netdev: network interface device structure
348
+ * @txqueue: index of hanging tx queue
365349 */
366
-static void atl1c_tx_timeout(struct net_device *netdev)
350
+static void atl1c_tx_timeout(struct net_device *netdev, unsigned int txqueue)
367351 {
368352 struct atl1c_adapter *adapter = netdev_priv(netdev);
369353
....@@ -842,16 +826,16 @@
842826 return;
843827 if (buffer_info->dma) {
844828 if (buffer_info->flags & ATL1C_PCIMAP_FROMDEVICE)
845
- pci_driection = PCI_DMA_FROMDEVICE;
829
+ pci_driection = DMA_FROM_DEVICE;
846830 else
847
- pci_driection = PCI_DMA_TODEVICE;
831
+ pci_driection = DMA_TO_DEVICE;
848832
849833 if (buffer_info->flags & ATL1C_PCIMAP_SINGLE)
850
- pci_unmap_single(pdev, buffer_info->dma,
851
- buffer_info->length, pci_driection);
834
+ dma_unmap_single(&pdev->dev, buffer_info->dma,
835
+ buffer_info->length, pci_driection);
852836 else if (buffer_info->flags & ATL1C_PCIMAP_PAGE)
853
- pci_unmap_page(pdev, buffer_info->dma,
854
- buffer_info->length, pci_driection);
837
+ dma_unmap_page(&pdev->dev, buffer_info->dma,
838
+ buffer_info->length, pci_driection);
855839 }
856840 if (buffer_info->skb)
857841 dev_consume_skb_any(buffer_info->skb);
....@@ -862,6 +846,7 @@
862846 /**
863847 * atl1c_clean_tx_ring - Free Tx-skb
864848 * @adapter: board private structure
849
+ * @type: type of transmit queue
865850 */
866851 static void atl1c_clean_tx_ring(struct atl1c_adapter *adapter,
867852 enum atl1c_trans_queue type)
....@@ -949,9 +934,8 @@
949934 {
950935 struct pci_dev *pdev = adapter->pdev;
951936
952
- pci_free_consistent(pdev, adapter->ring_header.size,
953
- adapter->ring_header.desc,
954
- adapter->ring_header.dma);
937
+ dma_free_coherent(&pdev->dev, adapter->ring_header.size,
938
+ adapter->ring_header.desc, adapter->ring_header.dma);
955939 adapter->ring_header.desc = NULL;
956940
957941 /* Note: just free tdp_ring.buffer_info,
....@@ -1019,8 +1003,8 @@
10191003 sizeof(struct atl1c_recv_ret_status) * rx_desc_count +
10201004 8 * 4;
10211005
1022
- ring_header->desc = dma_zalloc_coherent(&pdev->dev, ring_header->size,
1023
- &ring_header->dma, GFP_KERNEL);
1006
+ ring_header->desc = dma_alloc_coherent(&pdev->dev, ring_header->size,
1007
+ &ring_header->dma, GFP_KERNEL);
10241008 if (unlikely(!ring_header->desc)) {
10251009 dev_err(&pdev->dev, "could not get memory for DMA buffer\n");
10261010 goto err_nomem;
....@@ -1202,7 +1186,7 @@
12021186 struct atl1c_hw *hw = &adapter->hw;
12031187 u32 mac, txq, rxq;
12041188
1205
- hw->mac_duplex = adapter->link_duplex == FULL_DUPLEX ? true : false;
1189
+ hw->mac_duplex = adapter->link_duplex == FULL_DUPLEX;
12061190 hw->mac_speed = adapter->link_speed == SPEED_1000 ?
12071191 atl1c_mac_speed_1000 : atl1c_mac_speed_10_100;
12081192
....@@ -1733,10 +1717,9 @@
17331717 ATL1C_SET_BUFFER_STATE(buffer_info, ATL1C_BUFFER_BUSY);
17341718 buffer_info->skb = skb;
17351719 buffer_info->length = adapter->rx_buffer_len;
1736
- mapping = pci_map_single(pdev, vir_addr,
1737
- buffer_info->length,
1738
- PCI_DMA_FROMDEVICE);
1739
- if (unlikely(pci_dma_mapping_error(pdev, mapping))) {
1720
+ mapping = dma_map_single(&pdev->dev, vir_addr,
1721
+ buffer_info->length, DMA_FROM_DEVICE);
1722
+ if (unlikely(dma_mapping_error(&pdev->dev, mapping))) {
17401723 dev_kfree_skb(skb);
17411724 buffer_info->skb = NULL;
17421725 buffer_info->length = 0;
....@@ -1833,10 +1816,10 @@
18331816 atl1c_clean_rrd(rrd_ring, rrs, rfd_num);
18341817 if (rrs->word3 & (RRS_RX_ERR_SUM | RRS_802_3_LEN_ERR)) {
18351818 atl1c_clean_rfd(rfd_ring, rrs, rfd_num);
1836
- if (netif_msg_rx_err(adapter))
1837
- dev_warn(&pdev->dev,
1838
- "wrong packet! rrs word3 is %x\n",
1839
- rrs->word3);
1819
+ if (netif_msg_rx_err(adapter))
1820
+ dev_warn(&pdev->dev,
1821
+ "wrong packet! rrs word3 is %x\n",
1822
+ rrs->word3);
18401823 continue;
18411824 }
18421825
....@@ -1847,8 +1830,8 @@
18471830 rfd_index = (rrs->word0 >> RRS_RX_RFD_INDEX_SHIFT) &
18481831 RRS_RX_RFD_INDEX_MASK;
18491832 buffer_info = &rfd_ring->buffer_info[rfd_index];
1850
- pci_unmap_single(pdev, buffer_info->dma,
1851
- buffer_info->length, PCI_DMA_FROMDEVICE);
1833
+ dma_unmap_single(&pdev->dev, buffer_info->dma,
1834
+ buffer_info->length, DMA_FROM_DEVICE);
18521835 skb = buffer_info->skb;
18531836 } else {
18541837 /* TODO */
....@@ -1879,6 +1862,8 @@
18791862
18801863 /**
18811864 * atl1c_clean - NAPI Rx polling callback
1865
+ * @napi: napi info
1866
+ * @budget: limit of packets to clean
18821867 */
18831868 static int atl1c_clean(struct napi_struct *napi, int budget)
18841869 {
....@@ -2002,8 +1987,11 @@
20021987 real_len = (((unsigned char *)ip_hdr(skb) - skb->data)
20031988 + ntohs(ip_hdr(skb)->tot_len));
20041989
2005
- if (real_len < skb->len)
2006
- pskb_trim(skb, real_len);
1990
+ if (real_len < skb->len) {
1991
+ err = pskb_trim(skb, real_len);
1992
+ if (err)
1993
+ return err;
1994
+ }
20071995
20081996 hdr_len = (skb_transport_offset(skb) + tcp_hdrlen(skb));
20091997 if (unlikely(skb->len == hdr_len)) {
....@@ -2038,10 +2026,8 @@
20382026 "IPV6 tso with zero data??\n");
20392027 goto check_sum;
20402028 } else
2041
- tcp_hdr(skb)->check = ~csum_ipv6_magic(
2042
- &ipv6_hdr(skb)->saddr,
2043
- &ipv6_hdr(skb)->daddr,
2044
- 0, IPPROTO_TCP, 0);
2029
+ tcp_v6_gso_csum_prep(skb);
2030
+
20452031 etpd->word1 |= 1 << TPD_LSO_EN_SHIFT;
20462032 etpd->word1 |= 1 << TPD_LSO_VER_SHIFT;
20472033 etpd->pkt_len = cpu_to_le32(skb->len);
....@@ -2124,10 +2110,10 @@
21242110
21252111 buffer_info = atl1c_get_tx_buffer(adapter, use_tpd);
21262112 buffer_info->length = map_len;
2127
- buffer_info->dma = pci_map_single(adapter->pdev,
2128
- skb->data, hdr_len, PCI_DMA_TODEVICE);
2129
- if (unlikely(pci_dma_mapping_error(adapter->pdev,
2130
- buffer_info->dma)))
2113
+ buffer_info->dma = dma_map_single(&adapter->pdev->dev,
2114
+ skb->data, hdr_len,
2115
+ DMA_TO_DEVICE);
2116
+ if (unlikely(dma_mapping_error(&adapter->pdev->dev, buffer_info->dma)))
21312117 goto err_dma;
21322118 ATL1C_SET_BUFFER_STATE(buffer_info, ATL1C_BUFFER_BUSY);
21332119 ATL1C_SET_PCIMAP_TYPE(buffer_info, ATL1C_PCIMAP_SINGLE,
....@@ -2149,10 +2135,10 @@
21492135 buffer_info = atl1c_get_tx_buffer(adapter, use_tpd);
21502136 buffer_info->length = buf_len - mapped_len;
21512137 buffer_info->dma =
2152
- pci_map_single(adapter->pdev, skb->data + mapped_len,
2153
- buffer_info->length, PCI_DMA_TODEVICE);
2154
- if (unlikely(pci_dma_mapping_error(adapter->pdev,
2155
- buffer_info->dma)))
2138
+ dma_map_single(&adapter->pdev->dev,
2139
+ skb->data + mapped_len,
2140
+ buffer_info->length, DMA_TO_DEVICE);
2141
+ if (unlikely(dma_mapping_error(&adapter->pdev->dev, buffer_info->dma)))
21562142 goto err_dma;
21572143
21582144 ATL1C_SET_BUFFER_STATE(buffer_info, ATL1C_BUFFER_BUSY);
....@@ -2163,9 +2149,7 @@
21632149 }
21642150
21652151 for (f = 0; f < nr_frags; f++) {
2166
- struct skb_frag_struct *frag;
2167
-
2168
- frag = &skb_shinfo(skb)->frags[f];
2152
+ skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
21692153
21702154 use_tpd = atl1c_get_tpd(adapter, type);
21712155 memcpy(use_tpd, tpd, sizeof(struct atl1c_tpd_desc));
....@@ -2214,7 +2198,7 @@
22142198 struct net_device *netdev)
22152199 {
22162200 struct atl1c_adapter *adapter = netdev_priv(netdev);
2217
- u16 tpd_req = 1;
2201
+ u16 tpd_req;
22182202 struct atl1c_tpd_desc *tpd;
22192203 enum atl1c_trans_queue type = atl1c_trans_normal;
22202204
....@@ -2435,8 +2419,7 @@
24352419
24362420 static int atl1c_suspend(struct device *dev)
24372421 {
2438
- struct pci_dev *pdev = to_pci_dev(dev);
2439
- struct net_device *netdev = pci_get_drvdata(pdev);
2422
+ struct net_device *netdev = dev_get_drvdata(dev);
24402423 struct atl1c_adapter *adapter = netdev_priv(netdev);
24412424 struct atl1c_hw *hw = &adapter->hw;
24422425 u32 wufc = adapter->wol;
....@@ -2450,7 +2433,7 @@
24502433
24512434 if (wufc)
24522435 if (atl1c_phy_to_ps_link(hw) != 0)
2453
- dev_dbg(&pdev->dev, "phy power saving failed");
2436
+ dev_dbg(dev, "phy power saving failed");
24542437
24552438 atl1c_power_saving(hw, wufc);
24562439
....@@ -2460,8 +2443,7 @@
24602443 #ifdef CONFIG_PM_SLEEP
24612444 static int atl1c_resume(struct device *dev)
24622445 {
2463
- struct pci_dev *pdev = to_pci_dev(dev);
2464
- struct net_device *netdev = pci_get_drvdata(pdev);
2446
+ struct net_device *netdev = dev_get_drvdata(dev);
24652447 struct atl1c_adapter *adapter = netdev_priv(netdev);
24662448
24672449 AT_WRITE_REG(&adapter->hw, REG_WOL_CTRL, 0);
....@@ -2470,12 +2452,6 @@
24702452 atl1c_phy_reset(&adapter->hw);
24712453 atl1c_reset_mac(&adapter->hw);
24722454 atl1c_phy_init(&adapter->hw);
2473
-
2474
-#if 0
2475
- AT_READ_REG(&adapter->hw, REG_PM_CTRLSTAT, &pm_data);
2476
- pm_data &= ~PM_CTRLSTAT_PME_EN;
2477
- AT_WRITE_REG(&adapter->hw, REG_PM_CTRLSTAT, pm_data);
2478
-#endif
24792455
24802456 netif_device_attach(netdev);
24812457 if (netif_running(netdev))
....@@ -2570,8 +2546,8 @@
25702546 * various kernel subsystems to support the mechanics required by a
25712547 * fixed-high-32-bit system.
25722548 */
2573
- if ((pci_set_dma_mask(pdev, DMA_BIT_MASK(32)) != 0) ||
2574
- (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)) != 0)) {
2549
+ err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
2550
+ if (err) {
25752551 dev_err(&pdev->dev, "No usable DMA configuration,aborting\n");
25762552 goto err_dma;
25772553 }
....@@ -2661,8 +2637,6 @@
26612637 goto err_register;
26622638 }
26632639
2664
- if (netif_msg_probe(adapter))
2665
- dev_info(&pdev->dev, "version %s\n", ATL1C_DRV_VERSION);
26662640 cards_found++;
26672641 return 0;
26682642