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;