From f7e9be89db59759333ee65c21a1fd8beb0ec91d9 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 22 Feb 2020 10:02:21 +0100 Subject: [PATCH] mt76: mt7603: add upper limit for dynamic sensitivity minimum receive power If the minimum power is raised too much, it can make it impossible for weaker clients to connect, and there are some scenarios where the false detects will not go down no matter how much the sensitivity is adjusted. Fixes connectivity issues in some rare cases Signed-off-by: Felix Fietkau --- mt7603/debugfs.c | 2 ++ mt7603/init.c | 1 + mt7603/mac.c | 3 ++- mt7603/mt7603.h | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/mt7603/debugfs.c b/mt7603/debugfs.c index 87c74391..e32d5118 100644 --- a/mt7603/debugfs.c +++ b/mt7603/debugfs.c @@ -123,4 +123,6 @@ void mt7603_init_debugfs(struct mt7603_dev *dev) mt7603_radio_read); debugfs_create_bool("dynamic_sensitivity", 0600, dir, &dev->dynamic_sensitivity); + debugfs_create_u8("sensitivity_limit", 0600, dir, + &dev->sensitivity_limit); } diff --git a/mt7603/init.c b/mt7603/init.c index 0696dbf2..859c70eb 100644 --- a/mt7603/init.c +++ b/mt7603/init.c @@ -540,6 +540,7 @@ int mt7603_register_device(struct mt7603_dev *dev) dev->mt76.antenna_mask = 1; dev->slottime = 9; + dev->sensitivity_limit = 28; ret = mt7603_init_hardware(dev); if (ret) diff --git a/mt7603/mac.c b/mt7603/mac.c index 67ef7b66..3c22ae6a 100644 --- a/mt7603/mac.c +++ b/mt7603/mac.c @@ -1750,7 +1750,8 @@ mt7603_false_cca_check(struct mt7603_dev *dev) min_signal -= 15; false_cca = dev->false_cca_ofdm + dev->false_cca_cck; - if (false_cca > 600) { + if (false_cca > 600 && + dev->sensitivity < -100 + dev->sensitivity_limit) { if (!dev->sensitivity) dev->sensitivity = -92; else diff --git a/mt7603/mt7603.h b/mt7603/mt7603.h index 79a8f4dc..52a77a1f 100644 --- a/mt7603/mt7603.h +++ b/mt7603/mt7603.h @@ -140,6 +140,7 @@ struct mt7603_dev { bool dynamic_sensitivity; s8 sensitivity; + u8 sensitivity_limit; u8 beacon_check; u8 tx_hang_check;