kernel-5.15.86
This commit is contained in:
+74
@@ -0,0 +1,74 @@
|
||||
From c1afb26727d9e507d3e17a9890e7aaf7fc85cd55 Mon Sep 17 00:00:00 2001
|
||||
From: Po-Hao Huang <phhuang@realtek.com>
|
||||
Date: Fri, 17 Dec 2021 09:27:08 +0800
|
||||
Subject: rtw88: 8822c: update rx settings to prevent potential hw deadlock
|
||||
|
||||
These settings enables mac to detect and recover when rx fifo
|
||||
circuit deadlock occurs. Previous version missed this, so we fix it.
|
||||
|
||||
Signed-off-by: Po-Hao Huang <phhuang@realtek.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20211217012708.8623-1-pkshih@realtek.com
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw88/main.c | 2 +-
|
||||
drivers/net/wireless/realtek/rtw88/rtw8821c.h | 2 +-
|
||||
drivers/net/wireless/realtek/rtw88/rtw8822b.c | 2 +-
|
||||
drivers/net/wireless/realtek/rtw88/rtw8822c.c | 2 +-
|
||||
4 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c
|
||||
index 78fcbc20942db..274e0af959177 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/main.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/main.c
|
||||
@@ -1869,7 +1869,7 @@ int rtw_core_init(struct rtw_dev *rtwdev)
|
||||
|
||||
/* default rx filter setting */
|
||||
rtwdev->hal.rcr = BIT_APP_FCS | BIT_APP_MIC | BIT_APP_ICV |
|
||||
- BIT_HTC_LOC_CTRL | BIT_APP_PHYSTS |
|
||||
+ BIT_PKTCTL_DLEN | BIT_HTC_LOC_CTRL | BIT_APP_PHYSTS |
|
||||
BIT_AB | BIT_AM | BIT_APM;
|
||||
|
||||
ret = rtw_load_firmware(rtwdev, RTW_NORMAL_FW);
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8821c.h b/drivers/net/wireless/realtek/rtw88/rtw8821c.h
|
||||
index 112faa60f653e..d9fbddd7b0f35 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/rtw8821c.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.h
|
||||
@@ -131,7 +131,7 @@ _rtw_write32s_mask(struct rtw_dev *rtwdev, u32 addr, u32 mask, u32 data)
|
||||
#define WLAN_TX_FUNC_CFG2 0x30
|
||||
#define WLAN_MAC_OPT_NORM_FUNC1 0x98
|
||||
#define WLAN_MAC_OPT_LB_FUNC1 0x80
|
||||
-#define WLAN_MAC_OPT_FUNC2 0x30810041
|
||||
+#define WLAN_MAC_OPT_FUNC2 0xb0810041
|
||||
|
||||
#define WLAN_SIFS_CFG (WLAN_SIFS_CCK_CONT_TX | \
|
||||
(WLAN_SIFS_OFDM_CONT_TX << BIT_SHIFT_SIFS_OFDM_CTX) | \
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
|
||||
index a4cbcc6bdcd14..dd4fbb82750d5 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
|
||||
@@ -205,7 +205,7 @@ static void rtw8822b_phy_set_param(struct rtw_dev *rtwdev)
|
||||
#define WLAN_TX_FUNC_CFG2 0x30
|
||||
#define WLAN_MAC_OPT_NORM_FUNC1 0x98
|
||||
#define WLAN_MAC_OPT_LB_FUNC1 0x80
|
||||
-#define WLAN_MAC_OPT_FUNC2 0x30810041
|
||||
+#define WLAN_MAC_OPT_FUNC2 0xb0810041
|
||||
|
||||
#define WLAN_SIFS_CFG (WLAN_SIFS_CCK_CONT_TX | \
|
||||
(WLAN_SIFS_OFDM_CONT_TX << BIT_SHIFT_SIFS_OFDM_CTX) | \
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
|
||||
index a8b95dcdb8e90..e01d61b5d104b 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
|
||||
@@ -1962,7 +1962,7 @@ static void rtw8822c_phy_set_param(struct rtw_dev *rtwdev)
|
||||
#define WLAN_TX_FUNC_CFG2 0x30
|
||||
#define WLAN_MAC_OPT_NORM_FUNC1 0x98
|
||||
#define WLAN_MAC_OPT_LB_FUNC1 0x80
|
||||
-#define WLAN_MAC_OPT_FUNC2 0x30810041
|
||||
+#define WLAN_MAC_OPT_FUNC2 0xb0810041
|
||||
#define WLAN_MAC_INT_MIG_CFG 0x33330000
|
||||
|
||||
#define WLAN_SIFS_CFG (WLAN_SIFS_CCK_CONT_TX | \
|
||||
--
|
||||
cgit 1.2.3-1.el7
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
|
||||
The staging driver rtlwifi/r8822be.ko.xz is being replaced by the new rtw88 driver.
|
||||
|
||||
Add a module alias to keep upgrade path.
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
--- a/drivers/net/wireless/realtek/rtw88/rtw8822be.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822be.c
|
||||
@@ -28,3 +28,4 @@ module_pci_driver(rtw_8822be_driver);
|
||||
MODULE_AUTHOR("Realtek Corporation");
|
||||
MODULE_DESCRIPTION("Realtek 802.11ac wireless 8822be driver");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
+MODULE_ALIAS("r8822be");
|
||||
+143
@@ -0,0 +1,143 @@
|
||||
From a3fd1f9aa79a7d3885faa486acb02c838533f332 Mon Sep 17 00:00:00 2001
|
||||
From: Chin-Yen Lee <timlee@realtek.com>
|
||||
Date: Fri, 17 Dec 2021 09:24:21 +0800
|
||||
Subject: rtw88: don't check CRC of VHT-SIG-B in 802.11ac signal
|
||||
|
||||
Currently all realtek wifi chip is set to check CRC of VHT-SIG-B
|
||||
in 802.11ac signal, but some AP don't calculate the CRC and packets
|
||||
from these AP can't be received and lead to disconnection.
|
||||
We disable the check defaultly to avoid this case.
|
||||
|
||||
Signed-off-by: Chin-Yen Lee <timlee@realtek.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20211217012421.7859-1-pkshih@realtek.com
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw88/bf.c | 14 +++++++++-----
|
||||
drivers/net/wireless/realtek/rtw88/bf.h | 7 +++++--
|
||||
drivers/net/wireless/realtek/rtw88/rtw8821c.c | 3 ++-
|
||||
drivers/net/wireless/realtek/rtw88/rtw8822b.c | 2 ++
|
||||
drivers/net/wireless/realtek/rtw88/rtw8822c.c | 2 ++
|
||||
5 files changed, 20 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/bf.c b/drivers/net/wireless/realtek/rtw88/bf.c
|
||||
index aff70e4ae0288..df750b3a35e9d 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/bf.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/bf.c
|
||||
@@ -130,7 +130,8 @@ void rtw_bf_cfg_sounding(struct rtw_dev *rtwdev, struct rtw_vif *vif,
|
||||
BIT_WMAC_USE_NDPARATE |
|
||||
(csi_rsc << 13);
|
||||
|
||||
- rtw_write8(rtwdev, REG_SND_PTCL_CTRL, RTW_SND_CTRL_SOUNDING);
|
||||
+ rtw_write8_mask(rtwdev, REG_SND_PTCL_CTRL, BIT_MASK_BEAMFORM,
|
||||
+ RTW_SND_CTRL_SOUNDING);
|
||||
rtw_write8(rtwdev, REG_SND_PTCL_CTRL + 3, 0x26);
|
||||
rtw_write8_clr(rtwdev, REG_RXFLTMAP1, BIT_RXFLTMAP1_BF_REPORT_POLL);
|
||||
rtw_write8_clr(rtwdev, REG_RXFLTMAP4, BIT_RXFLTMAP4_BF_REPORT_POLL);
|
||||
@@ -177,7 +178,7 @@ void rtw_bf_del_bfer_entry_mu(struct rtw_dev *rtwdev)
|
||||
|
||||
void rtw_bf_del_sounding(struct rtw_dev *rtwdev)
|
||||
{
|
||||
- rtw_write8(rtwdev, REG_SND_PTCL_CTRL, 0);
|
||||
+ rtw_write8_mask(rtwdev, REG_SND_PTCL_CTRL, BIT_MASK_BEAMFORM, 0);
|
||||
}
|
||||
|
||||
void rtw_bf_enable_bfee_su(struct rtw_dev *rtwdev, struct rtw_vif *vif,
|
||||
@@ -204,7 +205,8 @@ void rtw_bf_enable_bfee_su(struct rtw_dev *rtwdev, struct rtw_vif *vif,
|
||||
}
|
||||
|
||||
/* Sounding protocol control */
|
||||
- rtw_write8(rtwdev, REG_SND_PTCL_CTRL, RTW_SND_CTRL_SOUNDING);
|
||||
+ rtw_write8_mask(rtwdev, REG_SND_PTCL_CTRL, BIT_MASK_BEAMFORM,
|
||||
+ RTW_SND_CTRL_SOUNDING);
|
||||
|
||||
/* MAC address/Partial AID of Beamformer */
|
||||
for (i = 0; i < ETH_ALEN; i++)
|
||||
@@ -273,7 +275,8 @@ void rtw_bf_remove_bfee_su(struct rtw_dev *rtwdev,
|
||||
struct rtw_bf_info *bfinfo = &rtwdev->bf_info;
|
||||
|
||||
rtw_dbg(rtwdev, RTW_DBG_BF, "remove as a su bfee\n");
|
||||
- rtw_write8(rtwdev, REG_SND_PTCL_CTRL, RTW_SND_CTRL_REMOVE);
|
||||
+ rtw_write8_mask(rtwdev, REG_SND_PTCL_CTRL, BIT_MASK_BEAMFORM,
|
||||
+ RTW_SND_CTRL_REMOVE);
|
||||
|
||||
switch (bfee->su_reg_index) {
|
||||
case 0:
|
||||
@@ -298,7 +301,8 @@ void rtw_bf_remove_bfee_mu(struct rtw_dev *rtwdev,
|
||||
{
|
||||
struct rtw_bf_info *bfinfo = &rtwdev->bf_info;
|
||||
|
||||
- rtw_write8(rtwdev, REG_SND_PTCL_CTRL, RTW_SND_CTRL_REMOVE);
|
||||
+ rtw_write8_mask(rtwdev, REG_SND_PTCL_CTRL, BIT_MASK_BEAMFORM,
|
||||
+ RTW_SND_CTRL_REMOVE);
|
||||
|
||||
rtw_bf_del_bfer_entry_mu(rtwdev);
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/bf.h b/drivers/net/wireless/realtek/rtw88/bf.h
|
||||
index 17855edb5006a..7b40c2c038560 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/bf.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/bf.h
|
||||
@@ -13,6 +13,9 @@
|
||||
#define REG_ASSOCIATED_BFMER1_INFO 0x06EC
|
||||
#define REG_TX_CSI_RPT_PARAM_BW20 0x06F4
|
||||
#define REG_SND_PTCL_CTRL 0x0718
|
||||
+#define BIT_DIS_CHK_VHTSIGB_CRC BIT(6)
|
||||
+#define BIT_DIS_CHK_VHTSIGA_CRC BIT(5)
|
||||
+#define BIT_MASK_BEAMFORM (GENMASK(4, 0) | BIT(7))
|
||||
#define REG_MU_TX_CTL 0x14C0
|
||||
#define REG_MU_STA_GID_VLD 0x14C4
|
||||
#define REG_MU_STA_USER_POS_INFO 0x14C8
|
||||
@@ -42,8 +45,8 @@
|
||||
#define BIT_RXFLTMAP4_BF_REPORT_POLL BIT(4)
|
||||
|
||||
#define RTW_NDP_RX_STANDBY_TIME 0x70
|
||||
-#define RTW_SND_CTRL_REMOVE 0xD8
|
||||
-#define RTW_SND_CTRL_SOUNDING 0xDB
|
||||
+#define RTW_SND_CTRL_REMOVE 0x98
|
||||
+#define RTW_SND_CTRL_SOUNDING 0x9B
|
||||
|
||||
enum csi_seg_len {
|
||||
HAL_CSI_SEG_4K = 0,
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8821c.c b/drivers/net/wireless/realtek/rtw88/rtw8821c.c
|
||||
index 80a6f4da6acd9..db078df63f855 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c
|
||||
@@ -223,7 +223,8 @@ static int rtw8821c_mac_init(struct rtw_dev *rtwdev)
|
||||
rtw_write8(rtwdev, REG_TCR + 1, WLAN_TX_FUNC_CFG1);
|
||||
rtw_write8(rtwdev, REG_ACKTO_CCK, 0x40);
|
||||
rtw_write8_set(rtwdev, REG_WMAC_TRXPTCL_CTL_H, BIT(1));
|
||||
- rtw_write8_set(rtwdev, REG_SND_PTCL_CTRL, BIT(6));
|
||||
+ rtw_write8_set(rtwdev, REG_SND_PTCL_CTRL,
|
||||
+ BIT_DIS_CHK_VHTSIGB_CRC);
|
||||
rtw_write32(rtwdev, REG_WMAC_OPTION_FUNCTION + 8, WLAN_MAC_OPT_FUNC2);
|
||||
rtw_write8(rtwdev, REG_WMAC_OPTION_FUNCTION + 4, WLAN_MAC_OPT_NORM_FUNC1);
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
|
||||
index c409c8c29ec8b..a4cbcc6bdcd14 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
|
||||
@@ -262,6 +262,8 @@ static int rtw8822b_mac_init(struct rtw_dev *rtwdev)
|
||||
rtw_write8(rtwdev, REG_TCR + 1, WLAN_TX_FUNC_CFG1);
|
||||
rtw_write32(rtwdev, REG_WMAC_OPTION_FUNCTION + 8, WLAN_MAC_OPT_FUNC2);
|
||||
rtw_write8(rtwdev, REG_WMAC_OPTION_FUNCTION + 4, WLAN_MAC_OPT_NORM_FUNC1);
|
||||
+ rtw_write8_set(rtwdev, REG_SND_PTCL_CTRL,
|
||||
+ BIT_DIS_CHK_VHTSIGB_CRC);
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
|
||||
index 46b881e8e4feb..a8b95dcdb8e90 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
|
||||
@@ -2102,6 +2102,8 @@ static int rtw8822c_mac_init(struct rtw_dev *rtwdev)
|
||||
BIT_RXPSF_CONT_ERRCHKEN);
|
||||
value16 = BIT_SET_RXPSF_ERRTHR(value16, 0x07);
|
||||
rtw_write16(rtwdev, REG_RXPSF_CTRL, value16);
|
||||
+ rtw_write8_set(rtwdev, REG_SND_PTCL_CTRL,
|
||||
+ BIT_DIS_CHK_VHTSIGB_CRC);
|
||||
|
||||
/* Interrupt migration configuration */
|
||||
rtw_write32(rtwdev, REG_INT_MIG, WLAN_MAC_INT_MIG_CFG);
|
||||
--
|
||||
cgit 1.2.3-1.el7
|
||||
|
||||
+91474
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user