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