mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 11:33:28 +02:00
wifi: rtw89: 8922a: increase beacon loss to 6 seconds
Intermittent beacon loss from specific AP triggers disconnection and reconnection. Increasing the beacon loss count will make the connection more stable. Signed-off-by: Kuan-Chung Chen <damon.chen@realtek.com> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/20250422014620.18421-2-pkshih@realtek.com
This commit is contained in:
parent
3e03579821
commit
74f754da76
|
|
@ -4495,6 +4495,7 @@ enum rtw89_fw_feature {
|
|||
RTW89_FW_FEATURE_LPS_CH_INFO,
|
||||
RTW89_FW_FEATURE_NO_PHYCAP_P1,
|
||||
RTW89_FW_FEATURE_NO_POWER_DIFFERENCE,
|
||||
RTW89_FW_FEATURE_BEACON_LOSS_COUNT_V1,
|
||||
};
|
||||
|
||||
struct rtw89_fw_suit {
|
||||
|
|
|
|||
|
|
@ -850,6 +850,7 @@ static const struct __fw_feat_cfg fw_feat_tbl[] = {
|
|||
__CFG_FW_FEAT(RTL8922A, lt, 0, 35, 49, 0, RFK_PRE_NOTIFY_V1),
|
||||
__CFG_FW_FEAT(RTL8922A, lt, 0, 35, 51, 0, NO_PHYCAP_P1),
|
||||
__CFG_FW_FEAT(RTL8922A, lt, 0, 35, 64, 0, NO_POWER_DIFFERENCE),
|
||||
__CFG_FW_FEAT(RTL8922A, ge, 0, 35, 71, 0, BEACON_LOSS_COUNT_V1),
|
||||
};
|
||||
|
||||
static void rtw89_fw_iterate_feature_cfg(struct rtw89_fw_info *fw,
|
||||
|
|
@ -4339,6 +4340,7 @@ int rtw89_fw_h2c_set_bcn_fltr_cfg(struct rtw89_dev *rtwdev,
|
|||
struct rtw89_h2c_bcnfltr *h2c;
|
||||
u32 len = sizeof(*h2c);
|
||||
struct sk_buff *skb;
|
||||
u8 max_cnt, cnt;
|
||||
int ret;
|
||||
|
||||
if (!RTW89_CHK_FW_FEATURE(BEACON_FILTER, &rtwdev->fw))
|
||||
|
|
@ -4367,12 +4369,20 @@ int rtw89_fw_h2c_set_bcn_fltr_cfg(struct rtw89_dev *rtwdev,
|
|||
skb_put(skb, len);
|
||||
h2c = (struct rtw89_h2c_bcnfltr *)skb->data;
|
||||
|
||||
if (RTW89_CHK_FW_FEATURE(BEACON_LOSS_COUNT_V1, &rtwdev->fw))
|
||||
max_cnt = BIT(7) - 1;
|
||||
else
|
||||
max_cnt = BIT(4) - 1;
|
||||
|
||||
cnt = min(RTW89_BCN_LOSS_CNT, max_cnt);
|
||||
|
||||
h2c->w0 = le32_encode_bits(connect, RTW89_H2C_BCNFLTR_W0_MON_RSSI) |
|
||||
le32_encode_bits(connect, RTW89_H2C_BCNFLTR_W0_MON_BCN) |
|
||||
le32_encode_bits(connect, RTW89_H2C_BCNFLTR_W0_MON_EN) |
|
||||
le32_encode_bits(RTW89_BCN_FLTR_OFFLOAD_MODE_DEFAULT,
|
||||
RTW89_H2C_BCNFLTR_W0_MODE) |
|
||||
le32_encode_bits(RTW89_BCN_LOSS_CNT, RTW89_H2C_BCNFLTR_W0_BCN_LOSS_CNT) |
|
||||
le32_encode_bits(cnt >> 4, RTW89_H2C_BCNFLTR_W0_BCN_LOSS_CNT_H3) |
|
||||
le32_encode_bits(cnt & 0xf, RTW89_H2C_BCNFLTR_W0_BCN_LOSS_CNT_L4) |
|
||||
le32_encode_bits(hyst, RTW89_H2C_BCNFLTR_W0_RSSI_HYST) |
|
||||
le32_encode_bits(thold + MAX_RSSI,
|
||||
RTW89_H2C_BCNFLTR_W0_RSSI_THRESHOLD) |
|
||||
|
|
|
|||
|
|
@ -333,7 +333,7 @@ struct rtw89_fw_macid_pause_sleep_grp {
|
|||
#define RTW89_SCAN_LIST_LIMIT_AX RTW89_SCAN_LIST_LIMIT(RTW89_MAC_CHINFO_SIZE)
|
||||
#define RTW89_SCAN_LIST_LIMIT_BE RTW89_SCAN_LIST_LIMIT(RTW89_MAC_CHINFO_SIZE_BE)
|
||||
|
||||
#define RTW89_BCN_LOSS_CNT 10
|
||||
#define RTW89_BCN_LOSS_CNT 60
|
||||
|
||||
struct rtw89_mac_chinfo {
|
||||
u8 period;
|
||||
|
|
@ -3813,7 +3813,8 @@ struct rtw89_h2c_bcnfltr {
|
|||
#define RTW89_H2C_BCNFLTR_W0_MON_BCN BIT(1)
|
||||
#define RTW89_H2C_BCNFLTR_W0_MON_EN BIT(2)
|
||||
#define RTW89_H2C_BCNFLTR_W0_MODE GENMASK(4, 3)
|
||||
#define RTW89_H2C_BCNFLTR_W0_BCN_LOSS_CNT GENMASK(11, 8)
|
||||
#define RTW89_H2C_BCNFLTR_W0_BCN_LOSS_CNT_H3 GENMASK(7, 5)
|
||||
#define RTW89_H2C_BCNFLTR_W0_BCN_LOSS_CNT_L4 GENMASK(11, 8)
|
||||
#define RTW89_H2C_BCNFLTR_W0_RSSI_HYST GENMASK(15, 12)
|
||||
#define RTW89_H2C_BCNFLTR_W0_RSSI_THRESHOLD GENMASK(23, 16)
|
||||
#define RTW89_H2C_BCNFLTR_W0_MAC_ID GENMASK(31, 24)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user