mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 15:32:33 +00:00
34d2964554
Fixes issues with RTL8156 2.5G USB adapters - # ethtool eth1 Settings for eth1: Supported ports: [ ] Supported link modes: Not reported Supported pause frame use: No Supports auto-negotiation: No Supported FEC modes: Not reported Advertised link modes: Not reported Advertised pause frame use: No Advertised auto-negotiation: No Advertised FEC modes: Not reported Speed: 2500Mb/s Duplex: Half Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: off MDI-X: Unknown Current message level: 0x00000007 (7) drv probe link Link detected: yes - # - r8152: break the loop when the budget is exhausted - r8152: Block future register access if register access fails - r8152: Rename RTL8152_UNPLUG to RTL8152_INACCESSIBLE - r8152: add vendor/device ID pair for D-Link DUB-E250 - r8152: try to use a normal budget - r8152: set bp in bulk - r8152: adjust generic_ocp_write function - r8152: fix the autosuspend doesn't work - r8152: Add __GFP_NOWARN to big allocations - r8152: reduce the control transfer of rtl8152_get_version() - r8152: remove rtl_vendor_mode function - r8152: avoid to change cfg for all devices - r8152: add USB device driver for config selection - r8152: use napi_gro_frags - cdc_ether: no need to blacklist any r8152 devices - cdc_ether: add u-blox 0x1313 composition Build system: x86_64 Build-tested: bcm2711, rockchip, x86/64 Run-tested: bcm2711/RPi4B, rockchip/nanopi r2s, x86/64 Signed-off-by: Marty Jones <mj8263788@gmail.com>
448 lines
12 KiB
Diff
448 lines
12 KiB
Diff
From 715f67f33af45ce2cc3a5b1ef133cc8c8e7787b0 Mon Sep 17 00:00:00 2001
|
|
From: Douglas Anderson <dianders@chromium.org>
|
|
Date: Fri, 20 Oct 2023 14:06:58 -0700
|
|
Subject: [PATCH] r8152: Rename RTL8152_UNPLUG to RTL8152_INACCESSIBLE
|
|
|
|
Whenever the RTL8152_UNPLUG is set that just tells the driver that all
|
|
accesses will fail and we should just immediately bail. A future patch
|
|
will use this same concept at a time when the driver hasn't actually
|
|
been unplugged but is about to be reset. Rename the flag in
|
|
preparation for the future patch.
|
|
|
|
This is a no-op change and just a search and replace.
|
|
|
|
Signed-off-by: Douglas Anderson <dianders@chromium.org>
|
|
Reviewed-by: Grant Grundler <grundler@chromium.org>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/usb/r8152.c | 96 ++++++++++++++++++++---------------------
|
|
1 file changed, 48 insertions(+), 48 deletions(-)
|
|
|
|
--- a/drivers/net/usb/r8152.c
|
|
+++ b/drivers/net/usb/r8152.c
|
|
@@ -763,7 +763,7 @@ enum rtl_register_content {
|
|
|
|
/* rtl8152 flags */
|
|
enum rtl8152_flags {
|
|
- RTL8152_UNPLUG = 0,
|
|
+ RTL8152_INACCESSIBLE = 0,
|
|
RTL8152_SET_RX_MODE,
|
|
WORK_ENABLE,
|
|
RTL8152_LINK_CHG,
|
|
@@ -1241,7 +1241,7 @@ int set_registers(struct r8152 *tp, u16
|
|
static void rtl_set_unplug(struct r8152 *tp)
|
|
{
|
|
if (tp->udev->state == USB_STATE_NOTATTACHED) {
|
|
- set_bit(RTL8152_UNPLUG, &tp->flags);
|
|
+ set_bit(RTL8152_INACCESSIBLE, &tp->flags);
|
|
smp_mb__after_atomic();
|
|
}
|
|
}
|
|
@@ -1252,7 +1252,7 @@ static int generic_ocp_read(struct r8152
|
|
u16 limit = 64;
|
|
int ret = 0;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return -ENODEV;
|
|
|
|
/* both size and indix must be 4 bytes align */
|
|
@@ -1296,7 +1296,7 @@ static int generic_ocp_write(struct r815
|
|
u16 byteen_start, byteen_end, byen;
|
|
u16 limit = 512;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return -ENODEV;
|
|
|
|
/* both size and indix must be 4 bytes align */
|
|
@@ -1533,7 +1533,7 @@ static int read_mii_word(struct net_devi
|
|
struct r8152 *tp = netdev_priv(netdev);
|
|
int ret;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return -ENODEV;
|
|
|
|
if (phy_id != R8152_PHY_ID)
|
|
@@ -1549,7 +1549,7 @@ void write_mii_word(struct net_device *n
|
|
{
|
|
struct r8152 *tp = netdev_priv(netdev);
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
if (phy_id != R8152_PHY_ID)
|
|
@@ -1754,7 +1754,7 @@ static void read_bulk_callback(struct ur
|
|
if (!tp)
|
|
return;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
if (!test_bit(WORK_ENABLE, &tp->flags))
|
|
@@ -1846,7 +1846,7 @@ static void write_bulk_callback(struct u
|
|
if (!test_bit(WORK_ENABLE, &tp->flags))
|
|
return;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
if (!skb_queue_empty(&tp->tx_queue))
|
|
@@ -1867,7 +1867,7 @@ static void intr_callback(struct urb *ur
|
|
if (!test_bit(WORK_ENABLE, &tp->flags))
|
|
return;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
switch (status) {
|
|
@@ -2611,7 +2611,7 @@ static void bottom_half(struct tasklet_s
|
|
{
|
|
struct r8152 *tp = from_tasklet(tp, t, tx_tl);
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
if (!test_bit(WORK_ENABLE, &tp->flags))
|
|
@@ -2654,7 +2654,7 @@ int r8152_submit_rx(struct r8152 *tp, st
|
|
int ret;
|
|
|
|
/* The rx would be stopped, so skip submitting */
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags) ||
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags) ||
|
|
!test_bit(WORK_ENABLE, &tp->flags) || !netif_carrier_ok(tp->netdev))
|
|
return 0;
|
|
|
|
@@ -3050,7 +3050,7 @@ static int rtl_enable(struct r8152 *tp)
|
|
|
|
static int rtl8152_enable(struct r8152 *tp)
|
|
{
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return -ENODEV;
|
|
|
|
set_tx_qlen(tp);
|
|
@@ -3137,7 +3137,7 @@ static int rtl8153_enable(struct r8152 *
|
|
{
|
|
u32 ocp_data;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return -ENODEV;
|
|
|
|
set_tx_qlen(tp);
|
|
@@ -3169,7 +3169,7 @@ static void rtl_disable(struct r8152 *tp
|
|
u32 ocp_data;
|
|
int i;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags)) {
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) {
|
|
rtl_drop_queued_tx(tp);
|
|
return;
|
|
}
|
|
@@ -3623,7 +3623,7 @@ static u16 r8153_phy_status(struct r8152
|
|
}
|
|
|
|
msleep(20);
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
break;
|
|
}
|
|
|
|
@@ -3655,7 +3655,7 @@ static void r8153b_ups_en(struct r8152 *
|
|
int i;
|
|
|
|
for (i = 0; i < 500; i++) {
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
if (ocp_read_word(tp, MCU_TYPE_PLA, PLA_BOOT_CTRL) &
|
|
AUTOLOAD_DONE)
|
|
@@ -3697,7 +3697,7 @@ static void r8153c_ups_en(struct r8152 *
|
|
int i;
|
|
|
|
for (i = 0; i < 500; i++) {
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
if (ocp_read_word(tp, MCU_TYPE_PLA, PLA_BOOT_CTRL) &
|
|
AUTOLOAD_DONE)
|
|
@@ -4042,8 +4042,8 @@ static int rtl_phy_patch_request(struct
|
|
for (i = 0; wait && i < 5000; i++) {
|
|
u32 ocp_data;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
- break;
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
+ return -ENODEV;
|
|
|
|
usleep_range(1000, 2000);
|
|
ocp_data = ocp_reg_read(tp, OCP_PHY_PATCH_STAT);
|
|
@@ -6001,7 +6001,7 @@ static int rtl8156_enable(struct r8152 *
|
|
u32 ocp_data;
|
|
u16 speed;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return -ENODEV;
|
|
|
|
r8156_fc_parameter(tp);
|
|
@@ -6059,7 +6059,7 @@ static int rtl8156b_enable(struct r8152
|
|
u32 ocp_data;
|
|
u16 speed;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return -ENODEV;
|
|
|
|
set_tx_qlen(tp);
|
|
@@ -6245,7 +6245,7 @@ out:
|
|
|
|
static void rtl8152_up(struct r8152 *tp)
|
|
{
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
r8152_aldps_en(tp, false);
|
|
@@ -6255,7 +6255,7 @@ static void rtl8152_up(struct r8152 *tp)
|
|
|
|
static void rtl8152_down(struct r8152 *tp)
|
|
{
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags)) {
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) {
|
|
rtl_drop_queued_tx(tp);
|
|
return;
|
|
}
|
|
@@ -6270,7 +6270,7 @@ static void rtl8153_up(struct r8152 *tp)
|
|
{
|
|
u32 ocp_data;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
r8153_u1u2en(tp, false);
|
|
@@ -6310,7 +6310,7 @@ static void rtl8153_down(struct r8152 *t
|
|
{
|
|
u32 ocp_data;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags)) {
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) {
|
|
rtl_drop_queued_tx(tp);
|
|
return;
|
|
}
|
|
@@ -6331,7 +6331,7 @@ static void rtl8153b_up(struct r8152 *tp
|
|
{
|
|
u32 ocp_data;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
r8153b_u1u2en(tp, false);
|
|
@@ -6355,7 +6355,7 @@ static void rtl8153b_down(struct r8152 *
|
|
{
|
|
u32 ocp_data;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags)) {
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) {
|
|
rtl_drop_queued_tx(tp);
|
|
return;
|
|
}
|
|
@@ -6392,7 +6392,7 @@ static void rtl8153c_up(struct r8152 *tp
|
|
{
|
|
u32 ocp_data;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
r8153b_u1u2en(tp, false);
|
|
@@ -6473,7 +6473,7 @@ static void rtl8156_up(struct r8152 *tp)
|
|
{
|
|
u32 ocp_data;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
r8153b_u1u2en(tp, false);
|
|
@@ -6546,7 +6546,7 @@ static void rtl8156_down(struct r8152 *t
|
|
{
|
|
u32 ocp_data;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags)) {
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags)) {
|
|
rtl_drop_queued_tx(tp);
|
|
return;
|
|
}
|
|
@@ -6684,7 +6684,7 @@ static void rtl_work_func_t(struct work_
|
|
/* If the device is unplugged or !netif_running(), the workqueue
|
|
* doesn't need to wake the device, and could return directly.
|
|
*/
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags) || !netif_running(tp->netdev))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags) || !netif_running(tp->netdev))
|
|
return;
|
|
|
|
if (usb_autopm_get_interface(tp->intf) < 0)
|
|
@@ -6723,7 +6723,7 @@ static void rtl_hw_phy_work_func_t(struc
|
|
{
|
|
struct r8152 *tp = container_of(work, struct r8152, hw_phy_work.work);
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
if (usb_autopm_get_interface(tp->intf) < 0)
|
|
@@ -6850,7 +6850,7 @@ static int rtl8152_close(struct net_devi
|
|
netif_stop_queue(netdev);
|
|
|
|
res = usb_autopm_get_interface(tp->intf);
|
|
- if (res < 0 || test_bit(RTL8152_UNPLUG, &tp->flags)) {
|
|
+ if (res < 0 || test_bit(RTL8152_INACCESSIBLE, &tp->flags)) {
|
|
rtl_drop_queued_tx(tp);
|
|
rtl_stop_rx(tp);
|
|
} else {
|
|
@@ -6883,7 +6883,7 @@ static void r8152b_init(struct r8152 *tp
|
|
u32 ocp_data;
|
|
u16 data;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
data = r8152_mdio_read(tp, MII_BMCR);
|
|
@@ -6927,7 +6927,7 @@ static void r8153_init(struct r8152 *tp)
|
|
u16 data;
|
|
int i;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
r8153_u1u2en(tp, false);
|
|
@@ -6938,7 +6938,7 @@ static void r8153_init(struct r8152 *tp)
|
|
break;
|
|
|
|
msleep(20);
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
break;
|
|
}
|
|
|
|
@@ -7067,7 +7067,7 @@ static void r8153b_init(struct r8152 *tp
|
|
u16 data;
|
|
int i;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
r8153b_u1u2en(tp, false);
|
|
@@ -7078,7 +7078,7 @@ static void r8153b_init(struct r8152 *tp
|
|
break;
|
|
|
|
msleep(20);
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
break;
|
|
}
|
|
|
|
@@ -7149,7 +7149,7 @@ static void r8153c_init(struct r8152 *tp
|
|
u16 data;
|
|
int i;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
r8153b_u1u2en(tp, false);
|
|
@@ -7169,7 +7169,7 @@ static void r8153c_init(struct r8152 *tp
|
|
break;
|
|
|
|
msleep(20);
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
}
|
|
|
|
@@ -7998,7 +7998,7 @@ static void r8156_init(struct r8152 *tp)
|
|
u16 data;
|
|
int i;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_ECM_OP);
|
|
@@ -8019,7 +8019,7 @@ static void r8156_init(struct r8152 *tp)
|
|
break;
|
|
|
|
msleep(20);
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
}
|
|
|
|
@@ -8094,7 +8094,7 @@ static void r8156b_init(struct r8152 *tp
|
|
u16 data;
|
|
int i;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_ECM_OP);
|
|
@@ -8128,7 +8128,7 @@ static void r8156b_init(struct r8152 *tp
|
|
break;
|
|
|
|
msleep(20);
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
}
|
|
|
|
@@ -9153,7 +9153,7 @@ static int rtl8152_ioctl(struct net_devi
|
|
struct mii_ioctl_data *data = if_mii(rq);
|
|
int res;
|
|
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return -ENODEV;
|
|
|
|
res = usb_autopm_get_interface(tp->intf);
|
|
@@ -9255,7 +9255,7 @@ static const struct net_device_ops rtl81
|
|
|
|
static void rtl8152_unload(struct r8152 *tp)
|
|
{
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
if (tp->version != RTL_VER_01)
|
|
@@ -9264,7 +9264,7 @@ static void rtl8152_unload(struct r8152
|
|
|
|
static void rtl8153_unload(struct r8152 *tp)
|
|
{
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
r8153_power_cut_en(tp, false);
|
|
@@ -9272,7 +9272,7 @@ static void rtl8153_unload(struct r8152
|
|
|
|
static void rtl8153b_unload(struct r8152 *tp)
|
|
{
|
|
- if (test_bit(RTL8152_UNPLUG, &tp->flags))
|
|
+ if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
|
|
return;
|
|
|
|
r8153b_power_cut_en(tp, false);
|