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

Message ID 20230414183452.GA12295@matrix-ESPRIMO-P710
State New
Headers
Series staging: rtl8192e: Fix W_DISABLE# does not work after stop/start |

Commit Message

Philipp Hortmann April 14, 2023, 6:34 p.m. UTC
  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.

Signed-off-by: Philipp Hortmann <philipp.g.hortmann@gmail.com>
---
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(+)
  

Comments

Greg KH April 15, 2023, 4:02 p.m. UTC | #1
On Fri, Apr 14, 2023 at 08:34:52PM +0200, Philipp Hortmann wrote:
> 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.
> 
> Signed-off-by: Philipp Hortmann <philipp.g.hortmann@gmail.com>
> ---
> 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
  
Philipp Hortmann April 16, 2023, 5:55 a.m. UTC | #2
On 4/15/23 18:02, Greg Kroah-Hartman wrote:
> On Fri, Apr 14, 2023 at 08:34:52PM +0200, Philipp Hortmann wrote:
>> 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.
>>
>> Signed-off-by: Philipp Hortmann <philipp.g.hortmann@gmail.com>
>> ---
>> 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?
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

 > 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.
> 
> thanks,
> 
> greg k-h

thanks,

Philipp
  
Dan Carpenter April 17, 2023, 7:58 a.m. UTC | #3
On Sun, Apr 16, 2023 at 07:55:32AM +0200, Philipp Hortmann wrote:
> On 4/15/23 18:02, Greg Kroah-Hartman wrote:
> > On Fri, Apr 14, 2023 at 08:34:52PM +0200, Philipp Hortmann wrote:
> > > 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.
> > > 
> > > Signed-off-by: Philipp Hortmann <philipp.g.hortmann@gmail.com>
> > > ---
> > > 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?
> 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
  

Patch

diff --git a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
index 45989a77a27c..a644543015ee 100644
--- a/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
@@ -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;
 }