Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1663319 > unrolled thread
| Started by | Hayes Wang <hayeswang@realtek.com> |
|---|---|
| First post | 2017-06-12 10:30 +0200 |
| Last post | 2017-06-16 17:40 +0200 |
| Articles | 7 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH net-next 0/2] r8152: adjust runtime suspend/resume Hayes Wang <hayeswang@realtek.com> - 2017-06-12 10:30 +0200
[PATCH net-next v2 2/2] r8152: move calling delay_autosuspend function Hayes Wang <hayeswang@realtek.com> - 2017-06-13 09:20 +0200
[PATCH net-next v2 1/2] r8152: split rtl8152_resume function Hayes Wang <hayeswang@realtek.com> - 2017-06-13 09:20 +0200
[PATCH net-next v2 0/2] r8152: adjust runtime suspend/resume Hayes Wang <hayeswang@realtek.com> - 2017-06-13 09:20 +0200
Re: [PATCH net-next v2 0/2] r8152: adjust runtime suspend/resume David Miller <davem@davemloft.net> - 2017-06-13 19:10 +0200
RE: [PATCH net-next v2 0/2] r8152: adjust runtime suspend/resume Hayes Wang <hayeswang@realtek.com> - 2017-06-16 05:30 +0200
Re: [PATCH net-next v2 0/2] r8152: adjust runtime suspend/resume David Miller <davem@davemloft.net> - 2017-06-16 17:40 +0200
| From | Hayes Wang <hayeswang@realtek.com> |
|---|---|
| Date | 2017-06-12 10:30 +0200 |
| Subject | [PATCH net-next 0/2] r8152: adjust runtime suspend/resume |
| Message-ID | <tRsTw-8al-9@gated-at.bofh.it> |
Improve the flow about runtime suspend/resume and make the code easy to read. Hayes Wang (2): r8152: split rtl8152_resume function r8152: move calling delay_autosuspend function drivers/net/usb/r8152.c | 107 ++++++++++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 45 deletions(-) -- 2.7.4
[toc] | [next] | [standalone]
| From | Hayes Wang <hayeswang@realtek.com> |
|---|---|
| Date | 2017-06-13 09:20 +0200 |
| Subject | [PATCH net-next v2 2/2] r8152: move calling delay_autosuspend function |
| Message-ID | <tROhj-4Yo-9@gated-at.bofh.it> |
| In reply to | #1663319 |
Move calling delay_autosuspend() in rtl8152_runtime_suspend(). Calling
delay_autosuspend() as late as possible.
The original flows are
1. check if the driver/device is busy now.
2. set wake events.
3. enter runtime suspend.
If the wake event occurs between (1) and (2), the device may miss it. Besides,
to avoid the runtime resume occurs after runtime suspend immediately, move the
checking to the end of rtl8152_runtime_suspend().
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
drivers/net/usb/r8152.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 2d238b5..b916418 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -3752,13 +3752,6 @@ static int rtl8152_runtime_suspend(struct r8152 *tp)
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;
- }
-
if (netif_carrier_ok(netdev)) {
u32 ocp_data;
@@ -3792,6 +3785,11 @@ static int rtl8152_runtime_suspend(struct r8152 *tp)
ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, rcr);
napi_enable(napi);
}
+
+ if (delay_autosuspend(tp)) {
+ rtl8152_runtime_resume(tp);
+ ret = -EBUSY;
+ }
}
out1:
--
2.7.4
[toc] | [prev] | [next] | [standalone]
| From | Hayes Wang <hayeswang@realtek.com> |
|---|---|
| Date | 2017-06-13 09:20 +0200 |
| Subject | [PATCH net-next v2 1/2] r8152: split rtl8152_resume function |
| Message-ID | <tROhk-4Yo-19@gated-at.bofh.it> |
| In reply to | #1663319 |
Split rtl8152_resume() into rtl8152_runtime_resume() and
rtl8152_system_resume().
Besides, replace GFP_KERNEL with GFP_NOIO for usb_submit_urb().
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
---
drivers/net/usb/r8152.c | 99 ++++++++++++++++++++++++++++++-------------------
1 file changed, 61 insertions(+), 38 deletions(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 5a02053..2d238b5 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -3686,6 +3686,61 @@ static bool delay_autosuspend(struct r8152 *tp)
return false;
}
+static int rtl8152_runtime_resume(struct r8152 *tp)
+{
+ struct net_device *netdev = tp->netdev;
+
+ if (netif_running(netdev) && netdev->flags & IFF_UP) {
+ struct napi_struct *napi = &tp->napi;
+
+ tp->rtl_ops.autosuspend_en(tp, false);
+ napi_disable(napi);
+ set_bit(WORK_ENABLE, &tp->flags);
+
+ if (netif_carrier_ok(netdev)) {
+ if (rtl8152_get_speed(tp) & LINK_STATUS) {
+ rtl_start_rx(tp);
+ } else {
+ netif_carrier_off(netdev);
+ tp->rtl_ops.disable(tp);
+ netif_info(tp, link, netdev, "linking down\n");
+ }
+ }
+
+ napi_enable(napi);
+ clear_bit(SELECTIVE_SUSPEND, &tp->flags);
+ smp_mb__after_atomic();
+
+ if (!list_empty(&tp->rx_done))
+ napi_schedule(&tp->napi);
+
+ usb_submit_urb(tp->intr_urb, GFP_NOIO);
+ } else {
+ if (netdev->flags & IFF_UP)
+ tp->rtl_ops.autosuspend_en(tp, false);
+
+ clear_bit(SELECTIVE_SUSPEND, &tp->flags);
+ }
+
+ return 0;
+}
+
+static int rtl8152_system_resume(struct r8152 *tp)
+{
+ struct net_device *netdev = tp->netdev;
+
+ netif_device_attach(netdev);
+
+ if (netif_running(netdev) && netdev->flags & IFF_UP) {
+ tp->rtl_ops.up(tp);
+ netif_carrier_off(netdev);
+ set_bit(WORK_ENABLE, &tp->flags);
+ usb_submit_urb(tp->intr_urb, GFP_NOIO);
+ }
+
+ return 0;
+}
+
static int rtl8152_runtime_suspend(struct r8152 *tp)
{
struct net_device *netdev = tp->netdev;
@@ -3784,50 +3839,18 @@ static int rtl8152_suspend(struct usb_interface *intf, pm_message_t message)
static int rtl8152_resume(struct usb_interface *intf)
{
struct r8152 *tp = usb_get_intfdata(intf);
- struct net_device *netdev = tp->netdev;
+ int ret;
mutex_lock(&tp->control);
- if (!test_bit(SELECTIVE_SUSPEND, &tp->flags))
- netif_device_attach(netdev);
-
- if (netif_running(netdev) && netdev->flags & IFF_UP) {
- if (test_bit(SELECTIVE_SUSPEND, &tp->flags)) {
- struct napi_struct *napi = &tp->napi;
-
- tp->rtl_ops.autosuspend_en(tp, false);
- napi_disable(napi);
- set_bit(WORK_ENABLE, &tp->flags);
- if (netif_carrier_ok(netdev)) {
- if (rtl8152_get_speed(tp) & LINK_STATUS) {
- rtl_start_rx(tp);
- } else {
- netif_carrier_off(netdev);
- tp->rtl_ops.disable(tp);
- netif_info(tp, link, netdev,
- "linking down\n");
- }
- }
- napi_enable(napi);
- clear_bit(SELECTIVE_SUSPEND, &tp->flags);
- smp_mb__after_atomic();
- if (!list_empty(&tp->rx_done))
- napi_schedule(&tp->napi);
- } else {
- tp->rtl_ops.up(tp);
- netif_carrier_off(netdev);
- set_bit(WORK_ENABLE, &tp->flags);
- }
- usb_submit_urb(tp->intr_urb, GFP_KERNEL);
- } else if (test_bit(SELECTIVE_SUSPEND, &tp->flags)) {
- if (netdev->flags & IFF_UP)
- tp->rtl_ops.autosuspend_en(tp, false);
- clear_bit(SELECTIVE_SUSPEND, &tp->flags);
- }
+ if (test_bit(SELECTIVE_SUSPEND, &tp->flags))
+ ret = rtl8152_runtime_resume(tp);
+ else
+ ret = rtl8152_system_resume(tp);
mutex_unlock(&tp->control);
- return 0;
+ return ret;
}
static int rtl8152_reset_resume(struct usb_interface *intf)
--
2.7.4
[toc] | [prev] | [next] | [standalone]
| From | Hayes Wang <hayeswang@realtek.com> |
|---|---|
| Date | 2017-06-13 09:20 +0200 |
| Subject | [PATCH net-next v2 0/2] r8152: adjust runtime suspend/resume |
| Message-ID | <tROhj-4Yo-11@gated-at.bofh.it> |
| In reply to | #1663319 |
v2: For #1, replace GFP_KERNEL with GFP_NOIO for usb_submit_urb(). v1: Improve the flow about runtime suspend/resume and make the code easy to read. Hayes Wang (2): r8152: split rtl8152_resume function r8152: move calling delay_autosuspend function drivers/net/usb/r8152.c | 107 ++++++++++++++++++++++++++++-------------------- 1 file changed, 62 insertions(+), 45 deletions(-) -- 2.7.4
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2017-06-13 19:10 +0200 |
| Subject | Re: [PATCH net-next v2 0/2] r8152: adjust runtime suspend/resume |
| Message-ID | <tRXui-2gn-15@gated-at.bofh.it> |
| In reply to | #1664536 |
From: Hayes Wang <hayeswang@realtek.com> Date: Tue, 13 Jun 2017 15:14:38 +0800 > v2: > For #1, replace GFP_KERNEL with GFP_NOIO for usb_submit_urb(). > > v1: > Improve the flow about runtime suspend/resume and make the code > easy to read. Series applied.
[toc] | [prev] | [next] | [standalone]
| From | Hayes Wang <hayeswang@realtek.com> |
|---|---|
| Date | 2017-06-16 05:30 +0200 |
| Subject | RE: [PATCH net-next v2 0/2] r8152: adjust runtime suspend/resume |
| Message-ID | <tSQ7n-2ZG-1@gated-at.bofh.it> |
| In reply to | #1665030 |
David Miller [mailto:davem@davemloft.net] > Sent: Wednesday, June 14, 2017 1:02 AM > > v2: > > For #1, replace GFP_KERNEL with GFP_NOIO for usb_submit_urb(). > > > > v1: > > Improve the flow about runtime suspend/resume and make the code > > easy to read. > > Series applied. Excuse me. I don't see these patches in net-next repository. Where could I find them? Best Regards, Hayes
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2017-06-16 17:40 +0200 |
| Subject | Re: [PATCH net-next v2 0/2] r8152: adjust runtime suspend/resume |
| Message-ID | <tT1vQ-1Vd-13@gated-at.bofh.it> |
| In reply to | #1667397 |
From: Hayes Wang <hayeswang@realtek.com> Date: Fri, 16 Jun 2017 03:29:01 +0000 > David Miller [mailto:davem@davemloft.net] >> Sent: Wednesday, June 14, 2017 1:02 AM >> > v2: >> > For #1, replace GFP_KERNEL with GFP_NOIO for usb_submit_urb(). >> > >> > v1: >> > Improve the flow about runtime suspend/resume and make the code >> > easy to read. >> >> Series applied. > > Excuse me. I don't see these patches in net-next repository. Where could I find them? Sorry, I don't know how that happened. It should be there now. Thanks.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web