diff mbox series

rtlwifi: Fix non-working BSS STA mode

Message ID 20181212051335.22580-1-kai.heng.feng@canonical.com (mailing list archive)
State Changes Requested
Delegated to: Kalle Valo
Headers show
Series rtlwifi: Fix non-working BSS STA mode | expand

Commit Message

Kai-Heng Feng Dec. 12, 2018, 5:13 a.m. UTC
Once BSS STA mode gets started, it can be scanned by other clients but
cannot entablish a connection.

Turns out the set_bcn_reg() and its *_set_beacon_related_registers()
callbacks never get called so it has problem beaconing.

Enable the function in rtl_op_bss_info_changed() can make BSS STA mode
start to work.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 drivers/net/wireless/realtek/rtlwifi/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ping-Ke Shih Dec. 13, 2018, 12:35 a.m. UTC | #1
On Wed, 2018-12-12 at 13:13 +0800, Kai-Heng Feng wrote:
> Once BSS STA mode gets started, it can be scanned by other clients but
> cannot entablish a connection.
         ^^^ typo: establish
> 
> Turns out the set_bcn_reg() and its *_set_beacon_related_registers()
> callbacks never get called so it has problem beaconing.
> 
> Enable the function in rtl_op_bss_info_changed() can make BSS STA mode
> start to work.
> 
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> ---
>  drivers/net/wireless/realtek/rtlwifi/core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c
> b/drivers/net/wireless/realtek/rtlwifi/core.c
> index 4bf7967590ca..11d27a5cc576 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/core.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/core.c
> @@ -1054,7 +1054,7 @@ static void rtl_op_bss_info_changed(struct ieee80211_hw
> *hw,
>  					 "BSS_CHANGED_BEACON_ENABLED\n");
>  
>  				/*start hw beacon interrupt. */
> -				/*rtlpriv->cfg->ops->set_bcn_reg(hw); */
> +				rtlpriv->cfg->ops->set_bcn_reg(hw);
>  				mac->beacon_enabled = 1;
>  				rtlpriv->cfg->ops->update_interrupt_mask(hw,
>  						rtlpriv->cfg->maps

Which wifi chip do you use? And, please share your test scenario.

Thanks
Kai-Heng Feng Dec. 13, 2018, 5:36 a.m. UTC | #2
> On Dec 13, 2018, at 08:35, Pkshih <pkshih@realtek.com> wrote:
> 
> On Wed, 2018-12-12 at 13:13 +0800, Kai-Heng Feng wrote:
>> Once BSS STA mode gets started, it can be scanned by other clients but
>> cannot entablish a connection.
>          ^^^ typo: establish
>> 
>> Turns out the set_bcn_reg() and its *_set_beacon_related_registers()
>> callbacks never get called so it has problem beaconing.
>> 
>> Enable the function in rtl_op_bss_info_changed() can make BSS STA mode
>> start to work.
>> 
>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>> ---
>>  drivers/net/wireless/realtek/rtlwifi/core.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c
>> b/drivers/net/wireless/realtek/rtlwifi/core.c
>> index 4bf7967590ca..11d27a5cc576 100644
>> --- a/drivers/net/wireless/realtek/rtlwifi/core.c
>> +++ b/drivers/net/wireless/realtek/rtlwifi/core.c
>> @@ -1054,7 +1054,7 @@ static void rtl_op_bss_info_changed(struct ieee80211_hw
>> *hw,
>>  					 "BSS_CHANGED_BEACON_ENABLED\n");
>>  
>>  				/*start hw beacon interrupt. */
>> -				/*rtlpriv->cfg->ops->set_bcn_reg(hw); */
>> +				rtlpriv->cfg->ops->set_bcn_reg(hw);
>>  				mac->beacon_enabled = 1;
>>  				rtlpriv->cfg->ops->update_interrupt_mask(hw,
>>  						rtlpriv->cfg->maps
> 
> Which wifi chip do you use? And, please share your test scenario.

It’s Realtek 8723DE, which is currently not supported in mainline so I use rtl8723de in rtlwifi_new [1] to test it out.

The test scenario is simply enable hotspot through network manager, which uses wpa_supplicant to do the work.

[1] https://github.com/lwfinger/rtlwifi_new

Kai-Heng

> 
> Thanks
>
Ping-Ke Shih Dec. 13, 2018, 7:39 a.m. UTC | #3
On Thu, 2018-12-13 at 13:36 +0800, Kai Heng Feng wrote:
> > On Dec 13, 2018, at 08:35, Pkshih <pkshih@realtek.com> wrote:
> > 
> > On Wed, 2018-12-12 at 13:13 +0800, Kai-Heng Feng wrote:
> >> Once BSS STA mode gets started, it can be scanned by other clients but
> >> cannot entablish a connection.
> >          ^^^ typo: establish
> >> 
> >> Turns out the set_bcn_reg() and its *_set_beacon_related_registers()
> >> callbacks never get called so it has problem beaconing.
> >> 
> >> Enable the function in rtl_op_bss_info_changed() can make BSS STA mode
> >> start to work.
> >> 
> >> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> >> ---
> >>  drivers/net/wireless/realtek/rtlwifi/core.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >> 
> >> diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c
> >> b/drivers/net/wireless/realtek/rtlwifi/core.c
> >> index 4bf7967590ca..11d27a5cc576 100644
> >> --- a/drivers/net/wireless/realtek/rtlwifi/core.c
> >> +++ b/drivers/net/wireless/realtek/rtlwifi/core.c
> >> @@ -1054,7 +1054,7 @@ static void rtl_op_bss_info_changed(struct
> ieee80211_hw
> >> *hw,
> >>  					 "BSS_CHANGED_BEACON_ENABLED\n");
> >>  
> >>  				/*start hw beacon interrupt. */
> >> -				/*rtlpriv->cfg->ops->set_bcn_reg(hw); */
> >> +				rtlpriv->cfg->ops->set_bcn_reg(hw);
> >>  				mac->beacon_enabled = 1;
> >>  				rtlpriv->cfg->ops-
> >update_interrupt_mask(hw,
> >>  						rtlpriv->cfg->maps
> > 
> > Which wifi chip do you use? And, please share your test scenario.
> 
> It’s Realtek 8723DE, which is currently not supported in mainline so I use
> rtl8723de in rtlwifi_new [1] to test it out.
> 
> The test scenario is simply enable hotspot through network manager, which uses
> wpa_supplicant to do the work.
> 
> [1] https://github.com/lwfinger/rtlwifi_new
> 

Since rtl8723de isn't supported yet, this patch would be pending.
I'll take time to check whether it works on existing chips.

Thanks
PK
Kai-Heng Feng Dec. 13, 2018, 8:03 a.m. UTC | #4
> On Dec 13, 2018, at 15:39, Pkshih <pkshih@realtek.com> wrote:
> 
> On Thu, 2018-12-13 at 13:36 +0800, Kai Heng Feng wrote:
>>> On Dec 13, 2018, at 08:35, Pkshih <pkshih@realtek.com> wrote:
>>>  
>>> On Wed, 2018-12-12 at 13:13 +0800, Kai-Heng Feng wrote:
>>>> Once BSS STA mode gets started, it can be scanned by other clients but
>>>> cannot entablish a connection.
>>>           ^^^ typo: establish
>>>>  
>>>> Turns out the set_bcn_reg() and its *_set_beacon_related_registers()
>>>> callbacks never get called so it has problem beaconing.
>>>>  
>>>> Enable the function in rtl_op_bss_info_changed() can make BSS STA mode
>>>> start to work.
>>>>  
>>>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>>>> ---
>>>>   drivers/net/wireless/realtek/rtlwifi/core.c | 2 +-
>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>  
>>>> diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c
>>>> b/drivers/net/wireless/realtek/rtlwifi/core.c
>>>> index 4bf7967590ca..11d27a5cc576 100644
>>>> --- a/drivers/net/wireless/realtek/rtlwifi/core.c
>>>> +++ b/drivers/net/wireless/realtek/rtlwifi/core.c
>>>> @@ -1054,7 +1054,7 @@ static void rtl_op_bss_info_changed(struct
>> ieee80211_hw
>>>> *hw,
>>>>   					 "BSS_CHANGED_BEACON_ENABLED\n");
>>>>   
>>>>   				/*start hw beacon interrupt. */
>>>> -				/*rtlpriv->cfg->ops->set_bcn_reg(hw); */
>>>> +				rtlpriv->cfg->ops->set_bcn_reg(hw);
>>>>   				mac->beacon_enabled = 1;
>>>>   				rtlpriv->cfg->ops-
>>> update_interrupt_mask(hw,
>>>>   						rtlpriv->cfg->maps
>>>  
>>> Which wifi chip do you use? And, please share your test scenario.
>> 
>> It’s Realtek 8723DE, which is currently not supported in mainline so I use
>> rtl8723de in rtlwifi_new [1] to test it out.
>> 
>> The test scenario is simply enable hotspot through network manager, which uses
>> wpa_supplicant to do the work.
>> 
>> [1] https://github.com/lwfinger/rtlwifi_new
>> 
> 
> Since rtl8723de isn't supported yet, this patch would be pending.
> I'll take time to check whether it works on existing chips.

Thanks, that will be great.

Unrelated question:
Is it possible to use a DMI table to select correct ant_sel for affected HP laptops?
This can bring better out-of-the-box experience for users.

Kai-Heng

> 
> Thanks
> PK
Kalle Valo Dec. 20, 2018, 6:42 a.m. UTC | #5
Kai-Heng Feng <kai.heng.feng@canonical.com> wrote:

> Once BSS STA mode gets started, it can be scanned by other clients but
> cannot entablish a connection.
> 
> Turns out the set_bcn_reg() and its *_set_beacon_related_registers()
> callbacks never get called so it has problem beaconing.
> 
> Enable the function in rtl_op_bss_info_changed() can make BSS STA mode
> start to work.
> 
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>

The commit log is quite misleading. It implies that the client mode is broken
for all rtlwifi hardware and that can't be the case, otherwise we would be
flooded by bug reports. So please improve the commit log and describe clearly
the problem you are solving.
Kai-Heng Feng Dec. 20, 2018, 12:56 p.m. UTC | #6
> On Dec 20, 2018, at 14:42, Kalle Valo <kvalo@codeaurora.org> wrote:
> 
> Kai-Heng Feng <kai.heng.feng@canonical.com> wrote:
> 
>> Once BSS STA mode gets started, it can be scanned by other clients but
>> cannot entablish a connection.
>> 
>> Turns out the set_bcn_reg() and its *_set_beacon_related_registers()
>> callbacks never get called so it has problem beaconing.
>> 
>> Enable the function in rtl_op_bss_info_changed() can make BSS STA mode
>> start to work.
>> 
>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> 
> The commit log is quite misleading. It implies that the client mode is broken
> for all rtlwifi hardware and that can't be the case, otherwise we would be
> flooded by bug reports. So please improve the commit log and describe clearly
> the problem you are solving.

You are right. I'll wait for PKShih’s test result and update commit log afterwards.

Kai-Heng

> 
> -- 
> https://patchwork.kernel.org/patch/10725537/
> 
> https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
>
diff mbox series

Patch

diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c b/drivers/net/wireless/realtek/rtlwifi/core.c
index 4bf7967590ca..11d27a5cc576 100644
--- a/drivers/net/wireless/realtek/rtlwifi/core.c
+++ b/drivers/net/wireless/realtek/rtlwifi/core.c
@@ -1054,7 +1054,7 @@  static void rtl_op_bss_info_changed(struct ieee80211_hw *hw,
 					 "BSS_CHANGED_BEACON_ENABLED\n");
 
 				/*start hw beacon interrupt. */
-				/*rtlpriv->cfg->ops->set_bcn_reg(hw); */
+				rtlpriv->cfg->ops->set_bcn_reg(hw);
 				mac->beacon_enabled = 1;
 				rtlpriv->cfg->ops->update_interrupt_mask(hw,
 						rtlpriv->cfg->maps