mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 10:08:59 +00:00
6bcd1c2501
Some local patches have been sent to upstream and they are slightly different from the upstream version. So it's better to replace them to avoid conflicts with the new mac80211 backport driver. The different parts have been merged into patch 996. This commit also includes some additional fixes: * Fix watchdog function. * Improve MT7620 register initialization. * Introduce DMA busy watchdog for rt2800. P.S. Sometimes rt2800 series chips may fall into a DMA busy state. The tx queues become very slow and the client cannot connect to the AP. Usually, We can see a lot of hostapd warnings at this point: 'hostapd: IEEE 802.11: did not acknowledge authentication response' The DMA busy watchdog can help the driver automatically recover from this abnormal state. By the way, setting higer 'cell_density' and disabling 'disassoc_low_ack' can significantly reduce the probability of the DMA busy. Signed-off-by: Shiji Yang <yangshiji66@qq.com>
44 lines
2.1 KiB
Diff
44 lines
2.1 KiB
Diff
From 570beb6285fd355904b22625da20809f477096c5 Mon Sep 17 00:00:00 2001
|
|
From: Shiji Yang <yangshiji66@outlook.com>
|
|
Date: Sat, 4 Nov 2023 16:57:59 +0800
|
|
Subject: wifi: rt2x00: disable RTS threshold for rt2800 by default
|
|
|
|
rt2800 has a lot of registers to control the RTS enable/disable
|
|
status for different rates. And the driver control them via
|
|
rt2800_set_rts_threshold(). When RTS was disabled in user
|
|
interface, this function won't be called at all. This means that
|
|
the RTS is still 'on' for CCK and OFDM rates. So we'd better to
|
|
disable them by default because it should be like this. The RTS
|
|
for HT20 and HT40 is already default off so we don't need to
|
|
touch them. If we toggle the RTS status, these register bits
|
|
will be enable/disable again by rt2800_set_rts_threshold().
|
|
|
|
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
|
|
Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
|
|
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
|
Link: https://lore.kernel.org/r/TYAP286MB03155DDB953155B7A2DE849ABCA4A@TYAP286MB0315.JPNP286.PROD.OUTLOOK.COM
|
|
---
|
|
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
@@ -6100,7 +6100,7 @@ static int rt2800_init_registers(struct
|
|
rt2x00_set_field32(®, CCK_PROT_CFG_TX_OP_ALLOW_MM40, 0);
|
|
rt2x00_set_field32(®, CCK_PROT_CFG_TX_OP_ALLOW_GF20, 1);
|
|
rt2x00_set_field32(®, CCK_PROT_CFG_TX_OP_ALLOW_GF40, 0);
|
|
- rt2x00_set_field32(®, CCK_PROT_CFG_RTS_TH_EN, 1);
|
|
+ rt2x00_set_field32(®, CCK_PROT_CFG_RTS_TH_EN, 0);
|
|
rt2800_register_write(rt2x00dev, CCK_PROT_CFG, reg);
|
|
|
|
reg = rt2800_register_read(rt2x00dev, OFDM_PROT_CFG);
|
|
@@ -6113,7 +6113,7 @@ static int rt2800_init_registers(struct
|
|
rt2x00_set_field32(®, OFDM_PROT_CFG_TX_OP_ALLOW_MM40, 0);
|
|
rt2x00_set_field32(®, OFDM_PROT_CFG_TX_OP_ALLOW_GF20, 1);
|
|
rt2x00_set_field32(®, OFDM_PROT_CFG_TX_OP_ALLOW_GF40, 0);
|
|
- rt2x00_set_field32(®, OFDM_PROT_CFG_RTS_TH_EN, 1);
|
|
+ rt2x00_set_field32(®, OFDM_PROT_CFG_RTS_TH_EN, 0);
|
|
rt2800_register_write(rt2x00dev, OFDM_PROT_CFG, reg);
|
|
|
|
reg = rt2800_register_read(rt2x00dev, MM20_PROT_CFG);
|