.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * 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. |
---|
7 | 4 | */ |
---|
8 | 5 | |
---|
9 | 6 | #include <linux/signal.h> |
---|
.. | .. |
---|
155 | 152 | */ |
---|
156 | 153 | static int get_registers(rtl8150_t * dev, u16 indx, u16 size, void *data) |
---|
157 | 154 | { |
---|
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); |
---|
172 | 158 | } |
---|
173 | 159 | |
---|
174 | 160 | static int set_registers(rtl8150_t * dev, u16 indx, u16 size, const void *data) |
---|
175 | 161 | { |
---|
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); |
---|
188 | 165 | } |
---|
189 | 166 | |
---|
190 | 167 | static void async_set_reg_cb(struct urb *urb) |
---|
.. | .. |
---|
284 | 261 | |
---|
285 | 262 | ret = get_registers(dev, IDR, sizeof(node_id), node_id); |
---|
286 | 263 | |
---|
287 | | - if (ret == sizeof(node_id)) { |
---|
| 264 | + if (!ret) { |
---|
288 | 265 | ether_addr_copy(dev->netdev->dev_addr, node_id); |
---|
289 | 266 | } else { |
---|
290 | 267 | eth_hw_addr_random(dev->netdev); |
---|
.. | .. |
---|
396 | 373 | unsigned pkt_len, res; |
---|
397 | 374 | struct sk_buff *skb; |
---|
398 | 375 | struct net_device *netdev; |
---|
399 | | - u16 rx_stat; |
---|
400 | 376 | int status = urb->status; |
---|
401 | 377 | int result; |
---|
402 | 378 | unsigned long flags; |
---|
.. | .. |
---|
432 | 408 | goto goon; |
---|
433 | 409 | |
---|
434 | 410 | res = urb->actual_length; |
---|
435 | | - rx_stat = le16_to_cpu(*(__le16 *)(urb->transfer_buffer + res - 4)); |
---|
436 | 411 | pkt_len = res - 4; |
---|
437 | 412 | |
---|
438 | 413 | skb_put(dev->rx_skb, pkt_len); |
---|
.. | .. |
---|
599 | 574 | int i; |
---|
600 | 575 | |
---|
601 | 576 | 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]); |
---|
604 | 578 | } |
---|
605 | 579 | |
---|
606 | 580 | static void rx_fixup(unsigned long data) |
---|
.. | .. |
---|
669 | 643 | set_registers(dev, CR, 1, &cr); |
---|
670 | 644 | } |
---|
671 | 645 | |
---|
672 | | -static void rtl8150_tx_timeout(struct net_device *netdev) |
---|
| 646 | +static void rtl8150_tx_timeout(struct net_device *netdev, unsigned int txqueue) |
---|
673 | 647 | { |
---|
674 | 648 | rtl8150_t *dev = netdev_priv(netdev); |
---|
675 | 649 | dev_warn(&netdev->dev, "Tx timeout.\n"); |
---|
.. | .. |
---|
857 | 831 | switch (cmd) { |
---|
858 | 832 | case SIOCDEVPRIVATE: |
---|
859 | 833 | data[0] = dev->phy; |
---|
| 834 | + fallthrough; |
---|
860 | 835 | case SIOCDEVPRIVATE + 1: |
---|
861 | 836 | read_mii_word(dev, dev->phy, (data[1] & 0x1f), &data[3]); |
---|
862 | 837 | break; |
---|
.. | .. |
---|
958 | 933 | unlink_all_urbs(dev); |
---|
959 | 934 | free_all_urbs(dev); |
---|
960 | 935 | free_skb_pool(dev); |
---|
961 | | - if (dev->rx_skb) |
---|
962 | | - dev_kfree_skb(dev->rx_skb); |
---|
| 936 | + dev_kfree_skb(dev->rx_skb); |
---|
963 | 937 | kfree(dev->intr_buff); |
---|
964 | 938 | free_netdev(dev->netdev); |
---|
965 | 939 | } |
---|