Patch "r8152: avoid start_xmit to call napi_schedule during autosuspend" 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: avoid start_xmit to call napi_schedule during autosuspend
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-avoid-start_xmit-to-call-napi_schedule-during-autosuspend.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 Jun 15 15:00:53 CEST 2017
From: hayeswang <[email protected]>
Date: Thu, 26 Jan 2017 09:38:31 +0800
Subject: r8152: avoid start_xmit to call napi_schedule during autosuspend
From: hayeswang <[email protected]>
[ Upstream commit 26afec39306926654e9cd320f19bbf3685bb0997 ]
Adjust the setting of the flag of SELECTIVE_SUSPEND to prevent start_xmit() from calling napi_schedule() directly during runtime suspend.
After calling napi_disable() or clearing the flag of WORK_ENABLE, scheduling the napi is useless.
--- drivers/net/usb/r8152.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
drivers/net/usb/r8152.c +9 -3
@@ -3583,10 +3583,15 @@ static int rtl8152_rumtime_suspend(strucstruct net_device *netdev = tp->netdev;int ret =0 ; +set_bit (SELECTIVE_SUSPEND , &tp->flags); +smp_mb__after_atomic (); +if (netif_running (netdev) &&test_bit (WORK_ENABLE , &tp->flags)) {u32 rcr =0 ;if (delay_autosuspend (tp)) { +clear_bit (SELECTIVE_SUSPEND , &tp->flags); +smp_mb__after_atomic (); ret = -EBUSY ; goto out1; }
@@ -3603,6 +3608,8 @@ static int rtl8152_rumtime_suspend(strucif (!(ocp_data &RXFIFO_EMPTY )) {rxdy_gated_en (tp, false);ocp_write_dword (tp,MCU_TYPE_PLA ,PLA_RCR , rcr); +clear_bit (SELECTIVE_SUSPEND , &tp->flags); +smp_mb__after_atomic (); ret = -EBUSY ; goto out1; }
@@ -3622,8 +3629,6 @@ static int rtl8152_rumtime_suspend(struc } } -set_bit (SELECTIVE_SUSPEND , &tp->flags); - out1:return ret; }
@@ -3679,12 +3684,13 @@ static int rtl8152_resume(struct usb_intif (netif_running (tp->netdev) && tp->netdev->flags &IFF_UP ) {if (test_bit (SELECTIVE_SUSPEND , &tp->flags)) { tp->rtl_ops.autosuspend_en (tp, false); -clear_bit (SELECTIVE_SUSPEND , &tp->flags);napi_disable (&tp->napi);set_bit (WORK_ENABLE , &tp->flags);if (netif_carrier_ok (tp->netdev))rtl_start_rx (tp);napi_enable (&tp->napi); +clear_bit (SELECTIVE_SUSPEND , &tp->flags); +smp_mb__after_atomic (); }else { tp->rtl_ops.up (tp);netif_carrier_off (tp->netdev);
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/r8152-fix-rtl8152_post_reset-function.patch queue-4.9/r8152-re-schedule-napi-for-tx.patch queue-4.9/r8152-avoid-start_xmit-to-call-napi_schedule-during-autosuspend.patch queue-4.9/r8152-check-rx-after-napi-is-enabled.patch