Skip to contentSkip to conversation

staging: rtl8192e: Fix W_DISABLE# does not work after stop/start

PATCH Superseded Philipp Hortmann 3 participants 4 messages Apr 14, 2023 – Apr 17, 2023 Staging

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 staging: rtl8192e: Fix W_DISABLE# does not work after stop/start

When loading the driver for rtl8192e, the W_DISABLE# switch is working as intended. But when the WLAN is turned off in software and then turned on again the W_DISABLE# does not work anymore. Reason for this is that in the function _rtl92e_dm_check_rf_ctrl_gpio() the bfirst_after_down is checked and returned when true. bfirst_after_down is set true when switching the WLAN off in software. But it is not set to false again when WLAN is turned on again.

Add bfirst_after_down = false in _rtl92e_sta_up to reset bit and fix above described bug.

---
Tested with rtl8192e (WLL6130-D99)
Transferred this patch over wlan connection of rtl8192e

---
 drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 1 +
 1 file changed, 1 insertion(+)
drivers/staging/rtl8192e/rtl8192e/rtl_core.c +1 -0
index 45989a77a27c..a644543015ee 100644
@@ -648,6 +648,7 @@ static int _rtl92e_sta_up(struct net_device *dev, bool is_silent_reset)
 	else
 		netif_wake_queue(dev);
 
+	priv->bfirst_after_down = false;
 	return 0;
 }
 
Signature · 1 line
2.40.0
#1 lore raw
Quoted 11 lines · Philipp Hortmann

When loading the driver for rtl8192e, the W_DISABLE# switch is working as intended. But when the WLAN is turned off in software and then turned on again the W_DISABLE# does not work anymore. Reason for this is that in the function _rtl92e_dm_check_rf_ctrl_gpio() the bfirst_after_down is checked and returned when true. bfirst_after_down is set true when switching the WLAN off in software. But it is not set to false again when WLAN is turned on again.

Add bfirst_after_down = false in _rtl92e_sta_up to reset bit and fix above described bug.

Quoted 7 lines

---
Tested with rtl8192e (WLL6130-D99)
Transferred this patch over wlan connection of rtl8192e

---
 drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 1 +
 1 file changed, 1 insertion(+)

What commit id does this fix? Should it go to the stable kernels? If so, how far back?

thanks,

greg k-h

#2 lore raw
Quoted 21 lines · Greg Kroah-Hartman
Quoted 11 lines · Philipp Hortmann

When loading the driver for rtl8192e, the W_DISABLE# switch is working as intended. But when the WLAN is turned off in software and then turned on again the W_DISABLE# does not work anymore. Reason for this is that in the function _rtl92e_dm_check_rf_ctrl_gpio() the bfirst_after_down is checked and returned when true. bfirst_after_down is set true when switching the WLAN off in software. But it is not set to false again when WLAN is turned on again.

Add bfirst_after_down = false in _rtl92e_sta_up to reset bit and fix above described bug.

Quoted 7 lines

---
Tested with rtl8192e (WLL6130-D99)
Transferred this patch over wlan connection of rtl8192e

---
  drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 1 +
  1 file changed, 1 insertion(+)
Quoted 1 line

What commit id does this fix?

To me the driver was introduced in V3.2 and the issue did not change up to now. Have a look at:
https://elixir.bootlin.com/linux/v3.2-rc1/A/ident/bfirst_after_down
https://elixir.bootlin.com/linux/v6.2.11/A/ident/bfirst_after_down

Quoted 2 lines

Should it go to the stable kernels? If
so, how far back?

The second issue that is related to the W_DISABLE# signal is that the connection is not reestablished when the signal is released. I need more time to fix this issue. When I have fixed both we could backport them.

Quoted 4 lines

thanks,

greg k-h

thanks,

Philipp

#3 lore raw
Quoted 22 lines · Philipp Hortmann
Quoted 21 lines · Greg Kroah-Hartman
Quoted 18 lines · Philipp Hortmann

When loading the driver for rtl8192e, the W_DISABLE# switch is working as intended. But when the WLAN is turned off in software and then turned on again the W_DISABLE# does not work anymore. Reason for this is that in the function _rtl92e_dm_check_rf_ctrl_gpio() the bfirst_after_down is checked and returned when true. bfirst_after_down is set true when switching the WLAN off in software. But it is not set to false again when WLAN is turned on again.

Add bfirst_after_down = false in _rtl92e_sta_up to reset bit and fix above described bug.

---
Tested with rtl8192e (WLL6130-D99)
Transferred this patch over wlan connection of rtl8192e

---
  drivers/staging/rtl8192e/rtl8192e/rtl_core.c | 1 +
  1 file changed, 1 insertion(+)
Quoted 6 lines
Quoted 1 line

What commit id does this fix?

To me the driver was introduced in V3.2 and the issue did not change up to now. Have a look at:
https://elixir.bootlin.com/linux/v3.2-rc1/A/ident/bfirst_after_down
https://elixir.bootlin.com/linux/v6.2.11/A/ident/bfirst_after_down

Just resend with a Fixes tag.

regards,
dan carpenter