[PATCH net v2 0/2] r8152: fix side effect

STALE2562d

Revision v2 of 4 in this series.

6 messages, 3 authors, 2019-08-26 · open the first message on its own page

[PATCH net v2 0/2] r8152: fix side effect

From: Hayes Wang <hidden>
Date: 2019-08-26 08:41:56

v2:
Replace patch #2 with "r8152: remove calling netif_napi_del".

v1:
The commit 0ee1f4734967 ("r8152: napi hangup fix after disconnect")
add a check to avoid using napi_disable after netif_napi_del. However,
the commit ffa9fec30ca0 ("r8152: set RTL8152_UNPLUG only for real
disconnection") let the check useless.

Therefore, I revert commit 0ee1f4734967 ("r8152: napi hangup fix
after disconnect") first, and add another patch to fix it.

Hayes Wang (2):
  Revert "r8152: napi hangup fix after disconnect"
  r8152: remove calling netif_napi_del

 drivers/net/usb/r8152.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

-- 
2.21.0

[PATCH net v2 1/2] Revert "r8152: napi hangup fix after disconnect"

From: Hayes Wang <hidden>
Date: 2019-08-26 08:41:53

This reverts commit 0ee1f4734967af8321ecebaf9c74221ace34f2d5.

This conflicts with commit ffa9fec30ca0 ("r8152: set
RTL8152_UNPLUG only for real disconnection").

Signed-off-by: Hayes Wang <redacted>
---
 drivers/net/usb/r8152.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index eee0f5007ee3..ad3abe26b51b 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -4021,8 +4021,7 @@ static int rtl8152_close(struct net_device *netdev)
 #ifdef CONFIG_PM_SLEEP
 	unregister_pm_notifier(&tp->pm_notifier);
 #endif
-	if (!test_bit(RTL8152_UNPLUG, &tp->flags))
-		napi_disable(&tp->napi);
+	napi_disable(&tp->napi);
 	clear_bit(WORK_ENABLE, &tp->flags);
 	usb_kill_urb(tp->intr_urb);
 	cancel_delayed_work_sync(&tp->schedule);
-- 
2.21.0

[PATCH net v2 2/2] r8152: remove calling netif_napi_del

From: Hayes Wang <hidden>
Date: 2019-08-26 08:41:59

Remove unnecessary use of netif_napi_del. This also avoids to call
napi_disable() after netif_napi_del().

Signed-off-by: Hayes Wang <redacted>
---
 drivers/net/usb/r8152.c | 2 --
 1 file changed, 2 deletions(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index ad3abe26b51b..04137ac373b0 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -5352,7 +5352,6 @@ static int rtl8152_probe(struct usb_interface *intf,
 	return 0;
 
 out1:
-	netif_napi_del(&tp->napi);
 	usb_set_intfdata(intf, NULL);
 out:
 	free_netdev(netdev);
@@ -5367,7 +5366,6 @@ static void rtl8152_disconnect(struct usb_interface *intf)
 	if (tp) {
 		rtl_set_unplug(tp);
 
-		netif_napi_del(&tp->napi);
 		unregister_netdev(tp->netdev);
 		cancel_delayed_work_sync(&tp->hw_phy_work);
 		tp->rtl_ops.unload(tp);
-- 
2.21.0

Re: [PATCH net v2 1/2] Revert "r8152: napi hangup fix after disconnect"

From: Jiri Slaby <hidden>
Date: 2019-08-26 08:55:35

On 26. 08. 19, 10:41, Hayes Wang wrote:
This reverts commit 0ee1f4734967af8321ecebaf9c74221ace34f2d5.

This conflicts with commit ffa9fec30ca0 ("r8152: set
RTL8152_UNPLUG only for real disconnection").
Could you clarify *why* it conflicts? And how is the problem fixed by
0ee1f473496 avoided now?
quoted hunk
Signed-off-by: Hayes Wang <redacted>
---
 drivers/net/usb/r8152.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index eee0f5007ee3..ad3abe26b51b 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -4021,8 +4021,7 @@ static int rtl8152_close(struct net_device *netdev)
 #ifdef CONFIG_PM_SLEEP
 	unregister_pm_notifier(&tp->pm_notifier);
 #endif
-	if (!test_bit(RTL8152_UNPLUG, &tp->flags))
-		napi_disable(&tp->napi);
+	napi_disable(&tp->napi);
 	clear_bit(WORK_ENABLE, &tp->flags);
 	usb_kill_urb(tp->intr_urb);
 	cancel_delayed_work_sync(&tp->schedule);
thanks,
-- 
js
suse labs

RE: [PATCH net v2 1/2] Revert "r8152: napi hangup fix after disconnect"

From: Hayes Wang <hidden>
Date: 2019-08-26 09:43:40

Jiri Slaby [mailto:jslaby@suse.cz]
Sent: Monday, August 26, 2019 4:55 PM
[...]
Could you clarify *why* it conflicts? And how is the problem fixed by
0ee1f473496 avoided now?
In rtl8152_disconnect(), the flow would be as following.

static void rtl8152_disconnect(struct usb_interface *intf)
{
	...
	- netif_napi_del(&tp->napi);
	- unregister_netdev(tp->netdev);
	   - rtl8152_close
	      - napi_disable

Therefore you add a checking of RTL8152_UNPLUG to avoid
calling napi_disable() after netif_napi_del(). However,
after commit ffa9fec30ca0 ("r8152: set RTL8152_UNPLUG
only for real disconnection"), RTL8152_UNPLUG is not
always set when calling rtl8152_disconnect(). That is,
napi_disable() would be called after netif_napi_del(),
if RTL8152_UNPLUG is not set.

The best way is to avoid calling netif_napi_del() before
calling unregister_netdev(). And I has submitted such
patch following this one.

Best Regards,
Hayes

Re: [PATCH net v2 1/2] Revert "r8152: napi hangup fix after disconnect"

From: David Miller <davem@davemloft.net>
Date: 2019-08-26 20:55:55

From: Hayes Wang <redacted>
Date: Mon, 26 Aug 2019 09:43:32 +0000
Jiri Slaby [mailto:jslaby@suse.cz]
quoted
Sent: Monday, August 26, 2019 4:55 PM
[...]
quoted
Could you clarify *why* it conflicts? And how is the problem fixed by
0ee1f473496 avoided now?
In rtl8152_disconnect(), the flow would be as following.

static void rtl8152_disconnect(struct usb_interface *intf)
{
	...
	- netif_napi_del(&tp->napi);
	- unregister_netdev(tp->netdev);
	   - rtl8152_close
	      - napi_disable

Therefore you add a checking of RTL8152_UNPLUG to avoid
calling napi_disable() after netif_napi_del(). However,
after commit ffa9fec30ca0 ("r8152: set RTL8152_UNPLUG
only for real disconnection"), RTL8152_UNPLUG is not
always set when calling rtl8152_disconnect(). That is,
napi_disable() would be called after netif_napi_del(),
if RTL8152_UNPLUG is not set.

The best way is to avoid calling netif_napi_del() before
calling unregister_netdev(). And I has submitted such
patch following this one.
These details belong in the commit message, always.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help