Patch "r8152: split rtl8152_suspend function" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
r8152: split rtl8152_suspend function
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
r8152-split-rtl8152_suspend-function.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Jan 12 21:37:26 CET 2017
From: hayeswang <[email protected]>
Date: Tue, 10 Jan 2017 17:04:06 +0800
Subject: r8152: split rtl8152_suspend function
From: hayeswang <[email protected]>
[ Upstream commit 8fb280616878b81c0790a0c33acbeec59c5711f4 ]
Split rtl8152_suspend() into rtl8152_system_suspend() and rtl8152_rumtime_suspend().
--- drivers/net/usb/r8152.c | 57 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 17 deletions(-)
drivers/net/usb/r8152.c +40 -17
@@ -3576,39 +3576,62 @@ static bool delay_autosuspend(struct r81return false; } -static int rtl8152_suspend (struct usb_interface *intf,pm_message_t message) +static int rtl8152_rumtime_suspend (struct r8152 *tp) { -struct r8152 *tp =usb_get_intfdata (intf);struct net_device *netdev = tp->netdev;int ret =0 ; -mutex_lock (&tp->control); - -if (PMSG_IS_AUTO (message)) { -if (netif_running (netdev) &&delay_autosuspend (tp)) { +if (netif_running (netdev) &&test_bit (WORK_ENABLE , &tp->flags)) { +if (delay_autosuspend (tp)) { ret = -EBUSY ; goto out1; } -set_bit (SELECTIVE_SUSPEND , &tp->flags); - }else { -netif_device_detach (netdev); +clear_bit (WORK_ENABLE , &tp->flags); +usb_kill_urb (tp->intr_urb); +napi_disable (&tp->napi); +rtl_stop_rx (tp); + tp->rtl_ops.autosuspend_en (tp, true); +napi_enable (&tp->napi); } +set_bit (SELECTIVE_SUSPEND , &tp->flags); + +out1: +return ret; +} + +static int rtl8152_system_suspend (struct r8152 *tp) +{ +struct net_device *netdev = tp->netdev; +int ret =0 ; + +netif_device_detach (netdev); +if (netif_running (netdev) &&test_bit (WORK_ENABLE , &tp->flags)) {clear_bit (WORK_ENABLE , &tp->flags);usb_kill_urb (tp->intr_urb);napi_disable (&tp->napi); -if (test_bit (SELECTIVE_SUSPEND , &tp->flags)) { -rtl_stop_rx (tp); - tp->rtl_ops.autosuspend_en (tp, true); - }else { -cancel_delayed_work_sync (&tp->schedule); - tp->rtl_ops.down (tp); - } +cancel_delayed_work_sync (&tp->schedule); + tp->rtl_ops.down (tp);napi_enable (&tp->napi); } -out1: + +return ret; +} + +static int rtl8152_suspend (struct usb_interface *intf,pm_message_t message) +{ +struct r8152 *tp =usb_get_intfdata (intf); +int ret; + +mutex_lock (&tp->control); + +if (PMSG_IS_AUTO (message)) + ret =rtl8152_rumtime_suspend (tp); +else + ret =rtl8152_system_suspend (tp); +mutex_unlock (&tp->control);return ret;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/r8152-split-rtl8152_suspend-function.patch queue-4.9/r8152-fix-rx-issue-for-runtime-suspend.patch