]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: rtw88: coex: Ignore BT info byte 5 from RTL8821A
authorBitterblue Smith <rtl8821cerfe2@gmail.com>
Wed, 25 Mar 2026 22:27:15 +0000 (00:27 +0200)
committerPing-Ke Shih <pkshih@realtek.com>
Mon, 30 Mar 2026 02:39:31 +0000 (10:39 +0800)
Sometimes while watching a Youtube video with Bluetooth headphones the
audio has a lot of interruptions, because the 5th byte of the BT info
sent by RTL8821AU has strange values, which result in
coex_stat->bt_hid_pair_num being 2 or 3. When this happens
rtw_coex_freerun_check() returns true, which causes
rtw_coex_action_wl_connected() to call rtw_coex_action_freerun() instead
of rtw_coex_action_bt_a2dp().

The RTL8821AU vendor driver doesn't do anything with the 5th byte of the
BT info, so ignore it here as well.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/bbf06c83-d2ee-4205-8fbb-829e2347586f@gmail.com
drivers/net/wireless/realtek/rtw88/coex.c

index ee4007fe6c189867d4791360f9684d988a5ccb6d..37c336def4191536340495da83529c31bfb43600 100644 (file)
@@ -3109,6 +3109,9 @@ void rtw_coex_bt_info_notify(struct rtw_dev *rtwdev, u8 *buf, u8 length)
        for (i = 0; i < COEX_BTINFO_LENGTH; i++)
                coex_stat->bt_info_c2h[rsp_source][i] = buf[i];
 
+       if (rtwdev->chip->id == RTW_CHIP_TYPE_8821A)
+               coex_stat->bt_info_c2h[rsp_source][5] = 0;
+
        /* get the same info from bt, skip it */
        if (coex_stat->bt_info_c2h[rsp_source][1] == coex_stat->bt_info_lb2 &&
            coex_stat->bt_info_c2h[rsp_source][2] == coex_stat->bt_info_lb3 &&