hc
2024-05-11 297b60346df8beafee954a0fd7c2d64f33f3b9bc
kernel/drivers/net/wan/lmc/lmc_main.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
34 * All rights reserved. www.lanmedia.com
....@@ -13,9 +14,6 @@
1314 * David Boggs
1415 * Ron Crane
1516 * Alan Cox
16
- *
17
- * This software may be used and distributed according to the terms
18
- * of the GNU General Public License version 2, incorporated herein by reference.
1917 *
2018 * Driver for the LanMedia LMC5200, LMC5245, LMC1000, LMC1200 cards.
2119 *
....@@ -34,7 +32,6 @@
3432 * we still have link, and that the timing source is what we expected
3533 * it to be. If link is lost, the interface is marked down, and
3634 * we no longer can transmit.
37
- *
3835 */
3936
4037 #include <linux/kernel.h>
....@@ -102,7 +99,7 @@
10299 static void lmc_watchdog(struct timer_list *t);
103100 static void lmc_reset(lmc_softc_t * const sc);
104101 static void lmc_dec_reset(lmc_softc_t * const sc);
105
-static void lmc_driver_timeout(struct net_device *dev);
102
+static void lmc_driver_timeout(struct net_device *dev, unsigned int txqueue);
106103
107104 /*
108105 * linux reserves 16 device specific IOCTLs. We call them
....@@ -115,8 +112,6 @@
115112 int ret = -EOPNOTSUPP;
116113 u16 regVal;
117114 unsigned long flags;
118
-
119
- lmc_trace(dev, "lmc_ioctl in");
120115
121116 /*
122117 * Most functions mess with the structure
....@@ -622,8 +617,6 @@
622617 break;
623618 }
624619
625
- lmc_trace(dev, "lmc_ioctl out");
626
-
627620 return ret;
628621 }
629622
....@@ -636,8 +629,6 @@
636629 int link_status;
637630 u32 ticks;
638631 unsigned long flags;
639
-
640
- lmc_trace(dev, "lmc_watchdog in");
641632
642633 spin_lock_irqsave(&sc->lmc_lock, flags);
643634
....@@ -785,9 +776,6 @@
785776 add_timer (&sc->timer);
786777
787778 spin_unlock_irqrestore(&sc->lmc_lock, flags);
788
-
789
- lmc_trace(dev, "lmc_watchdog out");
790
-
791779 }
792780
793781 static int lmc_attach(struct net_device *dev, unsigned short encoding,
....@@ -815,8 +803,6 @@
815803 u16 AdapModelNum;
816804 int err;
817805 static int cards_found;
818
-
819
- /* lmc_trace(dev, "lmc_init_one in"); */
820806
821807 err = pcim_enable_device(pdev);
822808 if (err) {
....@@ -960,7 +946,6 @@
960946 sc->lmc_ok = 0;
961947 sc->last_link_status = 0;
962948
963
- lmc_trace(dev, "lmc_init_one out");
964949 return 0;
965950 }
966951
....@@ -986,8 +971,6 @@
986971 lmc_softc_t *sc = dev_to_sc(dev);
987972 int err;
988973
989
- lmc_trace(dev, "lmc_open in");
990
-
991974 lmc_led_on(sc, LMC_DS3_LED0);
992975
993976 lmc_dec_reset(sc);
....@@ -997,17 +980,14 @@
997980 LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg(sc, 0, 16),
998981 lmc_mii_readreg(sc, 0, 17));
999982
1000
- if (sc->lmc_ok){
1001
- lmc_trace(dev, "lmc_open lmc_ok out");
983
+ if (sc->lmc_ok)
1002984 return 0;
1003
- }
1004985
1005986 lmc_softreset (sc);
1006987
1007988 /* Since we have to use PCI bus, this should work on x86,alpha,ppc */
1008989 if (request_irq (dev->irq, lmc_interrupt, IRQF_SHARED, dev->name, dev)){
1009990 printk(KERN_WARNING "%s: could not get irq: %d\n", dev->name, dev->irq);
1010
- lmc_trace(dev, "lmc_open irq failed out");
1011991 return -EAGAIN;
1012992 }
1013993 sc->got_irq = 1;
....@@ -1083,8 +1063,6 @@
10831063 sc->timer.expires = jiffies + HZ;
10841064 add_timer (&sc->timer);
10851065
1086
- lmc_trace(dev, "lmc_open out");
1087
-
10881066 return 0;
10891067 }
10901068
....@@ -1095,8 +1073,6 @@
10951073 static void lmc_running_reset (struct net_device *dev) /*fold00*/
10961074 {
10971075 lmc_softc_t *sc = dev_to_sc(dev);
1098
-
1099
- lmc_trace(dev, "lmc_running_reset in");
11001076
11011077 /* stop interrupts */
11021078 /* Clear the interrupt mask */
....@@ -1119,8 +1095,6 @@
11191095
11201096 sc->lmc_cmdmode |= (TULIP_CMD_TXRUN | TULIP_CMD_RXRUN);
11211097 LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode);
1122
-
1123
- lmc_trace(dev, "lmc_runnin_reset_out");
11241098 }
11251099
11261100
....@@ -1133,15 +1107,11 @@
11331107 /* not calling release_region() as we should */
11341108 lmc_softc_t *sc = dev_to_sc(dev);
11351109
1136
- lmc_trace(dev, "lmc_close in");
1137
-
11381110 sc->lmc_ok = 0;
11391111 sc->lmc_media->set_link_status (sc, 0);
11401112 del_timer (&sc->timer);
11411113 lmc_proto_close(sc);
11421114 lmc_ifdown (dev);
1143
-
1144
- lmc_trace(dev, "lmc_close out");
11451115
11461116 return 0;
11471117 }
....@@ -1153,8 +1123,6 @@
11531123 lmc_softc_t *sc = dev_to_sc(dev);
11541124 u32 csr6;
11551125 int i;
1156
-
1157
- lmc_trace(dev, "lmc_ifdown in");
11581126
11591127 /* Don't let anything else go on right now */
11601128 // dev->start = 0;
....@@ -1205,8 +1173,6 @@
12051173 netif_wake_queue(dev);
12061174 sc->extra_stats.tx_tbusy0++;
12071175
1208
- lmc_trace(dev, "lmc_ifdown out");
1209
-
12101176 return 0;
12111177 }
12121178
....@@ -1224,8 +1190,6 @@
12241190 u32 firstcsr;
12251191 int max_work = LMC_RXDESCS;
12261192 int handled = 0;
1227
-
1228
- lmc_trace(dev, "lmc_interrupt in");
12291193
12301194 spin_lock(&sc->lmc_lock);
12311195
....@@ -1269,12 +1233,10 @@
12691233 lmc_running_reset (dev);
12701234 break;
12711235 }
1272
-
1273
- if (csr & TULIP_STS_RXINTR){
1274
- lmc_trace(dev, "rx interrupt");
1236
+
1237
+ if (csr & TULIP_STS_RXINTR)
12751238 lmc_rx (dev);
1276
-
1277
- }
1239
+
12781240 if (csr & (TULIP_STS_TXINTR | TULIP_STS_TXNOBUF | TULIP_STS_TXSTOPPED)) {
12791241
12801242 int n_compl = 0 ;
....@@ -1322,8 +1284,7 @@
13221284 sc->lmc_device->stats.tx_packets++;
13231285 }
13241286
1325
- // dev_kfree_skb(sc->lmc_txq[i]);
1326
- dev_kfree_skb_irq(sc->lmc_txq[i]);
1287
+ dev_consume_skb_irq(sc->lmc_txq[i]);
13271288 sc->lmc_txq[i] = NULL;
13281289
13291290 badtx++;
....@@ -1395,7 +1356,6 @@
13951356
13961357 spin_unlock(&sc->lmc_lock);
13971358
1398
- lmc_trace(dev, "lmc_interrupt out");
13991359 return IRQ_RETVAL(handled);
14001360 }
14011361
....@@ -1406,8 +1366,6 @@
14061366 u32 flag;
14071367 int entry;
14081368 unsigned long flags;
1409
-
1410
- lmc_trace(dev, "lmc_start_xmit in");
14111369
14121370 spin_lock_irqsave(&sc->lmc_lock, flags);
14131371
....@@ -1483,7 +1441,6 @@
14831441
14841442 spin_unlock_irqrestore(&sc->lmc_lock, flags);
14851443
1486
- lmc_trace(dev, "lmc_start_xmit_out");
14871444 return NETDEV_TX_OK;
14881445 }
14891446
....@@ -1498,8 +1455,6 @@
14981455 long stat;
14991456 struct sk_buff *skb, *nsb;
15001457 u16 len;
1501
-
1502
- lmc_trace(dev, "lmc_rx in");
15031458
15041459 lmc_led_on(sc, LMC_DS3_LED3);
15051460
....@@ -1679,9 +1634,6 @@
16791634 lmc_led_off(sc, LMC_DS3_LED3);
16801635
16811636 skip_out_of_mem:
1682
-
1683
- lmc_trace(dev, "lmc_rx out");
1684
-
16851637 return 0;
16861638 }
16871639
....@@ -1690,15 +1642,11 @@
16901642 lmc_softc_t *sc = dev_to_sc(dev);
16911643 unsigned long flags;
16921644
1693
- lmc_trace(dev, "lmc_get_stats in");
1694
-
16951645 spin_lock_irqsave(&sc->lmc_lock, flags);
16961646
16971647 sc->lmc_device->stats.rx_missed_errors += LMC_CSR_READ(sc, csr_missed_frames) & 0xffff;
16981648
16991649 spin_unlock_irqrestore(&sc->lmc_lock, flags);
1700
-
1701
- lmc_trace(dev, "lmc_get_stats out");
17021650
17031651 return &sc->lmc_device->stats;
17041652 }
....@@ -1718,11 +1666,7 @@
17181666 int command = (0xf6 << 10) | (devaddr << 5) | regno;
17191667 int retval = 0;
17201668
1721
- lmc_trace(sc->lmc_device, "lmc_mii_readreg in");
1722
-
17231669 LMC_MII_SYNC (sc);
1724
-
1725
- lmc_trace(sc->lmc_device, "lmc_mii_readreg: done sync");
17261670
17271671 for (i = 15; i >= 0; i--)
17281672 {
....@@ -1736,8 +1680,6 @@
17361680 /* __SLOW_DOWN_IO; */
17371681 }
17381682
1739
- lmc_trace(sc->lmc_device, "lmc_mii_readreg: done1");
1740
-
17411683 for (i = 19; i > 0; i--)
17421684 {
17431685 LMC_CSR_WRITE (sc, csr_9, 0x40000);
....@@ -1749,8 +1691,6 @@
17491691 /* __SLOW_DOWN_IO; */
17501692 }
17511693
1752
- lmc_trace(sc->lmc_device, "lmc_mii_readreg out");
1753
-
17541694 return (retval >> 1) & 0xffff;
17551695 }
17561696
....@@ -1758,8 +1698,6 @@
17581698 {
17591699 int i = 32;
17601700 int command = (0x5002 << 16) | (devaddr << 23) | (regno << 18) | data;
1761
-
1762
- lmc_trace(sc->lmc_device, "lmc_mii_writereg in");
17631701
17641702 LMC_MII_SYNC (sc);
17651703
....@@ -1793,15 +1731,11 @@
17931731 /* __SLOW_DOWN_IO; */
17941732 i--;
17951733 }
1796
-
1797
- lmc_trace(sc->lmc_device, "lmc_mii_writereg out");
17981734 }
17991735
18001736 static void lmc_softreset (lmc_softc_t * const sc) /*fold00*/
18011737 {
18021738 int i;
1803
-
1804
- lmc_trace(sc->lmc_device, "lmc_softreset in");
18051739
18061740 /* Initialize the receive rings and buffers. */
18071741 sc->lmc_txfull = 0;
....@@ -1877,55 +1811,40 @@
18771811 }
18781812 sc->lmc_txring[i - 1].buffer2 = virt_to_bus (&sc->lmc_txring[0]);
18791813 LMC_CSR_WRITE (sc, csr_txlist, virt_to_bus (sc->lmc_txring));
1880
-
1881
- lmc_trace(sc->lmc_device, "lmc_softreset out");
18821814 }
18831815
18841816 void lmc_gpio_mkinput(lmc_softc_t * const sc, u32 bits) /*fold00*/
18851817 {
1886
- lmc_trace(sc->lmc_device, "lmc_gpio_mkinput in");
18871818 sc->lmc_gpio_io &= ~bits;
18881819 LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io));
1889
- lmc_trace(sc->lmc_device, "lmc_gpio_mkinput out");
18901820 }
18911821
18921822 void lmc_gpio_mkoutput(lmc_softc_t * const sc, u32 bits) /*fold00*/
18931823 {
1894
- lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput in");
18951824 sc->lmc_gpio_io |= bits;
18961825 LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io));
1897
- lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput out");
18981826 }
18991827
19001828 void lmc_led_on(lmc_softc_t * const sc, u32 led) /*fold00*/
19011829 {
1902
- lmc_trace(sc->lmc_device, "lmc_led_on in");
1903
- if((~sc->lmc_miireg16) & led){ /* Already on! */
1904
- lmc_trace(sc->lmc_device, "lmc_led_on aon out");
1830
+ if ((~sc->lmc_miireg16) & led) /* Already on! */
19051831 return;
1906
- }
1907
-
1832
+
19081833 sc->lmc_miireg16 &= ~led;
19091834 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
1910
- lmc_trace(sc->lmc_device, "lmc_led_on out");
19111835 }
19121836
19131837 void lmc_led_off(lmc_softc_t * const sc, u32 led) /*fold00*/
19141838 {
1915
- lmc_trace(sc->lmc_device, "lmc_led_off in");
1916
- if(sc->lmc_miireg16 & led){ /* Already set don't do anything */
1917
- lmc_trace(sc->lmc_device, "lmc_led_off aoff out");
1839
+ if (sc->lmc_miireg16 & led) /* Already set don't do anything */
19181840 return;
1919
- }
1920
-
1841
+
19211842 sc->lmc_miireg16 |= led;
19221843 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
1923
- lmc_trace(sc->lmc_device, "lmc_led_off out");
19241844 }
19251845
19261846 static void lmc_reset(lmc_softc_t * const sc) /*fold00*/
19271847 {
1928
- lmc_trace(sc->lmc_device, "lmc_reset in");
19291848 sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET;
19301849 lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
19311850
....@@ -1961,13 +1880,11 @@
19611880 sc->lmc_media->init(sc);
19621881
19631882 sc->extra_stats.resetCount++;
1964
- lmc_trace(sc->lmc_device, "lmc_reset out");
19651883 }
19661884
19671885 static void lmc_dec_reset(lmc_softc_t * const sc) /*fold00*/
19681886 {
19691887 u32 val;
1970
- lmc_trace(sc->lmc_device, "lmc_dec_reset in");
19711888
19721889 /*
19731890 * disable all interrupts
....@@ -2023,14 +1940,11 @@
20231940 val = LMC_CSR_READ(sc, csr_sia_general);
20241941 val |= (TULIP_WATCHDOG_TXDISABLE | TULIP_WATCHDOG_RXDISABLE);
20251942 LMC_CSR_WRITE(sc, csr_sia_general, val);
2026
-
2027
- lmc_trace(sc->lmc_device, "lmc_dec_reset out");
20281943 }
20291944
20301945 static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base, /*fold00*/
20311946 size_t csr_size)
20321947 {
2033
- lmc_trace(sc->lmc_device, "lmc_initcsrs in");
20341948 sc->lmc_csrs.csr_busmode = csr_base + 0 * csr_size;
20351949 sc->lmc_csrs.csr_txpoll = csr_base + 1 * csr_size;
20361950 sc->lmc_csrs.csr_rxpoll = csr_base + 2 * csr_size;
....@@ -2047,16 +1961,13 @@
20471961 sc->lmc_csrs.csr_13 = csr_base + 13 * csr_size;
20481962 sc->lmc_csrs.csr_14 = csr_base + 14 * csr_size;
20491963 sc->lmc_csrs.csr_15 = csr_base + 15 * csr_size;
2050
- lmc_trace(sc->lmc_device, "lmc_initcsrs out");
20511964 }
20521965
2053
-static void lmc_driver_timeout(struct net_device *dev)
1966
+static void lmc_driver_timeout(struct net_device *dev, unsigned int txqueue)
20541967 {
20551968 lmc_softc_t *sc = dev_to_sc(dev);
20561969 u32 csr6;
20571970 unsigned long flags;
2058
-
2059
- lmc_trace(dev, "lmc_driver_timeout in");
20601971
20611972 spin_lock_irqsave(&sc->lmc_lock, flags);
20621973
....@@ -2069,7 +1980,7 @@
20691980 /*
20701981 * Chip seems to have locked up
20711982 * Reset it
2072
- * This whips out all our decriptor
1983
+ * This whips out all our descriptor
20731984 * table and starts from scartch
20741985 */
20751986
....@@ -2100,8 +2011,4 @@
21002011 bug_out:
21012012
21022013 spin_unlock_irqrestore(&sc->lmc_lock, flags);
2103
-
2104
- lmc_trace(dev, "lmc_driver_timeout out");
2105
-
2106
-
21072014 }