2019-10-16 10:21:11

by Chris Chiu

[permalink] [raw]
Subject: [PATCH v2] rtl8xxxu: fix RTL8723BU connection failure issue after warm reboot

The RTL8723BU has problems connecting to AP after each warm reboot.
Sometimes it returns no scan result, and in most cases, it fails
the authentication for unknown reason. However, it works totally
fine after cold reboot.

Compare the value of register SYS_CR and SYS_CLK_MAC_CLK_ENABLE
for cold reboot and warm reboot, the registers imply that the MAC
is already powered and thus some procedures are skipped during
driver initialization. Double checked the vendor driver, it reads
the SYS_CR and SYS_CLK_MAC_CLK_ENABLE also but doesn't skip any
during initialization based on them. This commit only tells the
RTL8723BU to do full initialization without checking MAC status.

Signed-off-by: Chris Chiu <[email protected]>
---

Note:
v2: fix typo of commit message


drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h | 1 +
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723b.c | 1 +
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 3 +++
3 files changed, 5 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
index 22e95b11bfbb..6598c8d786ea 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
@@ -1425,6 +1425,7 @@ struct rtl8xxxu_fileops {
u8 has_s0s1:1;
u8 has_tx_report:1;
u8 gen2_thermal_meter:1;
+ u8 needs_full_init:1;
u32 adda_1t_init;
u32 adda_1t_path_on;
u32 adda_2t_path_on_a;
diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723b.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723b.c
index 9ba661b3d767..a1c3787abe2e 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723b.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8723b.c
@@ -1668,6 +1668,7 @@ struct rtl8xxxu_fileops rtl8723bu_fops = {
.has_s0s1 = 1,
.has_tx_report = 1,
.gen2_thermal_meter = 1,
+ .needs_full_init = 1,
.adda_1t_init = 0x01c00014,
.adda_1t_path_on = 0x01c00014,
.adda_2t_path_on_a = 0x01c00014,
diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
index e4c1b08c8070..8420cb269b8d 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
@@ -3900,6 +3900,9 @@ static int rtl8xxxu_init_device(struct ieee80211_hw *hw)
else
macpower = true;

+ if (fops->needs_full_init)
+ macpower = false;
+
ret = fops->power_on(priv);
if (ret < 0) {
dev_warn(dev, "%s: Failed power on\n", __func__);
--
2.23.0


2019-10-21 02:28:11

by Chris Chiu

[permalink] [raw]
Subject: Re: [PATCH v2] rtl8xxxu: fix RTL8723BU connection failure issue after warm reboot

On Thu, Oct 17, 2019 at 10:26 AM Chris Chiu <[email protected]> wrote:
>
> On Wed, Oct 16, 2019 at 9:54 AM Chris Chiu <[email protected]> wrote:
> >
> > The RTL8723BU has problems connecting to AP after each warm reboot.
> > Sometimes it returns no scan result, and in most cases, it fails
> > the authentication for unknown reason. However, it works totally
> > fine after cold reboot.
> >
> > Compare the value of register SYS_CR and SYS_CLK_MAC_CLK_ENABLE
> > for cold reboot and warm reboot, the registers imply that the MAC
> > is already powered and thus some procedures are skipped during
> > driver initialization. Double checked the vendor driver, it reads
> > the SYS_CR and SYS_CLK_MAC_CLK_ENABLE also but doesn't skip any
> > during initialization based on them. This commit only tells the
> > RTL8723BU to do full initialization without checking MAC status.
> >
> > Signed-off-by: Chris Chiu <[email protected]>
> Signed-off-by: Jes Sorensen <[email protected]>
>
> Sorry, I forgot to add Jes.
>
> Chris
> > ---
> >
> > Note:
> > v2: fix typo of commit message
> >
> >

Gentle ping. Cheers.

Chris

2019-10-21 08:30:50

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH v2] rtl8xxxu: fix RTL8723BU connection failure issue after warm reboot

Chris Chiu <[email protected]> writes:

> On Thu, Oct 17, 2019 at 10:26 AM Chris Chiu <[email protected]> wrote:
>>
>> On Wed, Oct 16, 2019 at 9:54 AM Chris Chiu <[email protected]> wrote:
>> >
>> > The RTL8723BU has problems connecting to AP after each warm reboot.
>> > Sometimes it returns no scan result, and in most cases, it fails
>> > the authentication for unknown reason. However, it works totally
>> > fine after cold reboot.
>> >
>> > Compare the value of register SYS_CR and SYS_CLK_MAC_CLK_ENABLE
>> > for cold reboot and warm reboot, the registers imply that the MAC
>> > is already powered and thus some procedures are skipped during
>> > driver initialization. Double checked the vendor driver, it reads
>> > the SYS_CR and SYS_CLK_MAC_CLK_ENABLE also but doesn't skip any
>> > during initialization based on them. This commit only tells the
>> > RTL8723BU to do full initialization without checking MAC status.
>> >
>> > Signed-off-by: Chris Chiu <[email protected]>
>> Signed-off-by: Jes Sorensen <[email protected]>
>>
>> Sorry, I forgot to add Jes.
>>
>> Chris
>> > ---
>> >
>> > Note:
>> > v2: fix typo of commit message
>> >
>> >
>
> Gentle ping. Cheers.

To reduce email please avoid pinging like this, it has been only five
days since you submitted this version and this is not a 24/7 service. I
have documented how you can follow the status from patchwork:

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches#checking_state_of_patches_from_patchwork

--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches