Search Linux Wireless

Re: rtl8723be signal strength loss, and possibly a OOPS/BUG

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 2018-05-19 at 20:43 +0000, Mattias Jernberg wrote:
> Hi
> 
> With kernel 4.16 I experience a loss in signal strength on rtl8723be,
> it is very similar to having the ant_sel parameter wrong (or missing),
> iw scan shows only my own access point next to me and with a signal
> strength of under -60 rather than above -30.
> 
> I bisected this down to 874e837d67d0db179c9771f38fd21df07c703e93 being
> the offending commit.
> 
The commit 874e837d67d0 ("rtlwifi: fill FW version and subversion") set
correct firmware version that is used by btcoex to collaborate with 
firmware properly.

> I have also seen three BUGs that might be related. They appear when
> setting ant_sel=1
> 
> * The first one occurred (both on Debians 4.16.5 kernel and on
> mainline 4.17-rc5) when I did modprobe rtl8723be ant_sel=1, after a
> modprobe -r rtl8723be.
> * The second one when booting with ant_sel=1 in /etc/modprobe.d.
> * The third one is when booting
> 874e837d67d0db179c9771f38fd21df07c703e93 and having ant_sel=1.
> 
> Correct (at least on 4.15.0) for this laptop is ant_sel=2.
> 

With ant_sel=1, it will run into ex_btc8723b1ant_bt_info_notify() of 
btcoexist/halbtc8723b1ant.c, and cause the bugs you reported.
With ant_sel=2, another function corresponding to 2ant is executed, so
there is no bug message.
I have sent a patchset to linux-wireless that will also fix this bug.
If you want to fix it locally, please try below patch based on 
commit bf516e7d8b1c ("rtlwifi: remove duplicate definition of antenna 
number for btcoex") of wireless-drivers-next tree.

diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c
index 4b963fd27d64..868e78870029 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c
@@ -762,10 +762,10 @@ void rtl8723be_c2h_packet_handler(struct ieee80211_hw *hw, u8 *buffer, u8 len)
 
        switch (c2h_cmd_id) {
        case C2H_8723B_BT_INFO:
-       case C2H_8723B_BT_MP:
                rtl_c2hcmd_enqueue(hw, c2h_cmd_id, c2h_cmd_len, tmp_buf);
                break;
 
+       case C2H_8723B_BT_MP:
        default:
                rtl8723be_c2h_content_parsing(hw, c2h_cmd_id, c2h_cmd_len,
                                              tmp_buf);


Regards
PK





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux