hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/drivers/net/usb/rtl8150.c
....@@ -1,9 +1,6 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Copyright (c) 2002 Petko Manolov (petkan@users.sourceforge.net)
3
- *
4
- * This program is free software; you can redistribute it and/or
5
- * modify it under the terms of the GNU General Public License
6
- * version 2 as published by the Free Software Foundation.
74 */
85
96 #include <linux/signal.h>
....@@ -155,36 +152,16 @@
155152 */
156153 static int get_registers(rtl8150_t * dev, u16 indx, u16 size, void *data)
157154 {
158
- void *buf;
159
- int ret;
160
-
161
- buf = kmalloc(size, GFP_NOIO);
162
- if (!buf)
163
- return -ENOMEM;
164
-
165
- ret = usb_control_msg(dev->udev, usb_rcvctrlpipe(dev->udev, 0),
166
- RTL8150_REQ_GET_REGS, RTL8150_REQT_READ,
167
- indx, 0, buf, size, 500);
168
- if (ret > 0 && ret <= size)
169
- memcpy(data, buf, ret);
170
- kfree(buf);
171
- return ret;
155
+ return usb_control_msg_recv(dev->udev, 0, RTL8150_REQ_GET_REGS,
156
+ RTL8150_REQT_READ, indx, 0, data, size,
157
+ 1000, GFP_NOIO);
172158 }
173159
174160 static int set_registers(rtl8150_t * dev, u16 indx, u16 size, const void *data)
175161 {
176
- void *buf;
177
- int ret;
178
-
179
- buf = kmemdup(data, size, GFP_NOIO);
180
- if (!buf)
181
- return -ENOMEM;
182
-
183
- ret = usb_control_msg(dev->udev, usb_sndctrlpipe(dev->udev, 0),
184
- RTL8150_REQ_SET_REGS, RTL8150_REQT_WRITE,
185
- indx, 0, buf, size, 500);
186
- kfree(buf);
187
- return ret;
162
+ return usb_control_msg_send(dev->udev, 0, RTL8150_REQ_SET_REGS,
163
+ RTL8150_REQT_WRITE, indx, 0, data, size,
164
+ 1000, GFP_NOIO);
188165 }
189166
190167 static void async_set_reg_cb(struct urb *urb)
....@@ -284,7 +261,7 @@
284261
285262 ret = get_registers(dev, IDR, sizeof(node_id), node_id);
286263
287
- if (ret == sizeof(node_id)) {
264
+ if (!ret) {
288265 ether_addr_copy(dev->netdev->dev_addr, node_id);
289266 } else {
290267 eth_hw_addr_random(dev->netdev);
....@@ -396,7 +373,6 @@
396373 unsigned pkt_len, res;
397374 struct sk_buff *skb;
398375 struct net_device *netdev;
399
- u16 rx_stat;
400376 int status = urb->status;
401377 int result;
402378 unsigned long flags;
....@@ -432,7 +408,6 @@
432408 goto goon;
433409
434410 res = urb->actual_length;
435
- rx_stat = le16_to_cpu(*(__le16 *)(urb->transfer_buffer + res - 4));
436411 pkt_len = res - 4;
437412
438413 skb_put(dev->rx_skb, pkt_len);
....@@ -599,8 +574,7 @@
599574 int i;
600575
601576 for (i = 0; i < RX_SKB_POOL_SIZE; i++)
602
- if (dev->rx_skb_pool[i])
603
- dev_kfree_skb(dev->rx_skb_pool[i]);
577
+ dev_kfree_skb(dev->rx_skb_pool[i]);
604578 }
605579
606580 static void rx_fixup(unsigned long data)
....@@ -669,7 +643,7 @@
669643 set_registers(dev, CR, 1, &cr);
670644 }
671645
672
-static void rtl8150_tx_timeout(struct net_device *netdev)
646
+static void rtl8150_tx_timeout(struct net_device *netdev, unsigned int txqueue)
673647 {
674648 rtl8150_t *dev = netdev_priv(netdev);
675649 dev_warn(&netdev->dev, "Tx timeout.\n");
....@@ -857,6 +831,7 @@
857831 switch (cmd) {
858832 case SIOCDEVPRIVATE:
859833 data[0] = dev->phy;
834
+ fallthrough;
860835 case SIOCDEVPRIVATE + 1:
861836 read_mii_word(dev, dev->phy, (data[1] & 0x1f), &data[3]);
862837 break;
....@@ -958,8 +933,7 @@
958933 unlink_all_urbs(dev);
959934 free_all_urbs(dev);
960935 free_skb_pool(dev);
961
- if (dev->rx_skb)
962
- dev_kfree_skb(dev->rx_skb);
936
+ dev_kfree_skb(dev->rx_skb);
963937 kfree(dev->intr_buff);
964938 free_netdev(dev->netdev);
965939 }