diff options
-rw-r--r-- | drivers/net/usb/r8152.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index 0b1b9188625d..c34df33c6d72 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c | |||
@@ -1294,6 +1294,7 @@ static void intr_callback(struct urb *urb) | |||
1294 | } | 1294 | } |
1295 | } else { | 1295 | } else { |
1296 | if (netif_carrier_ok(tp->netdev)) { | 1296 | if (netif_carrier_ok(tp->netdev)) { |
1297 | netif_stop_queue(tp->netdev); | ||
1297 | set_bit(RTL8152_LINK_CHG, &tp->flags); | 1298 | set_bit(RTL8152_LINK_CHG, &tp->flags); |
1298 | schedule_delayed_work(&tp->schedule, 0); | 1299 | schedule_delayed_work(&tp->schedule, 0); |
1299 | } | 1300 | } |
@@ -3169,6 +3170,9 @@ static void set_carrier(struct r8152 *tp) | |||
3169 | napi_enable(&tp->napi); | 3170 | napi_enable(&tp->napi); |
3170 | netif_wake_queue(netdev); | 3171 | netif_wake_queue(netdev); |
3171 | netif_info(tp, link, netdev, "carrier on\n"); | 3172 | netif_info(tp, link, netdev, "carrier on\n"); |
3173 | } else if (netif_queue_stopped(netdev) && | ||
3174 | skb_queue_len(&tp->tx_queue) < tp->tx_qlen) { | ||
3175 | netif_wake_queue(netdev); | ||
3172 | } | 3176 | } |
3173 | } else { | 3177 | } else { |
3174 | if (netif_carrier_ok(netdev)) { | 3178 | if (netif_carrier_ok(netdev)) { |
@@ -3702,8 +3706,18 @@ static int rtl8152_resume(struct usb_interface *intf) | |||
3702 | tp->rtl_ops.autosuspend_en(tp, false); | 3706 | tp->rtl_ops.autosuspend_en(tp, false); |
3703 | napi_disable(&tp->napi); | 3707 | napi_disable(&tp->napi); |
3704 | set_bit(WORK_ENABLE, &tp->flags); | 3708 | set_bit(WORK_ENABLE, &tp->flags); |
3705 | if (netif_carrier_ok(tp->netdev)) | 3709 | |
3706 | rtl_start_rx(tp); | 3710 | if (netif_carrier_ok(tp->netdev)) { |
3711 | if (rtl8152_get_speed(tp) & LINK_STATUS) { | ||
3712 | rtl_start_rx(tp); | ||
3713 | } else { | ||
3714 | netif_carrier_off(tp->netdev); | ||
3715 | tp->rtl_ops.disable(tp); | ||
3716 | netif_info(tp, link, tp->netdev, | ||
3717 | "linking down\n"); | ||
3718 | } | ||
3719 | } | ||
3720 | |||
3707 | napi_enable(&tp->napi); | 3721 | napi_enable(&tp->napi); |
3708 | clear_bit(SELECTIVE_SUSPEND, &tp->flags); | 3722 | clear_bit(SELECTIVE_SUSPEND, &tp->flags); |
3709 | smp_mb__after_atomic(); | 3723 | smp_mb__after_atomic(); |