forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-11 04dd17822334871b23ea2862f7798fb0e0007777
kernel/drivers/net/ethernet/aeroflex/greth.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Aeroflex Gaisler GRETH 10/100/1G Ethernet MAC.
34 *
....@@ -7,15 +8,10 @@
78 * available in the GRLIB VHDL IP core library.
89 *
910 * Full documentation of both cores can be found here:
10
- * http://www.gaisler.com/products/grlib/grip.pdf
11
+ * https://www.gaisler.com/products/grlib/grip.pdf
1112 *
1213 * The Gigabit version supports scatter/gather DMA, any alignment of
1314 * buffers and checksum offloading.
14
- *
15
- * This program is free software; you can redistribute it and/or modify it
16
- * under the terms of the GNU General Public License as published by the
17
- * Free Software Foundation; either version 2 of the License, or (at your
18
- * option) any later version.
1915 *
2016 * Contributors: Kristoffer Glembo
2117 * Daniel Hellstrom
....@@ -114,7 +110,7 @@
114110
115111 print_hex_dump(KERN_DEBUG, "TX: ", DUMP_PREFIX_OFFSET, 16, 1,
116112 skb_frag_address(&skb_shinfo(skb)->frags[i]),
117
- skb_shinfo(skb)->frags[i].size, true);
113
+ skb_frag_size(&skb_shinfo(skb)->frags[i]), true);
118114 }
119115 }
120116
....@@ -262,6 +258,7 @@
262258 if (dma_mapping_error(greth->dev, dma_addr)) {
263259 if (netif_msg_ifup(greth))
264260 dev_err(greth->dev, "Could not create initial DMA mapping\n");
261
+ dev_kfree_skb(skb);
265262 goto cleanup;
266263 }
267264 greth->rx_skbuff[i] = skb;
....@@ -613,7 +610,6 @@
613610 napi_schedule(&greth->napi);
614611 }
615612
616
- mmiowb();
617613 spin_unlock(&greth->devlock);
618614
619615 return retval;
....@@ -1119,9 +1115,7 @@
11191115
11201116 strlcpy(info->driver, dev_driver_string(greth->dev),
11211117 sizeof(info->driver));
1122
- strlcpy(info->version, "revision: 1.0", sizeof(info->version));
11231118 strlcpy(info->bus_info, greth->dev->bus->name, sizeof(info->bus_info));
1124
- strlcpy(info->fw_version, "N/A", sizeof(info->fw_version));
11251119 }
11261120
11271121 static void greth_get_regs(struct net_device *dev, struct ethtool_regs *regs, void *p)
....@@ -1279,11 +1273,11 @@
12791273 }
12801274
12811275 if (greth->gbit_mac)
1282
- phy->supported &= PHY_GBIT_FEATURES;
1276
+ phy_set_max_speed(phy, SPEED_1000);
12831277 else
1284
- phy->supported &= PHY_BASIC_FEATURES;
1278
+ phy_set_max_speed(phy, SPEED_100);
12851279
1286
- phy->advertising = phy->supported;
1280
+ linkmode_copy(phy->advertising, phy->supported);
12871281
12881282 greth->link = 0;
12891283 greth->speed = 0;
....@@ -1433,18 +1427,18 @@
14331427 }
14341428
14351429 /* Allocate TX descriptor ring in coherent memory */
1436
- greth->tx_bd_base = dma_zalloc_coherent(greth->dev, 1024,
1437
- &greth->tx_bd_base_phys,
1438
- GFP_KERNEL);
1430
+ greth->tx_bd_base = dma_alloc_coherent(greth->dev, 1024,
1431
+ &greth->tx_bd_base_phys,
1432
+ GFP_KERNEL);
14391433 if (!greth->tx_bd_base) {
14401434 err = -ENOMEM;
14411435 goto error3;
14421436 }
14431437
14441438 /* Allocate RX descriptor ring in coherent memory */
1445
- greth->rx_bd_base = dma_zalloc_coherent(greth->dev, 1024,
1446
- &greth->rx_bd_base_phys,
1447
- GFP_KERNEL);
1439
+ greth->rx_bd_base = dma_alloc_coherent(greth->dev, 1024,
1440
+ &greth->rx_bd_base_phys,
1441
+ GFP_KERNEL);
14481442 if (!greth->rx_bd_base) {
14491443 err = -ENOMEM;
14501444 goto error4;
....@@ -1459,7 +1453,7 @@
14591453 const u8 *addr;
14601454
14611455 addr = of_get_mac_address(ofdev->dev.of_node);
1462
- if (addr) {
1456
+ if (!IS_ERR(addr)) {
14631457 for (i = 0; i < 6; i++)
14641458 macaddr[i] = (unsigned int) addr[i];
14651459 } else {