c8
imports/c8/kmod-redhat-rtw89-4.18.0_363_dup8.5-1.el8_5
commit
591ebfb5fa
@ -0,0 +1 @@
|
||||
SOURCES/rtw89-redhat-4.18.0_363_dup8.5.tar.bz2
|
@ -0,0 +1 @@
|
||||
f9a7325c3d3970cb184f7adcd09decfa71c78244 SOURCES/rtw89-redhat-4.18.0_363_dup8.5.tar.bz2
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,53 @@
|
||||
From 315cb6c6785dfb5f2275d87cadca5a09ad8ec36c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:01 +0100
|
||||
Subject: [PATCH 02/36] rtw89: Fix two spelling mistakes in debug messages
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit c51ed74093d45af2a25af7f26dd8d0532f7aec3e
|
||||
Author: Colin Ian King <colin.king@canonical.com>
|
||||
Date: Fri Oct 15 11:50:04 2021 +0100
|
||||
|
||||
rtw89: Fix two spelling mistakes in debug messages
|
||||
|
||||
There are two spelling mistakes in rtw89_debug messages. Fix them.
|
||||
|
||||
Signed-off-by: Colin Ian King <colin.king@canonical.com>
|
||||
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211015105004.11817-1-colin.king@canonical.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/phy.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/phy.c b/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
index 53c36cc82c57..ab134856baac 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
@@ -1715,7 +1715,7 @@ static s32 rtw89_phy_multi_sta_cfo_calc(struct rtw89_dev *rtwdev)
|
||||
target_cfo = clamp(cfo_avg, max_cfo_lb, min_cfo_ub);
|
||||
} else {
|
||||
rtw89_debug(rtwdev, RTW89_DBG_CFO,
|
||||
- "No intersection of cfo torlence windows\n");
|
||||
+ "No intersection of cfo tolerance windows\n");
|
||||
target_cfo = phy_div(cfo_khz_all, (s32)sta_cnt);
|
||||
}
|
||||
for (i = 0; i < CFO_TRACK_MAX_USER; i++)
|
||||
@@ -2749,7 +2749,7 @@ static void rtw89_phy_dig_dyn_pd_th(struct rtw89_dev *rtwdev, u8 rssi,
|
||||
dig->igi_rssi, final_rssi, under_region, val);
|
||||
} else {
|
||||
rtw89_debug(rtwdev, RTW89_DBG_DIG,
|
||||
- "Dynamic PD th dsiabled, Set PD_low_bd=0\n");
|
||||
+ "Dynamic PD th disabled, Set PD_low_bd=0\n");
|
||||
}
|
||||
|
||||
rtw89_phy_write32_mask(rtwdev, R_SEG0R_PD, B_SEG0R_PD_LOWER_BOUND_MSK,
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,49 @@
|
||||
From 16c75423c29792209bfc638eaf4bd1f3faf89a44 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:01 +0100
|
||||
Subject: [PATCH 03/36] rtw89: Remove redundant check of ret after call to
|
||||
rtw89_mac_enable_bb_rf
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit f7e7e440550b0b176df3d2ea3e76106bc89915d9
|
||||
Author: Colin Ian King <colin.king@canonical.com>
|
||||
Date: Fri Oct 15 16:21:13 2021 +0100
|
||||
|
||||
rtw89: Remove redundant check of ret after call to rtw89_mac_enable_bb_rf
|
||||
|
||||
The function rtw89_mac_enable_bb_rf is a void return type, so there is
|
||||
no return error code to ret, so the following check for an error in ret
|
||||
is redundant dead code and can be removed.
|
||||
|
||||
Addresses-Coverity: ("Logically dead code")
|
||||
Fixes: e3ec7017f6a2 ("rtw89: add Realtek 802.11ax driver")
|
||||
Signed-off-by: Colin Ian King <colin.king@canonical.com>
|
||||
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211015152113.33179-1-colin.king@canonical.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/mac.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
index 0171a5a7b1de..69384c43c046 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
@@ -2656,8 +2656,6 @@ int rtw89_mac_init(struct rtw89_dev *rtwdev)
|
||||
goto fail;
|
||||
|
||||
rtw89_mac_enable_bb_rf(rtwdev);
|
||||
- if (ret)
|
||||
- goto fail;
|
||||
|
||||
ret = rtw89_mac_sys_init(rtwdev);
|
||||
if (ret)
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,48 @@
|
||||
From 5ca39688aa14fca3a9190140b3a4ee3b1c826341 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:01 +0100
|
||||
Subject: [PATCH 04/36] rtw89: fix return value check in
|
||||
rtw89_cam_send_sec_key_cmd()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit a04310edcd00d6014126483a2d8cd95b4786db25
|
||||
Author: Yang Yingliang <yangyingliang@huawei.com>
|
||||
Date: Mon Oct 18 11:31:02 2021 +0800
|
||||
|
||||
rtw89: fix return value check in rtw89_cam_send_sec_key_cmd()
|
||||
|
||||
Fix the return value check which testing the wrong variable
|
||||
in rtw89_cam_send_sec_key_cmd().
|
||||
|
||||
Reported-by: Hulk Robot <hulkci@huawei.com>
|
||||
Fixes: e3ec7017f6a2 ("rtw89: add Realtek 802.11ax driver")
|
||||
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
|
||||
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211018033102.1813058-1-yangyingliang@huawei.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/cam.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/cam.c b/drivers/net/wireless/realtek/rtw89/cam.c
|
||||
index c1e8c76c6aca..ad7a8155dbed 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/cam.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/cam.c
|
||||
@@ -77,7 +77,7 @@ static int rtw89_cam_send_sec_key_cmd(struct rtw89_dev *rtwdev,
|
||||
return 0;
|
||||
|
||||
ext_skb = rtw89_cam_get_sec_key_cmd(rtwdev, sec_cam, true);
|
||||
- if (!skb) {
|
||||
+ if (!ext_skb) {
|
||||
rtw89_err(rtwdev, "failed to get ext sec key command\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,47 @@
|
||||
From 23e2bf564a1ab65a01eab35189eae40f89368696 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:01 +0100
|
||||
Subject: [PATCH 05/36] rtw89: remove unneeded semicolon
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit e0e037b9fe5fbd19b21c0e542e44dd65f1b8cf58
|
||||
Author: Yang Li <yang.lee@linux.alibaba.com>
|
||||
Date: Tue Oct 19 15:54:54 2021 +0800
|
||||
|
||||
rtw89: remove unneeded semicolon
|
||||
|
||||
Eliminate the following coccicheck warning:
|
||||
./drivers/net/wireless/realtek/rtw89/pci.c:1348:2-3: Unneeded semicolon
|
||||
|
||||
Reported-by: Abaci Robot <abaci@linux.alibaba.com>
|
||||
Fixes: e3ec7017f6a2 ("rtw89: add Realtek 802.11ax driver")
|
||||
Signed-off-by: Yang Li <yang.lee@linux.alibaba.com>
|
||||
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/1634630094-1156-1-git-send-email-yang.lee@linux.alibaba.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/pci.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/pci.c b/drivers/net/wireless/realtek/rtw89/pci.c
|
||||
index e9731012bca9..2c94762e4f93 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/pci.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/pci.c
|
||||
@@ -1345,7 +1345,7 @@ static int rtw89_pci_check_mdio(struct rtw89_dev *rtwdev, u8 addr, u8 speed, u16
|
||||
default:
|
||||
rtw89_err(rtwdev, "[ERR]Error Speed %d!\n", speed);
|
||||
return -EINVAL;
|
||||
- };
|
||||
+ }
|
||||
rtw89_write16(rtwdev, R_AX_MDIO_CFG, val);
|
||||
rtw89_write16_set(rtwdev, R_AX_MDIO_CFG, rw_bit);
|
||||
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,47 @@
|
||||
From 903a4e9d1c1a8a1790fef08c63c0b173c087dfaa Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:02 +0100
|
||||
Subject: [PATCH 06/36] rtw89: fix error function parameter
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit dea857700a75943017488b1d47f6687cfc037642
|
||||
Author: Lv Ruyi <lv.ruyi@zte.com.cn>
|
||||
Date: Thu Oct 21 04:20:35 2021 +0000
|
||||
|
||||
rtw89: fix error function parameter
|
||||
|
||||
This patch fixes the following Coccinelle warning:
|
||||
drivers/net/wireless/realtek/rtw89/rtw8852a.c:753:
|
||||
WARNING possible condition with no effect (if == else)
|
||||
|
||||
Reported-by: Zeal Robot <zealci@zte.com.cn>
|
||||
Signed-off-by: Lv Ruyi <lv.ruyi@zte.com.cn>
|
||||
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211021042035.1042463-1-lv.ruyi@zte.com.cn
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/rtw8852a.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
index b1b87f0aadbb..5c6ffca3a324 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
@@ -757,7 +757,7 @@ static void rtw8852a_ctrl_ch(struct rtw89_dev *rtwdev, u8 central_ch,
|
||||
else
|
||||
rtw89_phy_write32_idx(rtwdev, R_P1_MODE,
|
||||
B_P1_MODE_SEL,
|
||||
- 1, phy_idx);
|
||||
+ 0, phy_idx);
|
||||
/* SCO compensate FC setting */
|
||||
sco_comp = rtw8852a_sco_mapping(central_ch);
|
||||
rtw89_phy_write32_idx(rtwdev, R_FC0_BW, B_FC0_BW_INV,
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,46 @@
|
||||
From 017a26deb26b162623bd906fb5b25d249bc5b1e8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:02 +0100
|
||||
Subject: [PATCH 07/36] rtw89: remove duplicate register definitions
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 090f8a2f7b38f3a1dcf202437e5307761e8e4625
|
||||
Author: Kevin Lo <kevlo@kevlo.org>
|
||||
Date: Thu Oct 21 13:44:08 2021 +0800
|
||||
|
||||
rtw89: remove duplicate register definitions
|
||||
|
||||
Remove duplicate register definitions.
|
||||
|
||||
Signed-off-by: Kevin Lo <kevlo@kevlo.org>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/YXD+KL+xzFsnGShb@ns.kevlo.org
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/pci.h | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/pci.h b/drivers/net/wireless/realtek/rtw89/pci.h
|
||||
index 34333c441aea..20e6767ea5c4 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/pci.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/pci.h
|
||||
@@ -276,11 +276,6 @@
|
||||
#define B_AX_CH10_BUSY BIT(0)
|
||||
|
||||
/* Configure */
|
||||
-#define R_AX_PCIE_INIT_CFG1 0x1000
|
||||
-#define B_AX_PCIE_RXRST_KEEP_REG BIT(23)
|
||||
-#define B_AX_PCIE_TXRST_KEEP_REG BIT(22)
|
||||
-#define B_AX_DIS_RXDMA_PRE BIT(2)
|
||||
-
|
||||
#define R_AX_PCIE_INIT_CFG2 0x1004
|
||||
#define B_AX_WD_ITVL_IDLE GENMASK(27, 24)
|
||||
#define B_AX_WD_ITVL_ACT GENMASK(19, 16)
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,46 @@
|
||||
From db7fb65e5b6e99616d6f1a327eba6663dc2ca6a4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:02 +0100
|
||||
Subject: [PATCH 08/36] rtw89: fix return value in hfc_pub_cfg_chk
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit c6477cb237048725922f6a786f68b5232abb418f
|
||||
Author: Kevin Lo <kevlo@kevlo.org>
|
||||
Date: Thu Oct 21 14:32:27 2021 +0800
|
||||
|
||||
rtw89: fix return value in hfc_pub_cfg_chk
|
||||
|
||||
It seems to me when pub_cfg->grp0 + pub_cfg->grp1 != pub_cfg->pub_max is true,
|
||||
it should return -EFAULT rather than 0. Otherwise, the function doesn't need
|
||||
to exist.
|
||||
|
||||
Signed-off-by: Kevin Lo <kevlo@kevlo.org>
|
||||
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/YXEJey8lKksAZif4@ns.kevlo.org
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/mac.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
index 69384c43c046..afcd07ab1de7 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
@@ -560,7 +560,7 @@ static int hfc_pub_cfg_chk(struct rtw89_dev *rtwdev)
|
||||
const struct rtw89_hfc_pub_cfg *pub_cfg = ¶m->pub_cfg;
|
||||
|
||||
if (pub_cfg->grp0 + pub_cfg->grp1 != pub_cfg->pub_max)
|
||||
- return 0;
|
||||
+ return -EFAULT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,65 @@
|
||||
From b18c6b7bcb369bd7dc222cc40c7264a6b5c4fa44 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:02 +0100
|
||||
Subject: [PATCH 09/36] rtw89: Fix variable dereferenced before check 'sta'
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 5d44f0672319c19a41ff0e0e4f0d64164cf9752b
|
||||
Author: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Date: Fri Oct 22 14:12:42 2021 +0800
|
||||
|
||||
rtw89: Fix variable dereferenced before check 'sta'
|
||||
|
||||
The pointer rtwsta is dereferencing pointer sta before sta is being null
|
||||
checked. Fix this by assigning sta->drv_priv to rtwsta only if sta is not
|
||||
NULL, otherwise just NULL.
|
||||
|
||||
Fixes: e3ec7017f6a2 ("rtw89: add Realtek 802.11ax driver")
|
||||
Reported-by: Colin Ian King <colin.king@canonical.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211022061242.8383-1-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/core.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c
|
||||
index 06fb6e5b1b37..d02ec5a735cb 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/core.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/core.c
|
||||
@@ -1412,7 +1412,7 @@ static void rtw89_core_ba_work(struct work_struct *work)
|
||||
list_for_each_entry_safe(rtwtxq, tmp, &rtwdev->ba_list, list) {
|
||||
struct ieee80211_txq *txq = rtw89_txq_to_txq(rtwtxq);
|
||||
struct ieee80211_sta *sta = txq->sta;
|
||||
- struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv;
|
||||
+ struct rtw89_sta *rtwsta = sta ? (struct rtw89_sta *)sta->drv_priv : NULL;
|
||||
u8 tid = txq->tid;
|
||||
|
||||
if (!sta) {
|
||||
@@ -1462,7 +1462,7 @@ static void rtw89_core_txq_check_agg(struct rtw89_dev *rtwdev,
|
||||
struct ieee80211_hw *hw = rtwdev->hw;
|
||||
struct ieee80211_txq *txq = rtw89_txq_to_txq(rtwtxq);
|
||||
struct ieee80211_sta *sta = txq->sta;
|
||||
- struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv;
|
||||
+ struct rtw89_sta *rtwsta = sta ? (struct rtw89_sta *)sta->drv_priv : NULL;
|
||||
|
||||
if (unlikely(skb_get_queue_mapping(skb) == IEEE80211_AC_VO))
|
||||
return;
|
||||
@@ -1534,7 +1534,7 @@ static bool rtw89_core_txq_agg_wait(struct rtw89_dev *rtwdev,
|
||||
{
|
||||
struct rtw89_txq *rtwtxq = (struct rtw89_txq *)txq->drv_priv;
|
||||
struct ieee80211_sta *sta = txq->sta;
|
||||
- struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv;
|
||||
+ struct rtw89_sta *rtwsta = sta ? (struct rtw89_sta *)sta->drv_priv : NULL;
|
||||
|
||||
if (!sta || rtwsta->max_agg_wait <= 0)
|
||||
return false;
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,79 @@
|
||||
From 4d6f3cdaef718e0b5e15bf36fc8d9c3740218996 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:02 +0100
|
||||
Subject: [PATCH 10/36] rtw89: update partition size of firmware header on
|
||||
skb->data
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 5737b4515deea0829c138ab5201160345ec67d49
|
||||
Author: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Date: Fri Nov 19 13:45:10 2021 +0800
|
||||
|
||||
rtw89: update partition size of firmware header on skb->data
|
||||
|
||||
The partition size is used to tell hardware the size of piece we are going
|
||||
to send a firmware. The old code updates the size in constant buffer of
|
||||
firmware, and leads system crash.
|
||||
|
||||
To fix this, update the size on skb->data after we copy the firmware data
|
||||
into skb.
|
||||
|
||||
Buglink: https://bugzilla.opensuse.org/show_bug.cgi?id=1188303
|
||||
Fixes: e3ec7017f6a2 ("rtw89: add Realtek 802.11ax driver")
|
||||
Reported-by: Takashi Iwai <tiwai@suse.de>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Tested-by: Takashi Iwai <tiwai@suse.de>
|
||||
Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211119054512.10620-2-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/fw.c | 2 +-
|
||||
drivers/net/wireless/realtek/rtw89/fw.h | 6 ++++--
|
||||
2 files changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/fw.c b/drivers/net/wireless/realtek/rtw89/fw.c
|
||||
index 212aaf577d3c..65ef3dc9d061 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/fw.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/fw.c
|
||||
@@ -91,7 +91,6 @@ static int rtw89_fw_hdr_parser(struct rtw89_dev *rtwdev, const u8 *fw, u32 len,
|
||||
info->section_num = GET_FW_HDR_SEC_NUM(fw);
|
||||
info->hdr_len = RTW89_FW_HDR_SIZE +
|
||||
info->section_num * RTW89_FW_SECTION_HDR_SIZE;
|
||||
- SET_FW_HDR_PART_SIZE(fw, FWDL_SECTION_PER_PKT_LEN);
|
||||
|
||||
bin = fw + info->hdr_len;
|
||||
|
||||
@@ -275,6 +274,7 @@ static int __rtw89_fw_download_hdr(struct rtw89_dev *rtwdev, const u8 *fw, u32 l
|
||||
}
|
||||
|
||||
skb_put_data(skb, fw, len);
|
||||
+ SET_FW_HDR_PART_SIZE(skb->data, FWDL_SECTION_PER_PKT_LEN);
|
||||
rtw89_h2c_pkt_set_hdr_fwdl(rtwdev, skb, FWCMD_TYPE_H2C,
|
||||
H2C_CAT_MAC, H2C_CL_MAC_FWDL,
|
||||
H2C_FUNC_MAC_FWHDR_DL, len);
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/fw.h b/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
index 7ee0d9323310..36e8d0da6c1e 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
@@ -282,8 +282,10 @@ struct rtw89_h2creg_sch_tx_en {
|
||||
le32_get_bits(*((__le32 *)(fwhdr) + 6), GENMASK(15, 8))
|
||||
#define GET_FW_HDR_CMD_VERSERION(fwhdr) \
|
||||
le32_get_bits(*((__le32 *)(fwhdr) + 7), GENMASK(31, 24))
|
||||
-#define SET_FW_HDR_PART_SIZE(fwhdr, val) \
|
||||
- le32p_replace_bits((__le32 *)(fwhdr) + 7, val, GENMASK(15, 0))
|
||||
+static inline void SET_FW_HDR_PART_SIZE(void *fwhdr, u32 val)
|
||||
+{
|
||||
+ le32p_replace_bits((__le32 *)fwhdr + 7, val, GENMASK(15, 0));
|
||||
+}
|
||||
|
||||
#define SET_CTRL_INFO_MACID(table, val) \
|
||||
le32p_replace_bits((__le32 *)(table) + 0, val, GENMASK(6, 0))
|
||||
--
|
||||
2.13.6
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,93 @@
|
||||
From 7613345d117cb43c93176775f2fd7cc06cdc8006 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:02 +0100
|
||||
Subject: [PATCH 12/36] rtw89: update rtw89 regulation definition to R58-R31
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 542577149794b9c8638f6f2cb90b35b137b44156
|
||||
Author: Zong-Zhe Yang <kevin_yang@realtek.com>
|
||||
Date: Mon Nov 1 17:31:04 2021 +0800
|
||||
|
||||
rtw89: update rtw89 regulation definition to R58-R31
|
||||
|
||||
Support QATAR in rtw89_regulation_type and reorder the enum to align
|
||||
realtek R58-R31 regulation definition. Besides, if an unassigned entry
|
||||
of limit/limit_ru tables is read, return the corresponding WW value for
|
||||
the unconfigured case.
|
||||
|
||||
Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211101093106.28848-3-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/core.h | 9 +++++----
|
||||
drivers/net/wireless/realtek/rtw89/phy.c | 12 ++++++++++++
|
||||
2 files changed, 17 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h
|
||||
index c2885e4dd882..3729abda04f9 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/core.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/core.h
|
||||
@@ -411,12 +411,13 @@ enum rtw89_regulation_type {
|
||||
RTW89_NA = 4,
|
||||
RTW89_IC = 5,
|
||||
RTW89_KCC = 6,
|
||||
- RTW89_NCC = 7,
|
||||
- RTW89_CHILE = 8,
|
||||
- RTW89_ACMA = 9,
|
||||
- RTW89_MEXICO = 10,
|
||||
+ RTW89_ACMA = 7,
|
||||
+ RTW89_NCC = 8,
|
||||
+ RTW89_MEXICO = 9,
|
||||
+ RTW89_CHILE = 10,
|
||||
RTW89_UKRAINE = 11,
|
||||
RTW89_CN = 12,
|
||||
+ RTW89_QATAR = 13,
|
||||
RTW89_REGD_NUM,
|
||||
};
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/phy.c b/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
index ab134856baac..0620ef02e275 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
@@ -1099,9 +1099,15 @@ s8 rtw89_phy_read_txpwr_limit(struct rtw89_dev *rtwdev,
|
||||
switch (band) {
|
||||
case RTW89_BAND_2G:
|
||||
lmt = (*chip->txpwr_lmt_2g)[bw][ntx][rs][bf][regd][ch_idx];
|
||||
+ if (!lmt)
|
||||
+ lmt = (*chip->txpwr_lmt_2g)[bw][ntx][rs][bf]
|
||||
+ [RTW89_WW][ch_idx];
|
||||
break;
|
||||
case RTW89_BAND_5G:
|
||||
lmt = (*chip->txpwr_lmt_5g)[bw][ntx][rs][bf][regd][ch_idx];
|
||||
+ if (!lmt)
|
||||
+ lmt = (*chip->txpwr_lmt_5g)[bw][ntx][rs][bf]
|
||||
+ [RTW89_WW][ch_idx];
|
||||
break;
|
||||
default:
|
||||
rtw89_warn(rtwdev, "unknown band type: %d\n", band);
|
||||
@@ -1224,9 +1230,15 @@ static s8 rtw89_phy_read_txpwr_limit_ru(struct rtw89_dev *rtwdev,
|
||||
switch (band) {
|
||||
case RTW89_BAND_2G:
|
||||
lmt_ru = (*chip->txpwr_lmt_ru_2g)[ru][ntx][regd][ch_idx];
|
||||
+ if (!lmt_ru)
|
||||
+ lmt_ru = (*chip->txpwr_lmt_ru_2g)[ru][ntx]
|
||||
+ [RTW89_WW][ch_idx];
|
||||
break;
|
||||
case RTW89_BAND_5G:
|
||||
lmt_ru = (*chip->txpwr_lmt_ru_5g)[ru][ntx][regd][ch_idx];
|
||||
+ if (!lmt_ru)
|
||||
+ lmt_ru = (*chip->txpwr_lmt_ru_5g)[ru][ntx]
|
||||
+ [RTW89_WW][ch_idx];
|
||||
break;
|
||||
default:
|
||||
rtw89_warn(rtwdev, "unknown band type: %d\n", band);
|
||||
--
|
||||
2.13.6
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,468 @@
|
||||
From c3c0d755be0ab69370213e321b4c67d7c9688153 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:02 +0100
|
||||
Subject: [PATCH 14/36] rtw89: update rtw89_regulatory map to R58-R31
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 08e16498e01b289dc9cfd41043c91a4b84fe6ce9
|
||||
Author: Zong-Zhe Yang <kevin_yang@realtek.com>
|
||||
Date: Mon Nov 1 17:31:06 2021 +0800
|
||||
|
||||
rtw89: update rtw89_regulatory map to R58-R31
|
||||
|
||||
Start to configure entries with RTW89_QATAR, RTW89_UKRAINE, RTW89_CN.
|
||||
Adjust some entries with explicit rtw89_regulatory instead of RTW89_WW.
|
||||
|
||||
Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211101093106.28848-5-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/regd.c | 375 +++++++++++++++---------------
|
||||
1 file changed, 188 insertions(+), 187 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/regd.c b/drivers/net/wireless/realtek/rtw89/regd.c
|
||||
index f00b94ecfff4..4c37e590e43c 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/regd.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/regd.c
|
||||
@@ -15,243 +15,244 @@ static const struct rtw89_regulatory rtw89_ww_regd =
|
||||
COUNTRY_REGD("00", RTW89_WW, RTW89_WW);
|
||||
|
||||
static const struct rtw89_regulatory rtw89_regd_map[] = {
|
||||
- COUNTRY_REGD("AR", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("BO", RTW89_WW, RTW89_FCC),
|
||||
+ COUNTRY_REGD("AR", RTW89_MEXICO, RTW89_MEXICO),
|
||||
+ COUNTRY_REGD("BO", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("BR", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("CL", RTW89_WW, RTW89_CHILE),
|
||||
+ COUNTRY_REGD("CL", RTW89_CHILE, RTW89_CHILE),
|
||||
COUNTRY_REGD("CO", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("CR", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("EC", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("SV", RTW89_WW, RTW89_FCC),
|
||||
+ COUNTRY_REGD("SV", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("GT", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("HN", RTW89_WW, RTW89_FCC),
|
||||
- COUNTRY_REGD("MX", RTW89_FCC, RTW89_MEXICO),
|
||||
+ COUNTRY_REGD("HN", RTW89_FCC, RTW89_FCC),
|
||||
+ COUNTRY_REGD("MX", RTW89_MEXICO, RTW89_MEXICO),
|
||||
COUNTRY_REGD("NI", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("PA", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("PY", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("PE", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("US", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("UY", RTW89_WW, RTW89_FCC),
|
||||
- COUNTRY_REGD("VE", RTW89_WW, RTW89_FCC),
|
||||
+ COUNTRY_REGD("UY", RTW89_FCC, RTW89_FCC),
|
||||
+ COUNTRY_REGD("VE", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("PR", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("DO", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("AT", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("BE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("CY", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("CZ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("DK", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("EE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("FI", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("FR", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("DE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GR", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("HU", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("IS", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("IE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("IT", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("LV", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("LI", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("LT", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("LU", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MT", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MC", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("NL", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("NO", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("PL", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("PT", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("SK", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("SI", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("ES", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("SE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("CH", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GB", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("AL", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("AZ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("BH", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("BA", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("BG", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("HR", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("EG", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GH", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("IQ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("IL", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("JO", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("KZ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("KE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("KW", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("KG", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("LB", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("LS", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MK", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MA", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MZ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("NA", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("NG", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("OM", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("QA", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("RO", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("RU", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("SA", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("SN", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("RS", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("ME", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("ZA", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("TR", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("UA", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("AE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("YE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("ZW", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("BD", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("KH", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("CN", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("HK", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("IN", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("AT", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("CY", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("CZ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("DK", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("EE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("FI", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("FR", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("DE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GR", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("HU", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("IS", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("IE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("IT", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("LV", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("LI", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("LT", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("LU", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MT", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MC", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("NL", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("NO", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("PL", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("PT", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SK", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SI", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("ES", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("CH", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GB", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("AL", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("AZ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BH", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BA", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BG", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("HR", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("EG", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GH", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("IQ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("IL", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("JO", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("KZ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("KE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("KW", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("KG", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("LB", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("LS", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MK", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MA", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MZ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("NA", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("NG", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("OM", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("QA", RTW89_QATAR, RTW89_QATAR),
|
||||
+ COUNTRY_REGD("RO", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("RU", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SA", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SN", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("RS", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("ME", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("ZA", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("TR", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("UA", RTW89_UKRAINE, RTW89_UKRAINE),
|
||||
+ COUNTRY_REGD("AE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("YE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("ZW", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BD", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("KH", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("CN", RTW89_CN, RTW89_CN),
|
||||
+ COUNTRY_REGD("HK", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("IN", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("ID", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("KR", RTW89_KCC, RTW89_KCC),
|
||||
- COUNTRY_REGD("MY", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("PK", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("PH", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("SG", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("LK", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MY", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("PK", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("PH", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SG", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("LK", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("TW", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("TH", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("VN", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("AU", RTW89_WW, RTW89_ACMA),
|
||||
- COUNTRY_REGD("NZ", RTW89_WW, RTW89_ACMA),
|
||||
- COUNTRY_REGD("PG", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("TH", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("VN", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("AU", RTW89_ACMA, RTW89_ACMA),
|
||||
+ COUNTRY_REGD("NZ", RTW89_ACMA, RTW89_ACMA),
|
||||
+ COUNTRY_REGD("PG", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("CA", RTW89_IC, RTW89_IC),
|
||||
COUNTRY_REGD("JP", RTW89_MKK, RTW89_MKK),
|
||||
- COUNTRY_REGD("JM", RTW89_WW, RTW89_FCC),
|
||||
+ COUNTRY_REGD("JM", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("AN", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("TT", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("TN", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("TN", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("AF", RTW89_ETSI, RTW89_ETSI),
|
||||
- COUNTRY_REGD("DZ", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("DZ", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("AS", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("AD", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("AO", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("AI", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("AQ", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("AD", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("AO", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("AI", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("AQ", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("AG", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("AM", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("AM", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("AW", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("BS", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("BB", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("BY", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BY", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("BZ", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("BJ", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BJ", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("BM", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("BT", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("BW", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("BV", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("IO", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BT", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BW", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BV", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("IO", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("VG", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("BN", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("BF", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MM", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("BI", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("CM", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("CV", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BN", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BF", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MM", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("BI", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("CM", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("CV", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("KY", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("CF", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("TD", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("CX", RTW89_WW, RTW89_ACMA),
|
||||
- COUNTRY_REGD("CC", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("KM", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("CG", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("CD", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("CK", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("CF", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("TD", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("CX", RTW89_ACMA, RTW89_ACMA),
|
||||
+ COUNTRY_REGD("CC", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("KM", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("CG", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("CD", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("CK", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("CI", RTW89_ETSI, RTW89_ETSI),
|
||||
- COUNTRY_REGD("DJ", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("DJ", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("DM", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("GQ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("ER", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("ET", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("FK", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("FO", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GQ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("ER", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("ET", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("FK", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("FO", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("FJ", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("GF", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("PF", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("TF", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GA", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GM", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GI", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GL", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GF", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("PF", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("TF", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GA", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GM", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GI", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GL", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("GD", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("GP", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GP", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("GU", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("GG", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GN", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GW", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GY", RTW89_FCC, RTW89_NCC),
|
||||
+ COUNTRY_REGD("GG", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GN", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GW", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GY", RTW89_NCC, RTW89_NCC),
|
||||
COUNTRY_REGD("HT", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("HM", RTW89_WW, RTW89_ACMA),
|
||||
- COUNTRY_REGD("VA", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("IM", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("JE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("KI", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("LA", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("LR", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("LY", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MO", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MG", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MW", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MV", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("ML", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("HM", RTW89_ACMA, RTW89_ACMA),
|
||||
+ COUNTRY_REGD("VA", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("IM", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("JE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("KI", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("LA", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("LR", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("LY", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MO", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MG", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MW", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MV", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("ML", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("MH", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("MQ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MR", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MU", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("YT", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MQ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MR", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MU", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("YT", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("FM", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("MD", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MN", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("MS", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("NR", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("NP", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("NC", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("NE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("NU", RTW89_WW, RTW89_ACMA),
|
||||
- COUNTRY_REGD("NF", RTW89_WW, RTW89_ACMA),
|
||||
+ COUNTRY_REGD("MD", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MN", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("MS", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("NR", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("NP", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("NC", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("NE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("NU", RTW89_ACMA, RTW89_ACMA),
|
||||
+ COUNTRY_REGD("NF", RTW89_ACMA, RTW89_ACMA),
|
||||
COUNTRY_REGD("MP", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("PW", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("RE", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("RW", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("SH", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("RE", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("RW", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SH", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("KN", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("LC", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("MF", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("SX", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("PM", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("PM", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("VC", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("WS", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("SM", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SM", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("ST", RTW89_FCC, RTW89_FCC),
|
||||
COUNTRY_REGD("SC", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("SL", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("SB", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("SO", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("GS", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SL", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SB", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SO", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("GS", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("SR", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("SJ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("SZ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("TJ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("TZ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("TG", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("TK", RTW89_WW, RTW89_ACMA),
|
||||
- COUNTRY_REGD("TO", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("TM", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("TC", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SJ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("SZ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("TJ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("TZ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("TG", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("TK", RTW89_ACMA, RTW89_ACMA),
|
||||
+ COUNTRY_REGD("TO", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("TM", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("TC", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("TV", RTW89_ETSI, RTW89_NA),
|
||||
- COUNTRY_REGD("UG", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("UG", RTW89_ETSI, RTW89_ETSI),
|
||||
COUNTRY_REGD("VI", RTW89_FCC, RTW89_FCC),
|
||||
- COUNTRY_REGD("UZ", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("VU", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("WF", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("EH", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("ZM", RTW89_WW, RTW89_ETSI),
|
||||
- COUNTRY_REGD("IR", RTW89_WW, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("UZ", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("VU", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("WF", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("EH", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("ZM", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("IR", RTW89_ETSI, RTW89_ETSI),
|
||||
+ COUNTRY_REGD("PS", RTW89_ETSI, RTW89_ETSI),
|
||||
};
|
||||
|
||||
static const struct rtw89_regulatory *rtw89_regd_find_reg_by_name(char *alpha2)
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,92 @@
|
||||
From 32bb5a6874a7ee13bc39d76e9629b75accfd0afe Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:03 +0100
|
||||
Subject: [PATCH 15/36] rtw89: remove unnecessary conditional operators
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 1646ce8f83b953a675cb99e7b6708d8121b5fecf
|
||||
Author: Ye Guojin <ye.guojin@zte.com.cn>
|
||||
Date: Thu Nov 4 06:11:19 2021 +0000
|
||||
|
||||
rtw89: remove unnecessary conditional operators
|
||||
|
||||
The conditional operator is unnecessary while assigning values to the
|
||||
bool variables.
|
||||
|
||||
Reported-by: Zeal Robot <zealci@zte.com.cn>
|
||||
Signed-off-by: Ye Guojin <ye.guojin@zte.com.cn>
|
||||
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211104061119.1685-1-ye.guojin@zte.com.cn
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/debug.c | 2 +-
|
||||
drivers/net/wireless/realtek/rtw89/mac.c | 2 +-
|
||||
drivers/net/wireless/realtek/rtw89/phy.c | 2 +-
|
||||
drivers/net/wireless/realtek/rtw89/rtw8852a.c | 4 ++--
|
||||
4 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/debug.c b/drivers/net/wireless/realtek/rtw89/debug.c
|
||||
index 29eb188c888c..75f10627585b 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/debug.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/debug.c
|
||||
@@ -814,7 +814,7 @@ rtw89_debug_priv_mac_dbg_port_dump_select(struct file *filp,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- enable = set == 0 ? false : true;
|
||||
+ enable = set != 0;
|
||||
switch (sel) {
|
||||
case 0:
|
||||
debugfs_priv->dbgpkg_en.ss_dbg = enable;
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
index afcd07ab1de7..944c23293cb9 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
@@ -3695,7 +3695,7 @@ void _rtw89_mac_bf_monitor_track(struct rtw89_dev *rtwdev)
|
||||
{
|
||||
struct rtw89_traffic_stats *stats = &rtwdev->stats;
|
||||
struct rtw89_vif *rtwvif;
|
||||
- bool en = stats->tx_tfc_lv > stats->rx_tfc_lv ? false : true;
|
||||
+ bool en = stats->tx_tfc_lv <= stats->rx_tfc_lv;
|
||||
bool old = test_bit(RTW89_FLAG_BFEE_EN, rtwdev->flags);
|
||||
|
||||
if (en == old)
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/phy.c b/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
index 0620ef02e275..abb4cdcd03e7 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
@@ -1779,7 +1779,7 @@ static void rtw89_phy_cfo_dm(struct rtw89_dev *rtwdev)
|
||||
}
|
||||
rtw89_phy_cfo_crystal_cap_adjust(rtwdev, new_cfo);
|
||||
cfo->cfo_avg_pre = new_cfo;
|
||||
- x_cap_update = cfo->crystal_cap == pre_x_cap ? false : true;
|
||||
+ x_cap_update = cfo->crystal_cap != pre_x_cap;
|
||||
rtw89_debug(rtwdev, RTW89_DBG_CFO, "Xcap_up=%d\n", x_cap_update);
|
||||
rtw89_debug(rtwdev, RTW89_DBG_CFO, "Xcap: D:%x C:%x->%x, ofst=%d\n",
|
||||
cfo->def_x_cap, pre_x_cap, cfo->crystal_cap,
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
index 5c6ffca3a324..9e25e53f6c4a 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
@@ -1053,10 +1053,10 @@ static void rtw8852a_set_channel_bb(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_channel_params *param,
|
||||
enum rtw89_phy_idx phy_idx)
|
||||
{
|
||||
- bool cck_en = param->center_chan > 14 ? false : true;
|
||||
+ bool cck_en = param->center_chan <= 14;
|
||||
u8 pri_ch_idx = param->pri_ch_idx;
|
||||
|
||||
- if (param->center_chan <= 14)
|
||||
+ if (cck_en)
|
||||
rtw8852a_ctrl_sco_cck(rtwdev, param->center_chan,
|
||||
param->primary_chan, param->bandwidth);
|
||||
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,56 @@
|
||||
From 05f245f4d2fa4441a1cdf959dcb7c935a6274018 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:03 +0100
|
||||
Subject: [PATCH 16/36] rtw89: remove unneeded variable
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 43863efeada6eda380bd08537d1e4719341dc50d
|
||||
Author: Changcheng Deng <deng.changcheng@zte.com.cn>
|
||||
Date: Wed Nov 10 12:11:35 2021 +0000
|
||||
|
||||
rtw89: remove unneeded variable
|
||||
|
||||
Fix the following coccicheck review:
|
||||
./drivers/net/wireless/realtek/rtw89/mac.c: 1096: 5-8: Unneeded variable
|
||||
|
||||
Remove unneeded variable used to store return value.
|
||||
|
||||
Reported-by: Zeal Robot <zealci@zte.com.cn>
|
||||
Signed-off-by: Changcheng Deng <deng.changcheng@zte.com.cn>
|
||||
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211110121135.151187-1-deng.changcheng@zte.com.cn
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/mac.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
index 944c23293cb9..f8389e849c67 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
@@ -1093,7 +1093,6 @@ static int cmac_func_en(struct rtw89_dev *rtwdev, u8 mac_idx, bool en)
|
||||
static int dmac_func_en(struct rtw89_dev *rtwdev)
|
||||
{
|
||||
u32 val32;
|
||||
- u32 ret = 0;
|
||||
|
||||
val32 = (B_AX_MAC_FUNC_EN | B_AX_DMAC_FUNC_EN | B_AX_MAC_SEC_EN |
|
||||
B_AX_DISPATCHER_EN | B_AX_DLE_CPUIO_EN | B_AX_PKT_IN_EN |
|
||||
@@ -1107,7 +1106,7 @@ static int dmac_func_en(struct rtw89_dev *rtwdev)
|
||||
B_AX_WD_RLS_CLK_EN);
|
||||
rtw89_write32(rtwdev, R_AX_DMAC_CLK_EN, val32);
|
||||
|
||||
- return ret;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
static int chip_func_en(struct rtw89_dev *rtwdev)
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,98 @@
|
||||
From 5e753fef71954c833fa859b2e48e57874500a2fd Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:03 +0100
|
||||
Subject: [PATCH 17/36] rtw89: fix potentially access out of range of RF
|
||||
register array
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 30101812a09b37bc8aa409a83f603d4c072198f2
|
||||
Author: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Date: Fri Nov 19 13:57:29 2021 +0800
|
||||
|
||||
rtw89: fix potentially access out of range of RF register array
|
||||
|
||||
The RF register array is used to help firmware to restore RF settings.
|
||||
The original code can potentially access out of range, if the size is
|
||||
between (RTW89_H2C_RF_PAGE_SIZE * RTW89_H2C_RF_PAGE_NUM + 1) to
|
||||
((RTW89_H2C_RF_PAGE_SIZE + 1) * RTW89_H2C_RF_PAGE_NUM). Fortunately,
|
||||
current used size doesn't fall into the wrong case, and the size will not
|
||||
change if we don't update RF parameter.
|
||||
|
||||
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211119055729.12826-1-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/phy.c | 33 ++++++++++++++++++--------------
|
||||
1 file changed, 19 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/phy.c b/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
index abb4cdcd03e7..312d9a07599d 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
@@ -654,6 +654,12 @@ rtw89_phy_cofig_rf_reg_store(struct rtw89_dev *rtwdev,
|
||||
u16 idx = info->curr_idx % RTW89_H2C_RF_PAGE_SIZE;
|
||||
u8 page = info->curr_idx / RTW89_H2C_RF_PAGE_SIZE;
|
||||
|
||||
+ if (page >= RTW89_H2C_RF_PAGE_NUM) {
|
||||
+ rtw89_warn(rtwdev, "RF parameters exceed size. path=%d, idx=%d",
|
||||
+ rf_path, info->curr_idx);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
info->rtw89_phy_config_rf_h2c[page][idx] =
|
||||
cpu_to_le32((reg->addr << 20) | reg->data);
|
||||
info->curr_idx++;
|
||||
@@ -662,30 +668,29 @@ rtw89_phy_cofig_rf_reg_store(struct rtw89_dev *rtwdev,
|
||||
static int rtw89_phy_config_rf_reg_fw(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_fw_h2c_rf_reg_info *info)
|
||||
{
|
||||
- u16 page = info->curr_idx / RTW89_H2C_RF_PAGE_SIZE;
|
||||
- u16 len = (info->curr_idx % RTW89_H2C_RF_PAGE_SIZE) * 4;
|
||||
+ u16 remain = info->curr_idx;
|
||||
+ u16 len = 0;
|
||||
u8 i;
|
||||
int ret = 0;
|
||||
|
||||
- if (page > RTW89_H2C_RF_PAGE_NUM) {
|
||||
+ if (remain > RTW89_H2C_RF_PAGE_NUM * RTW89_H2C_RF_PAGE_SIZE) {
|
||||
rtw89_warn(rtwdev,
|
||||
- "rf reg h2c total page num %d larger than %d (RTW89_H2C_RF_PAGE_NUM)\n",
|
||||
- page, RTW89_H2C_RF_PAGE_NUM);
|
||||
- return -EINVAL;
|
||||
+ "rf reg h2c total len %d larger than %d\n",
|
||||
+ remain, RTW89_H2C_RF_PAGE_NUM * RTW89_H2C_RF_PAGE_SIZE);
|
||||
+ ret = -EINVAL;
|
||||
+ goto out;
|
||||
}
|
||||
|
||||
- for (i = 0; i < page; i++) {
|
||||
- ret = rtw89_fw_h2c_rf_reg(rtwdev, info,
|
||||
- RTW89_H2C_RF_PAGE_SIZE * 4, i);
|
||||
+ for (i = 0; i < RTW89_H2C_RF_PAGE_NUM && remain; i++, remain -= len) {
|
||||
+ len = remain > RTW89_H2C_RF_PAGE_SIZE ? RTW89_H2C_RF_PAGE_SIZE : remain;
|
||||
+ ret = rtw89_fw_h2c_rf_reg(rtwdev, info, len * 4, i);
|
||||
if (ret)
|
||||
- return ret;
|
||||
+ goto out;
|
||||
}
|
||||
- ret = rtw89_fw_h2c_rf_reg(rtwdev, info, len, i);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
+out:
|
||||
info->curr_idx = 0;
|
||||
|
||||
- return 0;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
static void rtw89_phy_config_rf_reg(struct rtw89_dev *rtwdev,
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,97 @@
|
||||
From f97fbc5fb6e05ce555777c234f31b70fff32c8dc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:03 +0100
|
||||
Subject: [PATCH 18/36] rtw89: add AXIDMA and TX FIFO dump in mac_mem_dump
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 5da7075c1126f70578a111b8ea64d93f56bc84dd
|
||||
Author: Chia-Yuan Li <leo.li@realtek.com>
|
||||
Date: Mon Nov 22 10:11:29 2021 +0800
|
||||
|
||||
rtw89: add AXIDMA and TX FIFO dump in mac_mem_dump
|
||||
|
||||
The AXIDMA is tx/rx packet transmission between PCIE host
|
||||
and device, and TX FIFO is MAC TX data.
|
||||
We dump them to verify that these memory buffers are correct.
|
||||
|
||||
Signed-off-by: Chia-Yuan Li <leo.li@realtek.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Reviewed-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
Link: https://lore.kernel.org/r/20211122021129.4339-1-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/debug.c | 5 +++++
|
||||
drivers/net/wireless/realtek/rtw89/mac.h | 10 ++++++++++
|
||||
2 files changed, 15 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/debug.c b/drivers/net/wireless/realtek/rtw89/debug.c
|
||||
index 75f10627585b..1e85808aaf4b 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/debug.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/debug.c
|
||||
@@ -723,6 +723,7 @@ rtw89_debug_priv_mac_mem_dump_select(struct file *filp,
|
||||
}
|
||||
|
||||
static const u32 mac_mem_base_addr_table[RTW89_MAC_MEM_MAX] = {
|
||||
+ [RTW89_MAC_MEM_AXIDMA] = AXIDMA_BASE_ADDR,
|
||||
[RTW89_MAC_MEM_SHARED_BUF] = SHARED_BUF_BASE_ADDR,
|
||||
[RTW89_MAC_MEM_DMAC_TBL] = DMAC_TBL_BASE_ADDR,
|
||||
[RTW89_MAC_MEM_SHCUT_MACHDR] = SHCUT_MACHDR_BASE_ADDR,
|
||||
@@ -735,6 +736,10 @@ static const u32 mac_mem_base_addr_table[RTW89_MAC_MEM_MAX] = {
|
||||
[RTW89_MAC_MEM_BA_CAM] = BA_CAM_BASE_ADDR,
|
||||
[RTW89_MAC_MEM_BCN_IE_CAM0] = BCN_IE_CAM0_BASE_ADDR,
|
||||
[RTW89_MAC_MEM_BCN_IE_CAM1] = BCN_IE_CAM1_BASE_ADDR,
|
||||
+ [RTW89_MAC_MEM_TXD_FIFO_0] = TXD_FIFO_0_BASE_ADDR,
|
||||
+ [RTW89_MAC_MEM_TXD_FIFO_1] = TXD_FIFO_1_BASE_ADDR,
|
||||
+ [RTW89_MAC_MEM_TXDATA_FIFO_0] = TXDATA_FIFO_0_BASE_ADDR,
|
||||
+ [RTW89_MAC_MEM_TXDATA_FIFO_1] = TXDATA_FIFO_1_BASE_ADDR,
|
||||
};
|
||||
|
||||
static void rtw89_debug_dump_mac_mem(struct seq_file *m,
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac.h b/drivers/net/wireless/realtek/rtw89/mac.h
|
||||
index 6f3db8a2a9c2..94cd29bd83d7 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac.h
|
||||
@@ -227,6 +227,7 @@ enum rtw89_mac_dbg_port_sel {
|
||||
/* SRAM mem dump */
|
||||
#define R_AX_INDIR_ACCESS_ENTRY 0x40000
|
||||
|
||||
+#define AXIDMA_BASE_ADDR 0x18006000
|
||||
#define STA_SCHED_BASE_ADDR 0x18808000
|
||||
#define RXPLD_FLTR_CAM_BASE_ADDR 0x18813000
|
||||
#define SECURITY_CAM_BASE_ADDR 0x18814000
|
||||
@@ -240,10 +241,15 @@ enum rtw89_mac_dbg_port_sel {
|
||||
#define DMAC_TBL_BASE_ADDR 0x18800000
|
||||
#define SHCUT_MACHDR_BASE_ADDR 0x18800800
|
||||
#define BCN_IE_CAM1_BASE_ADDR 0x188A0000
|
||||
+#define TXD_FIFO_0_BASE_ADDR 0x18856200
|
||||
+#define TXD_FIFO_1_BASE_ADDR 0x188A1080
|
||||
+#define TXDATA_FIFO_0_BASE_ADDR 0x18856000
|
||||
+#define TXDATA_FIFO_1_BASE_ADDR 0x188A1000
|
||||
|
||||
#define CCTL_INFO_SIZE 32
|
||||
|
||||
enum rtw89_mac_mem_sel {
|
||||
+ RTW89_MAC_MEM_AXIDMA,
|
||||
RTW89_MAC_MEM_SHARED_BUF,
|
||||
RTW89_MAC_MEM_DMAC_TBL,
|
||||
RTW89_MAC_MEM_SHCUT_MACHDR,
|
||||
@@ -256,6 +262,10 @@ enum rtw89_mac_mem_sel {
|
||||
RTW89_MAC_MEM_BA_CAM,
|
||||
RTW89_MAC_MEM_BCN_IE_CAM0,
|
||||
RTW89_MAC_MEM_BCN_IE_CAM1,
|
||||
+ RTW89_MAC_MEM_TXD_FIFO_0,
|
||||
+ RTW89_MAC_MEM_TXD_FIFO_1,
|
||||
+ RTW89_MAC_MEM_TXDATA_FIFO_0,
|
||||
+ RTW89_MAC_MEM_TXDATA_FIFO_1,
|
||||
|
||||
/* keep last */
|
||||
RTW89_MAC_MEM_LAST,
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,239 @@
|
||||
From 2cdc98b8d11857fee31fd79f8b15bf04f76e0f78 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:03 +0100
|
||||
Subject: [PATCH 19/36] rtw89: add const in the cast of le32_get_bits()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 321e763ccc5260364600b4facd9e9acf645949b2
|
||||
Author: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Date: Fri Nov 19 13:45:11 2021 +0800
|
||||
|
||||
rtw89: add const in the cast of le32_get_bits()
|
||||
|
||||
Add 'const' to be clear that this is a read-only access, and this patch
|
||||
doesn't change logic at all.
|
||||
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Tested-by: Takashi Iwai <tiwai@suse.de>
|
||||
Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
|
||||
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20211119054512.10620-3-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/fw.h | 68 +++++++++++++++----------------
|
||||
drivers/net/wireless/realtek/rtw89/txrx.h | 46 ++++++++++-----------
|
||||
2 files changed, 57 insertions(+), 57 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/fw.h b/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
index 36e8d0da6c1e..2a9953d1ae0c 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
@@ -252,36 +252,36 @@ struct rtw89_h2creg_sch_tx_en {
|
||||
#define FW_EDCA_PARAM_AIFS_MSK GENMASK(7, 0)
|
||||
|
||||
#define GET_FWSECTION_HDR_SEC_SIZE(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 1), GENMASK(23, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 1), GENMASK(23, 0))
|
||||
#define GET_FWSECTION_HDR_CHECKSUM(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 1), BIT(28))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 1), BIT(28))
|
||||
#define GET_FWSECTION_HDR_REDL(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 1), BIT(29))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 1), BIT(29))
|
||||
#define GET_FWSECTION_HDR_DL_ADDR(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr)), GENMASK(31, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr)), GENMASK(31, 0))
|
||||
|
||||
#define GET_FW_HDR_MAJOR_VERSION(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 1), GENMASK(7, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 1), GENMASK(7, 0))
|
||||
#define GET_FW_HDR_MINOR_VERSION(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 1), GENMASK(15, 8))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 1), GENMASK(15, 8))
|
||||
#define GET_FW_HDR_SUBVERSION(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 1), GENMASK(23, 16))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 1), GENMASK(23, 16))
|
||||
#define GET_FW_HDR_SUBINDEX(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 1), GENMASK(31, 24))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 1), GENMASK(31, 24))
|
||||
#define GET_FW_HDR_MONTH(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 4), GENMASK(7, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 4), GENMASK(7, 0))
|
||||
#define GET_FW_HDR_DATE(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 4), GENMASK(15, 8))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 4), GENMASK(15, 8))
|
||||
#define GET_FW_HDR_HOUR(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 4), GENMASK(23, 16))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 4), GENMASK(23, 16))
|
||||
#define GET_FW_HDR_MIN(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 4), GENMASK(31, 24))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 4), GENMASK(31, 24))
|
||||
#define GET_FW_HDR_YEAR(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 5), GENMASK(31, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 5), GENMASK(31, 0))
|
||||
#define GET_FW_HDR_SEC_NUM(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 6), GENMASK(15, 8))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 6), GENMASK(15, 8))
|
||||
#define GET_FW_HDR_CMD_VERSERION(fwhdr) \
|
||||
- le32_get_bits(*((__le32 *)(fwhdr) + 7), GENMASK(31, 24))
|
||||
+ le32_get_bits(*((const __le32 *)(fwhdr) + 7), GENMASK(31, 24))
|
||||
static inline void SET_FW_HDR_PART_SIZE(void *fwhdr, u32 val)
|
||||
{
|
||||
le32p_replace_bits((__le32 *)fwhdr + 7, val, GENMASK(15, 0));
|
||||
@@ -1170,49 +1170,49 @@ enum rtw89_btc_cxdrvinfo {
|
||||
#define RTW89_C2H_HEADER_LEN 8
|
||||
|
||||
#define RTW89_GET_C2H_CATEGORY(c2h) \
|
||||
- le32_get_bits(*((__le32 *)c2h), GENMASK(1, 0))
|
||||
+ le32_get_bits(*((const __le32 *)c2h), GENMASK(1, 0))
|
||||
#define RTW89_GET_C2H_CLASS(c2h) \
|
||||
- le32_get_bits(*((__le32 *)c2h), GENMASK(7, 2))
|
||||
+ le32_get_bits(*((const __le32 *)c2h), GENMASK(7, 2))
|
||||
#define RTW89_GET_C2H_FUNC(c2h) \
|
||||
- le32_get_bits(*((__le32 *)c2h), GENMASK(15, 8))
|
||||
+ le32_get_bits(*((const __le32 *)c2h), GENMASK(15, 8))
|
||||
#define RTW89_GET_C2H_LEN(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 1), GENMASK(13, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 1), GENMASK(13, 0))
|
||||
|
||||
#define RTW89_GET_C2H_LOG_SRT_PRT(c2h) (char *)((__le32 *)(c2h) + 2)
|
||||
#define RTW89_GET_C2H_LOG_LEN(len) ((len) - RTW89_C2H_HEADER_LEN)
|
||||
|
||||
#define RTW89_GET_MAC_C2H_DONE_ACK_CAT(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 2), GENMASK(1, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(1, 0))
|
||||
#define RTW89_GET_MAC_C2H_DONE_ACK_CLASS(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 2), GENMASK(7, 2))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(7, 2))
|
||||
#define RTW89_GET_MAC_C2H_DONE_ACK_FUNC(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 2), GENMASK(15, 8))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(15, 8))
|
||||
#define RTW89_GET_MAC_C2H_DONE_ACK_H2C_RETURN(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 2), GENMASK(23, 16))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(23, 16))
|
||||
#define RTW89_GET_MAC_C2H_DONE_ACK_H2C_SEQ(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 2), GENMASK(31, 24))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(31, 24))
|
||||
|
||||
#define RTW89_GET_MAC_C2H_REV_ACK_CAT(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 2), GENMASK(1, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(1, 0))
|
||||
#define RTW89_GET_MAC_C2H_REV_ACK_CLASS(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 2), GENMASK(7, 2))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(7, 2))
|
||||
#define RTW89_GET_MAC_C2H_REV_ACK_FUNC(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 2), GENMASK(15, 8))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(15, 8))
|
||||
#define RTW89_GET_MAC_C2H_REV_ACK_H2C_SEQ(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 2), GENMASK(23, 16))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(23, 16))
|
||||
|
||||
#define RTW89_GET_PHY_C2H_RA_RPT_MACID(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 2), GENMASK(15, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(15, 0))
|
||||
#define RTW89_GET_PHY_C2H_RA_RPT_RETRY_RATIO(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 2), GENMASK(23, 16))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(23, 16))
|
||||
#define RTW89_GET_PHY_C2H_RA_RPT_MCSNSS(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 3), GENMASK(6, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 3), GENMASK(6, 0))
|
||||
#define RTW89_GET_PHY_C2H_RA_RPT_MD_SEL(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 3), GENMASK(9, 8))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 3), GENMASK(9, 8))
|
||||
#define RTW89_GET_PHY_C2H_RA_RPT_GILTF(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 3), GENMASK(12, 10))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 3), GENMASK(12, 10))
|
||||
#define RTW89_GET_PHY_C2H_RA_RPT_BW(c2h) \
|
||||
- le32_get_bits(*((__le32 *)(c2h) + 3), GENMASK(14, 13))
|
||||
+ le32_get_bits(*((const __le32 *)(c2h) + 3), GENMASK(14, 13))
|
||||
|
||||
/* VHT, HE, HT-old: [6:4]: NSS, [3:0]: MCS
|
||||
* HT-new: [6:5]: NA, [4:0]: MCS
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/txrx.h b/drivers/net/wireless/realtek/rtw89/txrx.h
|
||||
index f1e0fe36107d..5570d8ccf136 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/txrx.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/txrx.h
|
||||
@@ -140,52 +140,52 @@
|
||||
le32_get_bits((rxdesc)->dword5, GENMASK(7, 0))
|
||||
|
||||
#define RTW89_GET_RXINFO_USR_NUM(rpt) \
|
||||
- le32_get_bits(*((__le32 *)rpt), GENMASK(3, 0))
|
||||
+ le32_get_bits(*((const __le32 *)rpt), GENMASK(3, 0))
|
||||
#define RTW89_GET_RXINFO_FW_DEFINE(rpt) \
|
||||
- le32_get_bits(*((__le32 *)rpt), GENMASK(15, 8))
|
||||
+ le32_get_bits(*((const __le32 *)rpt), GENMASK(15, 8))
|
||||
#define RTW89_GET_RXINFO_LSIG_LEN(rpt) \
|
||||
- le32_get_bits(*((__le32 *)rpt), GENMASK(27, 16))
|
||||
+ le32_get_bits(*((const __le32 *)rpt), GENMASK(27, 16))
|
||||
#define RTW89_GET_RXINFO_IS_TO_SELF(rpt) \
|
||||
- le32_get_bits(*((__le32 *)rpt), BIT(28))
|
||||
+ le32_get_bits(*((const __le32 *)rpt), BIT(28))
|
||||
#define RTW89_GET_RXINFO_RX_CNT_VLD(rpt) \
|
||||
- le32_get_bits(*((__le32 *)rpt), BIT(29))
|
||||
+ le32_get_bits(*((const __le32 *)rpt), BIT(29))
|
||||
#define RTW89_GET_RXINFO_LONG_RXD(rpt) \
|
||||
- le32_get_bits(*((__le32 *)rpt), GENMASK(31, 30))
|
||||
+ le32_get_bits(*((const __le32 *)rpt), GENMASK(31, 30))
|
||||
#define RTW89_GET_RXINFO_SERVICE(rpt) \
|
||||
- le32_get_bits(*((__le32 *)(rpt) + 1), GENMASK(15, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(rpt) + 1), GENMASK(15, 0))
|
||||
#define RTW89_GET_RXINFO_PLCP_LEN(rpt) \
|
||||
- le32_get_bits(*((__le32 *)(rpt) + 1), GENMASK(23, 16))
|
||||
+ le32_get_bits(*((const __le32 *)(rpt) + 1), GENMASK(23, 16))
|
||||
#define RTW89_GET_RXINFO_MAC_ID_VALID(rpt, usr) \
|
||||
- le32_get_bits(*((__le32 *)(rpt) + (usr) + 2), BIT(0))
|
||||
+ le32_get_bits(*((const __le32 *)(rpt) + (usr) + 2), BIT(0))
|
||||
#define RTW89_GET_RXINFO_DATA(rpt, usr) \
|
||||
- le32_get_bits(*((__le32 *)(rpt) + (usr) + 2), BIT(1))
|
||||
+ le32_get_bits(*((const __le32 *)(rpt) + (usr) + 2), BIT(1))
|
||||
#define RTW89_GET_RXINFO_CTRL(rpt, usr) \
|
||||
- le32_get_bits(*((__le32 *)(rpt) + (usr) + 2), BIT(2))
|
||||
+ le32_get_bits(*((const __le32 *)(rpt) + (usr) + 2), BIT(2))
|
||||
#define RTW89_GET_RXINFO_MGMT(rpt, usr) \
|
||||
- le32_get_bits(*((__le32 *)(rpt) + (usr) + 2), BIT(3))
|
||||
+ le32_get_bits(*((const __le32 *)(rpt) + (usr) + 2), BIT(3))
|
||||
#define RTW89_GET_RXINFO_BCM(rpt, usr) \
|
||||
- le32_get_bits(*((__le32 *)(rpt) + (usr) + 2), BIT(4))
|
||||
+ le32_get_bits(*((const __le32 *)(rpt) + (usr) + 2), BIT(4))
|
||||
#define RTW89_GET_RXINFO_MACID(rpt, usr) \
|
||||
- le32_get_bits(*((__le32 *)(rpt) + (usr) + 2), GENMASK(15, 8))
|
||||
+ le32_get_bits(*((const __le32 *)(rpt) + (usr) + 2), GENMASK(15, 8))
|
||||
|
||||
#define RTW89_GET_PHY_STS_RSSI_A(sts) \
|
||||
- le32_get_bits(*((__le32 *)(sts) + 1), GENMASK(7, 0))
|
||||
+ le32_get_bits(*((const __le32 *)(sts) + 1), GENMASK(7, 0))
|
||||
#define RTW89_GET_PHY_STS_RSSI_B(sts) \
|
||||
- le32_get_bits(*((__le32 *)(sts) + 1), GENMASK(15, 8))
|
||||
+ le32_get_bits(*((const __le32 *)(sts) + 1), GENMASK(15, 8))
|
||||
#define RTW89_GET_PHY_STS_RSSI_C(sts) \
|
||||
- le32_get_bits(*((__le32 *)(sts) + 1), GENMASK(23, 16))
|
||||
+ le32_get_bits(*((const __le32 *)(sts) + 1), GENMASK(23, 16))
|
||||
#define RTW89_GET_PHY_STS_RSSI_D(sts) \
|
||||
- le32_get_bits(*((__le32 *)(sts) + 1), GENMASK(31, 24))
|
||||
+ le32_get_bits(*((const __le32 *)(sts) + 1), GENMASK(31, 24))
|
||||
#define RTW89_GET_PHY_STS_LEN(sts) \
|
||||
- le32_get_bits(*((__le32 *)sts), GENMASK(15, 8))
|
||||
+ le32_get_bits(*((const __le32 *)sts), GENMASK(15, 8))
|
||||
#define RTW89_GET_PHY_STS_RSSI_AVG(sts) \
|
||||
- le32_get_bits(*((__le32 *)sts), GENMASK(31, 24))
|
||||
+ le32_get_bits(*((const __le32 *)sts), GENMASK(31, 24))
|
||||
#define RTW89_GET_PHY_STS_IE_TYPE(ie) \
|
||||
- le32_get_bits(*((__le32 *)ie), GENMASK(4, 0))
|
||||
+ le32_get_bits(*((const __le32 *)ie), GENMASK(4, 0))
|
||||
#define RTW89_GET_PHY_STS_IE_LEN(ie) \
|
||||
- le32_get_bits(*((__le32 *)ie), GENMASK(11, 5))
|
||||
+ le32_get_bits(*((const __le32 *)ie), GENMASK(11, 5))
|
||||
#define RTW89_GET_PHY_STS_IE0_CFO(ie) \
|
||||
- le32_get_bits(*((__le32 *)(ie) + 1), GENMASK(31, 20))
|
||||
+ le32_get_bits(*((const __le32 *)(ie) + 1), GENMASK(31, 20))
|
||||
|
||||
enum rtw89_tx_channel {
|
||||
RTW89_TXCH_ACH0 = 0,
|
||||
--
|
||||
2.13.6
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,246 @@
|
||||
From 8e579520ae0aa2dc263b033b3ae93339804e6b38 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:03 +0100
|
||||
Subject: [PATCH 21/36] rtw89: update scan_mac_addr during scanning period
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit e45a9e6265d2591efb745c9ffa46f4e9cceb5c65
|
||||
Author: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Date: Thu Nov 11 10:37:05 2021 +0800
|
||||
|
||||
rtw89: update scan_mac_addr during scanning period
|
||||
|
||||
Update scan_mac_addr to address CAM as A1, so hardware can ACK probe
|
||||
response properly.
|
||||
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20211111023706.14154-2-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/cam.c | 22 ++++++++++++----------
|
||||
drivers/net/wireless/realtek/rtw89/cam.h | 3 ++-
|
||||
drivers/net/wireless/realtek/rtw89/core.c | 4 ++--
|
||||
drivers/net/wireless/realtek/rtw89/fw.c | 5 +++--
|
||||
drivers/net/wireless/realtek/rtw89/fw.h | 3 ++-
|
||||
drivers/net/wireless/realtek/rtw89/mac.c | 4 ++--
|
||||
drivers/net/wireless/realtek/rtw89/mac80211.c | 6 +++++-
|
||||
7 files changed, 28 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/cam.c b/drivers/net/wireless/realtek/rtw89/cam.c
|
||||
index ad7a8155dbed..ce5056ad1e5c 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/cam.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/cam.c
|
||||
@@ -243,7 +243,7 @@ static int rtw89_cam_attach_sec_cam(struct rtw89_dev *rtwdev,
|
||||
addr_cam->sec_ent[key_idx] = sec_cam->sec_cam_idx;
|
||||
addr_cam->sec_entries[key_idx] = sec_cam;
|
||||
set_bit(key_idx, addr_cam->sec_cam_map);
|
||||
- ret = rtw89_fw_h2c_cam(rtwdev, rtwvif);
|
||||
+ ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
if (ret) {
|
||||
rtw89_err(rtwdev, "failed to update addr cam sec entry: %d\n",
|
||||
ret);
|
||||
@@ -394,7 +394,7 @@ int rtw89_cam_sec_key_del(struct rtw89_dev *rtwdev,
|
||||
clear_bit(key_idx, addr_cam->sec_cam_map);
|
||||
addr_cam->sec_entries[key_idx] = NULL;
|
||||
if (inform_fw) {
|
||||
- ret = rtw89_fw_h2c_cam(rtwdev, rtwvif);
|
||||
+ ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
if (ret)
|
||||
rtw89_err(rtwdev, "failed to update cam del key: %d\n", ret);
|
||||
}
|
||||
@@ -593,7 +593,7 @@ int rtw89_cam_fill_bssid_cam_info(struct rtw89_dev *rtwdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static u8 rtw89_cam_addr_hash(u8 start, u8 *addr)
|
||||
+static u8 rtw89_cam_addr_hash(u8 start, const u8 *addr)
|
||||
{
|
||||
u8 hash = 0;
|
||||
u8 i;
|
||||
@@ -606,12 +606,14 @@ static u8 rtw89_cam_addr_hash(u8 start, u8 *addr)
|
||||
|
||||
void rtw89_cam_fill_addr_cam_info(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_vif *rtwvif,
|
||||
+ const u8 *scan_mac_addr,
|
||||
u8 *cmd)
|
||||
{
|
||||
struct ieee80211_vif *vif = rtwvif_to_vif(rtwvif);
|
||||
struct ieee80211_sta *sta;
|
||||
struct rtw89_sta *rtwsta;
|
||||
struct rtw89_addr_cam_entry *addr_cam = &rtwvif->addr_cam;
|
||||
+ const u8 *sma = scan_mac_addr ? scan_mac_addr : rtwvif->mac_addr;
|
||||
u8 sma_hash, tma_hash, addr_msk_start;
|
||||
u8 sma_start = 0;
|
||||
u8 tma_start = 0;
|
||||
@@ -623,7 +625,7 @@ void rtw89_cam_fill_addr_cam_info(struct rtw89_dev *rtwdev,
|
||||
else if (addr_cam->mask_sel == RTW89_TMA)
|
||||
tma_start = addr_msk_start;
|
||||
}
|
||||
- sma_hash = rtw89_cam_addr_hash(sma_start, rtwvif->mac_addr);
|
||||
+ sma_hash = rtw89_cam_addr_hash(sma_start, sma);
|
||||
tma_hash = rtw89_cam_addr_hash(tma_start, addr_cam->tma);
|
||||
|
||||
FWCMD_SET_ADDR_IDX(cmd, addr_cam->addr_cam_idx);
|
||||
@@ -642,12 +644,12 @@ void rtw89_cam_fill_addr_cam_info(struct rtw89_dev *rtwdev,
|
||||
|
||||
FWCMD_SET_ADDR_BSSID_CAM_IDX(cmd, addr_cam->bssid_cam_idx);
|
||||
|
||||
- FWCMD_SET_ADDR_SMA0(cmd, rtwvif->mac_addr[0]);
|
||||
- FWCMD_SET_ADDR_SMA1(cmd, rtwvif->mac_addr[1]);
|
||||
- FWCMD_SET_ADDR_SMA2(cmd, rtwvif->mac_addr[2]);
|
||||
- FWCMD_SET_ADDR_SMA3(cmd, rtwvif->mac_addr[3]);
|
||||
- FWCMD_SET_ADDR_SMA4(cmd, rtwvif->mac_addr[4]);
|
||||
- FWCMD_SET_ADDR_SMA5(cmd, rtwvif->mac_addr[5]);
|
||||
+ FWCMD_SET_ADDR_SMA0(cmd, sma[0]);
|
||||
+ FWCMD_SET_ADDR_SMA1(cmd, sma[1]);
|
||||
+ FWCMD_SET_ADDR_SMA2(cmd, sma[2]);
|
||||
+ FWCMD_SET_ADDR_SMA3(cmd, sma[3]);
|
||||
+ FWCMD_SET_ADDR_SMA4(cmd, sma[4]);
|
||||
+ FWCMD_SET_ADDR_SMA5(cmd, sma[5]);
|
||||
|
||||
FWCMD_SET_ADDR_TMA0(cmd, addr_cam->tma[0]);
|
||||
FWCMD_SET_ADDR_TMA1(cmd, addr_cam->tma[1]);
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/cam.h b/drivers/net/wireless/realtek/rtw89/cam.h
|
||||
index 41d7d2712027..c0f9ef12f530 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/cam.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/cam.h
|
||||
@@ -347,7 +347,8 @@ static inline void FWCMD_SET_ADDR_BSSID_BSSID5(void *cmd, u32 value)
|
||||
int rtw89_cam_init(struct rtw89_dev *rtwdev, struct rtw89_vif *vif);
|
||||
void rtw89_cam_deinit(struct rtw89_dev *rtwdev, struct rtw89_vif *vif);
|
||||
void rtw89_cam_fill_addr_cam_info(struct rtw89_dev *rtwdev,
|
||||
- struct rtw89_vif *vif, u8 *cmd);
|
||||
+ struct rtw89_vif *vif,
|
||||
+ const u8 *scan_mac_addr, u8 *cmd);
|
||||
int rtw89_cam_fill_bssid_cam_info(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_vif *vif, u8 *cmd);
|
||||
int rtw89_cam_sec_key_add(struct rtw89_dev *rtwdev,
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c
|
||||
index d02ec5a735cb..6c91e99fd28f 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/core.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/core.c
|
||||
@@ -1872,7 +1872,7 @@ int rtw89_core_sta_disconnect(struct rtw89_dev *rtwdev,
|
||||
}
|
||||
|
||||
/* update cam aid mac_id net_type */
|
||||
- rtw89_fw_h2c_cam(rtwdev, rtwvif);
|
||||
+ rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
if (ret) {
|
||||
rtw89_warn(rtwdev, "failed to send h2c cam\n");
|
||||
return ret;
|
||||
@@ -1908,7 +1908,7 @@ int rtw89_core_sta_assoc(struct rtw89_dev *rtwdev,
|
||||
}
|
||||
|
||||
/* update cam aid mac_id net_type */
|
||||
- rtw89_fw_h2c_cam(rtwdev, rtwvif);
|
||||
+ rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
if (ret) {
|
||||
rtw89_warn(rtwdev, "failed to send h2c cam\n");
|
||||
return ret;
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/fw.c b/drivers/net/wireless/realtek/rtw89/fw.c
|
||||
index 65ef3dc9d061..c9aa86e5d4e4 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/fw.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/fw.c
|
||||
@@ -523,7 +523,8 @@ void rtw89_unload_firmware(struct rtw89_dev *rtwdev)
|
||||
}
|
||||
|
||||
#define H2C_CAM_LEN 60
|
||||
-int rtw89_fw_h2c_cam(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
|
||||
+int rtw89_fw_h2c_cam(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif,
|
||||
+ const u8 *scan_mac_addr)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
|
||||
@@ -533,7 +534,7 @@ int rtw89_fw_h2c_cam(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
|
||||
return -ENOMEM;
|
||||
}
|
||||
skb_put(skb, H2C_CAM_LEN);
|
||||
- rtw89_cam_fill_addr_cam_info(rtwdev, rtwvif, skb->data);
|
||||
+ rtw89_cam_fill_addr_cam_info(rtwdev, rtwvif, scan_mac_addr, skb->data);
|
||||
rtw89_cam_fill_bssid_cam_info(rtwdev, rtwvif, skb->data);
|
||||
|
||||
rtw89_h2c_pkt_set_hdr(rtwdev, skb, FWCMD_TYPE_H2C,
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/fw.h b/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
index cf6898f7aaee..865170a89c4a 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
@@ -1756,7 +1756,8 @@ int rtw89_fw_h2c_assoc_cmac_tbl(struct rtw89_dev *rtwdev,
|
||||
struct ieee80211_sta *sta);
|
||||
int rtw89_fw_h2c_txtime_cmac_tbl(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_sta *rtwsta);
|
||||
-int rtw89_fw_h2c_cam(struct rtw89_dev *rtwdev, struct rtw89_vif *vif);
|
||||
+int rtw89_fw_h2c_cam(struct rtw89_dev *rtwdev, struct rtw89_vif *vif,
|
||||
+ const u8 *scan_mac_addr);
|
||||
void rtw89_fw_c2h_irqsafe(struct rtw89_dev *rtwdev, struct sk_buff *c2h);
|
||||
void rtw89_fw_c2h_work(struct work_struct *work);
|
||||
int rtw89_fw_h2c_vif_maintain(struct rtw89_dev *rtwdev,
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
index f8389e849c67..04c5f9966521 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
@@ -2990,7 +2990,7 @@ int rtw89_mac_vif_init(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
- ret = rtw89_fw_h2c_cam(rtwdev, rtwvif);
|
||||
+ ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -3011,7 +3011,7 @@ int rtw89_mac_vif_deinit(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
|
||||
|
||||
rtw89_cam_deinit(rtwdev, rtwvif);
|
||||
|
||||
- ret = rtw89_fw_h2c_cam(rtwdev, rtwvif);
|
||||
+ ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac80211.c b/drivers/net/wireless/realtek/rtw89/mac80211.c
|
||||
index 16dc6fb7dbb0..16381adf006e 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac80211.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac80211.c
|
||||
@@ -336,7 +336,7 @@ static void rtw89_ops_bss_info_changed(struct ieee80211_hw *hw,
|
||||
if (changed & BSS_CHANGED_BSSID) {
|
||||
ether_addr_copy(rtwvif->bssid, conf->bssid);
|
||||
rtw89_cam_bssid_changed(rtwdev, rtwvif);
|
||||
- rtw89_fw_h2c_cam(rtwdev, rtwvif);
|
||||
+ rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
}
|
||||
|
||||
if (changed & BSS_CHANGED_ERP_SLOT)
|
||||
@@ -615,6 +615,7 @@ static void rtw89_ops_sw_scan_start(struct ieee80211_hw *hw,
|
||||
const u8 *mac_addr)
|
||||
{
|
||||
struct rtw89_dev *rtwdev = hw->priv;
|
||||
+ struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
|
||||
struct rtw89_hal *hal = &rtwdev->hal;
|
||||
|
||||
mutex_lock(&rtwdev->mutex);
|
||||
@@ -623,6 +624,7 @@ static void rtw89_ops_sw_scan_start(struct ieee80211_hw *hw,
|
||||
rtw89_btc_ntfy_scan_start(rtwdev, RTW89_PHY_0, hal->current_band_type);
|
||||
rtw89_chip_rfk_scan(rtwdev, true);
|
||||
rtw89_hci_recalc_int_mit(rtwdev);
|
||||
+ rtw89_fw_h2c_cam(rtwdev, rtwvif, mac_addr);
|
||||
mutex_unlock(&rtwdev->mutex);
|
||||
}
|
||||
|
||||
@@ -630,8 +632,10 @@ static void rtw89_ops_sw_scan_complete(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct rtw89_dev *rtwdev = hw->priv;
|
||||
+ struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
|
||||
|
||||
mutex_lock(&rtwdev->mutex);
|
||||
+ rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
rtw89_chip_rfk_scan(rtwdev, false);
|
||||
rtw89_btc_ntfy_scan_finish(rtwdev, RTW89_PHY_0);
|
||||
rtwdev->scanning = false;
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,566 @@
|
||||
From 7de840de78a263730688f5f298f8dea0e954b980 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:03 +0100
|
||||
Subject: [PATCH 22/36] rtw89: fix incorrect channel info during scan
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit eb4e52b3f38dfd08a89e1084f5980a2bb93456fb
|
||||
Author: Po Hao Huang <phhuang@realtek.com>
|
||||
Date: Thu Nov 11 10:37:06 2021 +0800
|
||||
|
||||
rtw89: fix incorrect channel info during scan
|
||||
|
||||
We used to fill in rx skbs' frequency field by mac80211's current
|
||||
channel value. In some cases, mac80211 switches channel before all
|
||||
rx packets have been processed. This results in incorrect bss info.
|
||||
We fix this by filling in frequency field with channel index obtained
|
||||
from hardware, then fix potential cck missing issue by skb's original
|
||||
hw rate. After all fix is done, convert hw rate back to the supported
|
||||
band rate index.
|
||||
|
||||
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/20211111023706.14154-3-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/core.c | 53 +++++++++---
|
||||
drivers/net/wireless/realtek/rtw89/core.h | 4 +
|
||||
drivers/net/wireless/realtek/rtw89/debug.c | 2 +-
|
||||
drivers/net/wireless/realtek/rtw89/phy.c | 111 ++++++++++++++++++++++++++
|
||||
drivers/net/wireless/realtek/rtw89/phy.h | 60 ++++++++++++++
|
||||
drivers/net/wireless/realtek/rtw89/reg.h | 23 ++++++
|
||||
drivers/net/wireless/realtek/rtw89/rtw8852a.c | 19 +++++
|
||||
drivers/net/wireless/realtek/rtw89/txrx.h | 45 ++---------
|
||||
8 files changed, 264 insertions(+), 53 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c
|
||||
index 6c91e99fd28f..2c079388a664 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/core.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/core.c
|
||||
@@ -242,6 +242,7 @@ void rtw89_set_channel(struct rtw89_dev *rtwdev)
|
||||
|
||||
hal->current_band_width = bandwidth;
|
||||
hal->current_channel = center_chan;
|
||||
+ hal->prev_primary_channel = hal->current_primary_channel;
|
||||
hal->current_primary_channel = ch_param.primary_chan;
|
||||
hal->current_band_type = band_type;
|
||||
|
||||
@@ -881,8 +882,11 @@ static void rtw89_core_parse_phy_status_ie01(struct rtw89_dev *rtwdev, u8 *addr,
|
||||
{
|
||||
s16 cfo;
|
||||
|
||||
+ phy_ppdu->chan_idx = RTW89_GET_PHY_STS_IE01_CH_IDX(addr);
|
||||
+ if (phy_ppdu->rate < RTW89_HW_RATE_OFDM6)
|
||||
+ return;
|
||||
/* sign conversion for S(12,2) */
|
||||
- cfo = sign_extend32(RTW89_GET_PHY_STS_IE0_CFO(addr), 11);
|
||||
+ cfo = sign_extend32(RTW89_GET_PHY_STS_IE01_CFO(addr), 11);
|
||||
rtw89_phy_cfo_parse(rtwdev, cfo, phy_ppdu);
|
||||
}
|
||||
|
||||
@@ -908,6 +912,7 @@ static void rtw89_core_update_phy_ppdu(struct rtw89_rx_phy_ppdu *phy_ppdu)
|
||||
s8 *rssi = phy_ppdu->rssi;
|
||||
u8 *buf = phy_ppdu->buf;
|
||||
|
||||
+ phy_ppdu->ie = RTW89_GET_PHY_STS_IE_MAP(buf);
|
||||
phy_ppdu->rssi_avg = RTW89_GET_PHY_STS_RSSI_AVG(buf);
|
||||
rssi[RF_PATH_A] = RTW89_RSSI_RAW_TO_DBM(RTW89_GET_PHY_STS_RSSI_A(buf));
|
||||
rssi[RF_PATH_B] = RTW89_RSSI_RAW_TO_DBM(RTW89_GET_PHY_STS_RSSI_B(buf));
|
||||
@@ -936,8 +941,9 @@ static int rtw89_core_rx_parse_phy_sts(struct rtw89_dev *rtwdev,
|
||||
u16 ie_len;
|
||||
u8 *pos, *end;
|
||||
|
||||
- if (!phy_ppdu->to_self)
|
||||
- return 0;
|
||||
+ /* mark invalid reports and bypass them */
|
||||
+ if (phy_ppdu->ie < RTW89_CCK_PKT)
|
||||
+ return -EINVAL;
|
||||
|
||||
pos = (u8 *)phy_ppdu->buf + PHY_STS_HDR_LEN;
|
||||
end = (u8 *)phy_ppdu->buf + phy_ppdu->len;
|
||||
@@ -1000,9 +1006,7 @@ static bool rtw89_core_rx_ppdu_match(struct rtw89_dev *rtwdev,
|
||||
data_rate_mode = GET_DATA_RATE_MODE(data_rate);
|
||||
if (data_rate_mode == DATA_RATE_MODE_NON_HT) {
|
||||
rate_idx = GET_DATA_RATE_NOT_HT_IDX(data_rate);
|
||||
- /* No 4 CCK rates for 5G */
|
||||
- if (status->band == NL80211_BAND_5GHZ)
|
||||
- rate_idx -= 4;
|
||||
+ /* rate_idx is still hardware value here */
|
||||
} else if (data_rate_mode == DATA_RATE_MODE_HT) {
|
||||
rate_idx = GET_DATA_RATE_HT_IDX(data_rate);
|
||||
} else if (data_rate_mode == DATA_RATE_MODE_VHT) {
|
||||
@@ -1081,6 +1085,29 @@ static void rtw89_core_rx_stats(struct rtw89_dev *rtwdev,
|
||||
rtw89_iterate_vifs_bh(rtwdev, rtw89_vif_rx_stats_iter, &iter_data);
|
||||
}
|
||||
|
||||
+static void rtw89_correct_cck_chan(struct rtw89_dev *rtwdev,
|
||||
+ struct ieee80211_rx_status *status)
|
||||
+{
|
||||
+ u16 chan = rtwdev->hal.prev_primary_channel;
|
||||
+ u8 band = chan <= 14 ? NL80211_BAND_2GHZ : NL80211_BAND_5GHZ;
|
||||
+
|
||||
+ if (status->band != NL80211_BAND_2GHZ &&
|
||||
+ status->encoding == RX_ENC_LEGACY &&
|
||||
+ status->rate_idx < RTW89_HW_RATE_OFDM6) {
|
||||
+ status->freq = ieee80211_channel_to_frequency(chan, band);
|
||||
+ status->band = band;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void rtw89_core_hw_to_sband_rate(struct ieee80211_rx_status *rx_status)
|
||||
+{
|
||||
+ if (rx_status->band == NL80211_BAND_2GHZ ||
|
||||
+ rx_status->encoding != RX_ENC_LEGACY)
|
||||
+ return;
|
||||
+ /* No 4 CCK rates for non-2G */
|
||||
+ rx_status->rate_idx -= 4;
|
||||
+}
|
||||
+
|
||||
static void rtw89_core_rx_pending_skb(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_rx_phy_ppdu *phy_ppdu,
|
||||
struct rtw89_rx_desc_info *desc_info,
|
||||
@@ -1099,6 +1126,8 @@ static void rtw89_core_rx_pending_skb(struct rtw89_dev *rtwdev,
|
||||
rx_status = IEEE80211_SKB_RXCB(skb_ppdu);
|
||||
if (rtw89_core_rx_ppdu_match(rtwdev, desc_info, rx_status))
|
||||
rtw89_chip_query_ppdu(rtwdev, phy_ppdu, rx_status);
|
||||
+ rtw89_correct_cck_chan(rtwdev, rx_status);
|
||||
+ rtw89_core_hw_to_sband_rate(rx_status);
|
||||
rtw89_core_rx_stats(rtwdev, phy_ppdu, desc_info, skb_ppdu);
|
||||
ieee80211_rx_napi(rtwdev->hw, NULL, skb_ppdu, &rtwdev->napi);
|
||||
rtwdev->napi_budget_countdown--;
|
||||
@@ -1112,6 +1141,7 @@ static void rtw89_core_rx_process_ppdu_sts(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_rx_phy_ppdu phy_ppdu = {.buf = skb->data, .valid = false,
|
||||
.len = skb->len,
|
||||
.to_self = desc_info->addr1_match,
|
||||
+ .rate = desc_info->data_rate,
|
||||
.mac_id = desc_info->mac_id};
|
||||
int ret;
|
||||
|
||||
@@ -1267,12 +1297,7 @@ static void rtw89_core_update_rx_status(struct rtw89_dev *rtwdev,
|
||||
if (data_rate_mode == DATA_RATE_MODE_NON_HT) {
|
||||
rx_status->encoding = RX_ENC_LEGACY;
|
||||
rx_status->rate_idx = GET_DATA_RATE_NOT_HT_IDX(data_rate);
|
||||
- /* No 4 CCK rates for 5G */
|
||||
- if (rx_status->band == NL80211_BAND_5GHZ)
|
||||
- rx_status->rate_idx -= 4;
|
||||
- if (rtwdev->scanning)
|
||||
- rx_status->rate_idx = min_t(u8, rx_status->rate_idx,
|
||||
- ARRAY_SIZE(rtw89_bitrates) - 5);
|
||||
+ /* convert rate_idx after we get the correct band */
|
||||
} else if (data_rate_mode == DATA_RATE_MODE_HT) {
|
||||
rx_status->encoding = RX_ENC_HT;
|
||||
rx_status->rate_idx = GET_DATA_RATE_HT_IDX(data_rate);
|
||||
@@ -1324,10 +1349,13 @@ static void rtw89_core_flush_ppdu_rx_queue(struct rtw89_dev *rtwdev,
|
||||
{
|
||||
struct rtw89_ppdu_sts_info *ppdu_sts = &rtwdev->ppdu_sts;
|
||||
u8 band = desc_info->bb_sel ? RTW89_PHY_1 : RTW89_PHY_0;
|
||||
+ struct ieee80211_rx_status *rx_status;
|
||||
struct sk_buff *skb_ppdu, *tmp;
|
||||
|
||||
skb_queue_walk_safe(&ppdu_sts->rx_queue[band], skb_ppdu, tmp) {
|
||||
skb_unlink(skb_ppdu, &ppdu_sts->rx_queue[band]);
|
||||
+ rx_status = IEEE80211_SKB_RXCB(skb_ppdu);
|
||||
+ rtw89_core_hw_to_sband_rate(rx_status);
|
||||
rtw89_core_rx_stats(rtwdev, NULL, desc_info, skb_ppdu);
|
||||
ieee80211_rx_napi(rtwdev->hw, NULL, skb_ppdu, &rtwdev->napi);
|
||||
rtwdev->napi_budget_countdown--;
|
||||
@@ -1360,6 +1388,7 @@ void rtw89_core_rx(struct rtw89_dev *rtwdev,
|
||||
BIT(desc_info->frame_type) & PPDU_FILTER_BITMAP) {
|
||||
skb_queue_tail(&ppdu_sts->rx_queue[band], skb);
|
||||
} else {
|
||||
+ rtw89_core_hw_to_sband_rate(rx_status);
|
||||
rtw89_core_rx_stats(rtwdev, NULL, desc_info, skb);
|
||||
ieee80211_rx_napi(rtwdev->hw, NULL, skb, &rtwdev->napi);
|
||||
rtwdev->napi_budget_countdown--;
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h
|
||||
index 3729abda04f9..ef3f5de26f13 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/core.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/core.h
|
||||
@@ -473,6 +473,9 @@ struct rtw89_rx_phy_ppdu {
|
||||
u8 rssi_avg;
|
||||
s8 rssi[RF_PATH_MAX];
|
||||
u8 mac_id;
|
||||
+ u8 chan_idx;
|
||||
+ u8 ie;
|
||||
+ u16 rate;
|
||||
bool to_self;
|
||||
bool valid;
|
||||
};
|
||||
@@ -2355,6 +2358,7 @@ struct rtw89_hal {
|
||||
u32 rx_fltr;
|
||||
u8 cv;
|
||||
u8 current_channel;
|
||||
+ u8 prev_primary_channel;
|
||||
u8 current_primary_channel;
|
||||
enum rtw89_subband current_subband;
|
||||
u8 current_band_width;
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/debug.c b/drivers/net/wireless/realtek/rtw89/debug.c
|
||||
index 1e85808aaf4b..9756d75ef24e 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/debug.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/debug.c
|
||||
@@ -2285,7 +2285,7 @@ static void rtw89_sta_info_get_iter(void *data, struct ieee80211_sta *sta)
|
||||
switch (status->encoding) {
|
||||
case RX_ENC_LEGACY:
|
||||
seq_printf(m, "Legacy %d", status->rate_idx +
|
||||
- (status->band == NL80211_BAND_5GHZ ? 4 : 0));
|
||||
+ (status->band != NL80211_BAND_2GHZ ? 4 : 0));
|
||||
break;
|
||||
case RX_ENC_HT:
|
||||
seq_printf(m, "HT MCS-%d%s", status->rate_idx,
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/phy.c b/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
index 312d9a07599d..147009888de0 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/phy.c
|
||||
@@ -2421,6 +2421,116 @@ void rtw89_phy_env_monitor_track(struct rtw89_dev *rtwdev)
|
||||
env->ccx_watchdog_result, chk_result);
|
||||
}
|
||||
|
||||
+static bool rtw89_physts_ie_page_valid(enum rtw89_phy_status_bitmap *ie_page)
|
||||
+{
|
||||
+ if (*ie_page > RTW89_PHYSTS_BITMAP_NUM ||
|
||||
+ *ie_page == RTW89_RSVD_9)
|
||||
+ return false;
|
||||
+ else if (*ie_page > RTW89_RSVD_9)
|
||||
+ *ie_page -= 1;
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+static u32 rtw89_phy_get_ie_bitmap_addr(enum rtw89_phy_status_bitmap ie_page)
|
||||
+{
|
||||
+ static const u8 ie_page_shift = 2;
|
||||
+
|
||||
+ return R_PHY_STS_BITMAP_ADDR_START + (ie_page << ie_page_shift);
|
||||
+}
|
||||
+
|
||||
+static u32 rtw89_physts_get_ie_bitmap(struct rtw89_dev *rtwdev,
|
||||
+ enum rtw89_phy_status_bitmap ie_page)
|
||||
+{
|
||||
+ u32 addr;
|
||||
+
|
||||
+ if (!rtw89_physts_ie_page_valid(&ie_page))
|
||||
+ return 0;
|
||||
+
|
||||
+ addr = rtw89_phy_get_ie_bitmap_addr(ie_page);
|
||||
+
|
||||
+ return rtw89_phy_read32(rtwdev, addr);
|
||||
+}
|
||||
+
|
||||
+static void rtw89_physts_set_ie_bitmap(struct rtw89_dev *rtwdev,
|
||||
+ enum rtw89_phy_status_bitmap ie_page,
|
||||
+ u32 val)
|
||||
+{
|
||||
+ const struct rtw89_chip_info *chip = rtwdev->chip;
|
||||
+ u32 addr;
|
||||
+
|
||||
+ if (!rtw89_physts_ie_page_valid(&ie_page))
|
||||
+ return;
|
||||
+
|
||||
+ if (chip->chip_id == RTL8852A)
|
||||
+ val &= B_PHY_STS_BITMAP_MSK_52A;
|
||||
+
|
||||
+ addr = rtw89_phy_get_ie_bitmap_addr(ie_page);
|
||||
+ rtw89_phy_write32(rtwdev, addr, val);
|
||||
+}
|
||||
+
|
||||
+static void rtw89_physts_enable_ie_bitmap(struct rtw89_dev *rtwdev,
|
||||
+ enum rtw89_phy_status_bitmap bitmap,
|
||||
+ enum rtw89_phy_status_ie_type ie,
|
||||
+ bool enable)
|
||||
+{
|
||||
+ u32 val = rtw89_physts_get_ie_bitmap(rtwdev, bitmap);
|
||||
+
|
||||
+ if (enable)
|
||||
+ val |= BIT(ie);
|
||||
+ else
|
||||
+ val &= ~BIT(ie);
|
||||
+
|
||||
+ rtw89_physts_set_ie_bitmap(rtwdev, bitmap, val);
|
||||
+}
|
||||
+
|
||||
+static void rtw89_physts_enable_fail_report(struct rtw89_dev *rtwdev,
|
||||
+ bool enable,
|
||||
+ enum rtw89_phy_idx phy_idx)
|
||||
+{
|
||||
+ if (enable) {
|
||||
+ rtw89_phy_write32_clr(rtwdev, R_PLCP_HISTOGRAM,
|
||||
+ B_STS_DIS_TRIG_BY_FAIL);
|
||||
+ rtw89_phy_write32_clr(rtwdev, R_PLCP_HISTOGRAM,
|
||||
+ B_STS_DIS_TRIG_BY_BRK);
|
||||
+ } else {
|
||||
+ rtw89_phy_write32_set(rtwdev, R_PLCP_HISTOGRAM,
|
||||
+ B_STS_DIS_TRIG_BY_FAIL);
|
||||
+ rtw89_phy_write32_set(rtwdev, R_PLCP_HISTOGRAM,
|
||||
+ B_STS_DIS_TRIG_BY_BRK);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void rtw89_physts_parsing_init(struct rtw89_dev *rtwdev)
|
||||
+{
|
||||
+ const struct rtw89_chip_info *chip = rtwdev->chip;
|
||||
+ u8 i;
|
||||
+
|
||||
+ if (chip->chip_id == RTL8852A && rtwdev->hal.cv == CHIP_CBV)
|
||||
+ rtw89_physts_enable_fail_report(rtwdev, false, RTW89_PHY_0);
|
||||
+
|
||||
+ for (i = 0; i < RTW89_PHYSTS_BITMAP_NUM; i++) {
|
||||
+ if (i >= RTW89_CCK_PKT)
|
||||
+ rtw89_physts_enable_ie_bitmap(rtwdev, i,
|
||||
+ RTW89_PHYSTS_IE09_FTR_0,
|
||||
+ true);
|
||||
+ if ((i >= RTW89_CCK_BRK && i <= RTW89_VHT_MU) ||
|
||||
+ (i >= RTW89_RSVD_9 && i <= RTW89_CCK_PKT))
|
||||
+ continue;
|
||||
+ rtw89_physts_enable_ie_bitmap(rtwdev, i,
|
||||
+ RTW89_PHYSTS_IE24_OFDM_TD_PATH_A,
|
||||
+ true);
|
||||
+ }
|
||||
+ rtw89_physts_enable_ie_bitmap(rtwdev, RTW89_VHT_PKT,
|
||||
+ RTW89_PHYSTS_IE13_DL_MU_DEF, true);
|
||||
+ rtw89_physts_enable_ie_bitmap(rtwdev, RTW89_HE_PKT,
|
||||
+ RTW89_PHYSTS_IE13_DL_MU_DEF, true);
|
||||
+
|
||||
+ /* force IE01 for channel index, only channel field is valid */
|
||||
+ rtw89_physts_enable_ie_bitmap(rtwdev, RTW89_CCK_PKT,
|
||||
+ RTW89_PHYSTS_IE01_CMN_OFDM, true);
|
||||
+}
|
||||
+
|
||||
static void rtw89_phy_dig_read_gain_table(struct rtw89_dev *rtwdev, int type)
|
||||
{
|
||||
const struct rtw89_chip_info *chip = rtwdev->chip;
|
||||
@@ -2856,6 +2966,7 @@ void rtw89_phy_dm_init(struct rtw89_dev *rtwdev)
|
||||
rtw89_chip_bb_sethw(rtwdev);
|
||||
|
||||
rtw89_phy_env_monitor_init(rtwdev);
|
||||
+ rtw89_physts_parsing_init(rtwdev);
|
||||
rtw89_phy_dig_init(rtwdev);
|
||||
rtw89_phy_cfo_init(rtwdev);
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/phy.h b/drivers/net/wireless/realtek/rtw89/phy.h
|
||||
index 370129345e0f..b1f059b725a1 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/phy.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/phy.h
|
||||
@@ -134,6 +134,66 @@ enum rtw89_ccx_unit {
|
||||
RTW89_CCX_32_US = 3
|
||||
};
|
||||
|
||||
+enum rtw89_phy_status_ie_type {
|
||||
+ RTW89_PHYSTS_IE00_CMN_CCK = 0,
|
||||
+ RTW89_PHYSTS_IE01_CMN_OFDM = 1,
|
||||
+ RTW89_PHYSTS_IE02_CMN_EXT_AX = 2,
|
||||
+ RTW89_PHYSTS_IE03_CMN_EXT_SEG_1 = 3,
|
||||
+ RTW89_PHYSTS_IE04_CMN_EXT_PATH_A = 4,
|
||||
+ RTW89_PHYSTS_IE05_CMN_EXT_PATH_B = 5,
|
||||
+ RTW89_PHYSTS_IE06_CMN_EXT_PATH_C = 6,
|
||||
+ RTW89_PHYSTS_IE07_CMN_EXT_PATH_D = 7,
|
||||
+ RTW89_PHYSTS_IE08_FTR_CH = 8,
|
||||
+ RTW89_PHYSTS_IE09_FTR_0 = 9,
|
||||
+ RTW89_PHYSTS_IE10_FTR_PLCP_EXT = 10,
|
||||
+ RTW89_PHYSTS_IE11_FTR_PLCP_HISTOGRAM = 11,
|
||||
+ RTW89_PHYSTS_IE12_MU_EIGEN_INFO = 12,
|
||||
+ RTW89_PHYSTS_IE13_DL_MU_DEF = 13,
|
||||
+ RTW89_PHYSTS_IE14_TB_UL_CQI = 14,
|
||||
+ RTW89_PHYSTS_IE15_TB_UL_DEF = 15,
|
||||
+ RTW89_PHYSTS_IE16_RSVD16 = 16,
|
||||
+ RTW89_PHYSTS_IE17_TB_UL_CTRL = 17,
|
||||
+ RTW89_PHYSTS_IE18_DBG_OFDM_FD_CMN = 18,
|
||||
+ RTW89_PHYSTS_IE19_DBG_OFDM_TD_CMN = 19,
|
||||
+ RTW89_PHYSTS_IE20_DBG_OFDM_FD_USER_SEG_0 = 20,
|
||||
+ RTW89_PHYSTS_IE21_DBG_OFDM_FD_USER_SEG_1 = 21,
|
||||
+ RTW89_PHYSTS_IE22_DBG_OFDM_FD_USER_AGC = 22,
|
||||
+ RTW89_PHYSTS_IE23_RSVD23 = 23,
|
||||
+ RTW89_PHYSTS_IE24_OFDM_TD_PATH_A = 24,
|
||||
+ RTW89_PHYSTS_IE25_OFDM_TD_PATH_B = 25,
|
||||
+ RTW89_PHYSTS_IE26_OFDM_TD_PATH_C = 26,
|
||||
+ RTW89_PHYSTS_IE27_OFDM_TD_PATH_D = 27,
|
||||
+ RTW89_PHYSTS_IE28_DBG_CCK_PATH_A = 28,
|
||||
+ RTW89_PHYSTS_IE29_DBG_CCK_PATH_B = 29,
|
||||
+ RTW89_PHYSTS_IE30_DBG_CCK_PATH_C = 30,
|
||||
+ RTW89_PHYSTS_IE31_DBG_CCK_PATH_D = 31,
|
||||
+
|
||||
+ /* keep last */
|
||||
+ RTW89_PHYSTS_IE_NUM,
|
||||
+ RTW89_PHYSTS_IE_MAX = RTW89_PHYSTS_IE_NUM - 1
|
||||
+};
|
||||
+
|
||||
+enum rtw89_phy_status_bitmap {
|
||||
+ RTW89_TD_SEARCH_FAIL = 0,
|
||||
+ RTW89_BRK_BY_TX_PKT = 1,
|
||||
+ RTW89_CCA_SPOOF = 2,
|
||||
+ RTW89_OFDM_BRK = 3,
|
||||
+ RTW89_CCK_BRK = 4,
|
||||
+ RTW89_DL_MU_SPOOFING = 5,
|
||||
+ RTW89_HE_MU = 6,
|
||||
+ RTW89_VHT_MU = 7,
|
||||
+ RTW89_UL_TB_SPOOFING = 8,
|
||||
+ RTW89_RSVD_9 = 9,
|
||||
+ RTW89_TRIG_BASE_PPDU = 10,
|
||||
+ RTW89_CCK_PKT = 11,
|
||||
+ RTW89_LEGACY_OFDM_PKT = 12,
|
||||
+ RTW89_HT_PKT = 13,
|
||||
+ RTW89_VHT_PKT = 14,
|
||||
+ RTW89_HE_PKT = 15,
|
||||
+
|
||||
+ RTW89_PHYSTS_BITMAP_NUM
|
||||
+};
|
||||
+
|
||||
enum rtw89_dig_gain_type {
|
||||
RTW89_DIG_GAIN_LNA_G = 0,
|
||||
RTW89_DIG_GAIN_TIA_G = 1,
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/reg.h b/drivers/net/wireless/realtek/rtw89/reg.h
|
||||
index 365d8c8ce57b..b6049009f183 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/reg.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/reg.h
|
||||
@@ -1674,6 +1674,29 @@
|
||||
#define B_UPD_CLK_ADC_VAL GENMASK(26, 25)
|
||||
#define R_RSTB_ASYNC 0x0704
|
||||
#define B_RSTB_ASYNC_ALL BIT(1)
|
||||
+#define R_MAC_PIN_SEL 0x0734
|
||||
+#define B_CH_IDX_SEG0 GENMASK(23, 16)
|
||||
+#define R_PLCP_HISTOGRAM 0x0738
|
||||
+#define B_STS_DIS_TRIG_BY_BRK BIT(2)
|
||||
+#define B_STS_DIS_TRIG_BY_FAIL BIT(3)
|
||||
+#define R_PHY_STS_BITMAP_ADDR_START R_PHY_STS_BITMAP_SEARCH_FAIL
|
||||
+#define B_PHY_STS_BITMAP_ADDR_MASK GENMASK(6, 2)
|
||||
+#define R_PHY_STS_BITMAP_SEARCH_FAIL 0x073C
|
||||
+#define B_PHY_STS_BITMAP_MSK_52A 0x337cff3f
|
||||
+#define R_PHY_STS_BITMAP_R2T 0x0740
|
||||
+#define R_PHY_STS_BITMAP_CCA_SPOOF 0x0744
|
||||
+#define R_PHY_STS_BITMAP_OFDM_BRK 0x0748
|
||||
+#define R_PHY_STS_BITMAP_CCK_BRK 0x074C
|
||||
+#define R_PHY_STS_BITMAP_DL_MU_SPOOF 0x0750
|
||||
+#define R_PHY_STS_BITMAP_HE_MU 0x0754
|
||||
+#define R_PHY_STS_BITMAP_VHT_MU 0x0758
|
||||
+#define R_PHY_STS_BITMAP_UL_TB_SPOOF 0x075C
|
||||
+#define R_PHY_STS_BITMAP_TRIGBASE 0x0760
|
||||
+#define R_PHY_STS_BITMAP_CCK 0x0764
|
||||
+#define R_PHY_STS_BITMAP_LEGACY 0x0768
|
||||
+#define R_PHY_STS_BITMAP_HT 0x076C
|
||||
+#define R_PHY_STS_BITMAP_VHT 0x0770
|
||||
+#define R_PHY_STS_BITMAP_HE 0x0774
|
||||
#define R_PMAC_GNT 0x0980
|
||||
#define B_PMAC_GNT_TXEN BIT(0)
|
||||
#define B_PMAC_GNT_RXEN BIT(16)
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
index 9e25e53f6c4a..5ec13ae0abcd 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
@@ -1069,6 +1069,8 @@ static void rtw8852a_set_channel_bb(struct rtw89_dev *rtwdev,
|
||||
rtw8852a_bbrst_for_rfk(rtwdev, phy_idx);
|
||||
}
|
||||
rtw8852a_spur_elimination(rtwdev, param->center_chan);
|
||||
+ rtw89_phy_write32_mask(rtwdev, R_MAC_PIN_SEL, B_CH_IDX_SEG0,
|
||||
+ param->primary_chan);
|
||||
rtw8852a_bb_reset_all(rtwdev, phy_idx);
|
||||
}
|
||||
|
||||
@@ -1927,6 +1929,21 @@ void rtw8852a_btc_wl_s1_standby(struct rtw89_dev *rtwdev, bool state)
|
||||
rtw89_write_rf(rtwdev, RF_PATH_B, RR_LUTWE, RFREG_MASK, 0x0);
|
||||
}
|
||||
|
||||
+static void rtw8852a_fill_freq_with_ppdu(struct rtw89_dev *rtwdev,
|
||||
+ struct rtw89_rx_phy_ppdu *phy_ppdu,
|
||||
+ struct ieee80211_rx_status *status)
|
||||
+{
|
||||
+ u16 chan = phy_ppdu->chan_idx;
|
||||
+ u8 band;
|
||||
+
|
||||
+ if (chan == 0)
|
||||
+ return;
|
||||
+
|
||||
+ band = chan <= 14 ? NL80211_BAND_2GHZ : NL80211_BAND_5GHZ;
|
||||
+ status->freq = ieee80211_channel_to_frequency(chan, band);
|
||||
+ status->band = band;
|
||||
+}
|
||||
+
|
||||
static void rtw8852a_query_ppdu(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_rx_phy_ppdu *phy_ppdu,
|
||||
struct ieee80211_rx_status *status)
|
||||
@@ -1939,6 +1956,8 @@ static void rtw8852a_query_ppdu(struct rtw89_dev *rtwdev,
|
||||
status->chains |= BIT(path);
|
||||
status->chain_signal[path] = rx_power[path];
|
||||
}
|
||||
+ if (phy_ppdu->valid)
|
||||
+ rtw8852a_fill_freq_with_ppdu(rtwdev, phy_ppdu, status);
|
||||
}
|
||||
|
||||
static const struct rtw89_chip_ops rtw8852a_chip_ops = {
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/txrx.h b/drivers/net/wireless/realtek/rtw89/txrx.h
|
||||
index 5570d8ccf136..75b11249f306 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/txrx.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/txrx.h
|
||||
@@ -168,6 +168,8 @@
|
||||
#define RTW89_GET_RXINFO_MACID(rpt, usr) \
|
||||
le32_get_bits(*((const __le32 *)(rpt) + (usr) + 2), GENMASK(15, 8))
|
||||
|
||||
+#define RTW89_GET_PHY_STS_IE_MAP(sts) \
|
||||
+ le32_get_bits(*((const __le32 *)(sts)), GENMASK(4, 0))
|
||||
#define RTW89_GET_PHY_STS_RSSI_A(sts) \
|
||||
le32_get_bits(*((const __le32 *)(sts) + 1), GENMASK(7, 0))
|
||||
#define RTW89_GET_PHY_STS_RSSI_B(sts) \
|
||||
@@ -184,7 +186,9 @@
|
||||
le32_get_bits(*((const __le32 *)ie), GENMASK(4, 0))
|
||||
#define RTW89_GET_PHY_STS_IE_LEN(ie) \
|
||||
le32_get_bits(*((const __le32 *)ie), GENMASK(11, 5))
|
||||
-#define RTW89_GET_PHY_STS_IE0_CFO(ie) \
|
||||
+#define RTW89_GET_PHY_STS_IE01_CH_IDX(ie) \
|
||||
+ le32_get_bits(*((const __le32 *)ie), GENMASK(23, 16))
|
||||
+#define RTW89_GET_PHY_STS_IE01_CFO(ie) \
|
||||
le32_get_bits(*((const __le32 *)(ie) + 1), GENMASK(31, 20))
|
||||
|
||||
enum rtw89_tx_channel {
|
||||
@@ -251,45 +255,6 @@ enum rtw89_tx_qsel {
|
||||
/* reserved */
|
||||
};
|
||||
|
||||
-enum rtw89_phy_status_ie_type {
|
||||
- RTW89_PHYSTS_IE00_CMN_CCK = 0,
|
||||
- RTW89_PHYSTS_IE01_CMN_OFDM = 1,
|
||||
- RTW89_PHYSTS_IE02_CMN_EXT_AX = 2,
|
||||
- RTW89_PHYSTS_IE03_CMN_EXT_SEG_1 = 3,
|
||||
- RTW89_PHYSTS_IE04_CMN_EXT_PATH_A = 4,
|
||||
- RTW89_PHYSTS_IE05_CMN_EXT_PATH_B = 5,
|
||||
- RTW89_PHYSTS_IE06_CMN_EXT_PATH_C = 6,
|
||||
- RTW89_PHYSTS_IE07_CMN_EXT_PATH_D = 7,
|
||||
- RTW89_PHYSTS_IE08_FTR_CH = 8,
|
||||
- RTW89_PHYSTS_IE09_FTR_PLCP_0 = 9,
|
||||
- RTW89_PHYSTS_IE10_FTR_PLCP_EXT = 10,
|
||||
- RTW89_PHYSTS_IE11_FTR_PLCP_HISTOGRAM = 11,
|
||||
- RTW89_PHYSTS_IE12_MU_EIGEN_INFO = 12,
|
||||
- RTW89_PHYSTS_IE13_DL_MU_DEF = 13,
|
||||
- RTW89_PHYSTS_IE14_TB_UL_CQI = 14,
|
||||
- RTW89_PHYSTS_IE15_TB_UL_DEF = 15,
|
||||
- RTW89_PHYSTS_IE16_RSVD16 = 16,
|
||||
- RTW89_PHYSTS_IE17_TB_UL_CTRL = 17,
|
||||
- RTW89_PHYSTS_IE18_DBG_OFDM_FD_CMN = 18,
|
||||
- RTW89_PHYSTS_IE19_DBG_OFDM_TD_CMN = 19,
|
||||
- RTW89_PHYSTS_IE20_DBG_OFDM_FD_USER_SEG_0 = 20,
|
||||
- RTW89_PHYSTS_IE21_DBG_OFDM_FD_USER_SEG_1 = 21,
|
||||
- RTW89_PHYSTS_IE22_DBG_OFDM_FD_USER_AGC = 22,
|
||||
- RTW89_PHYSTS_IE23_RSVD23 = 23,
|
||||
- RTW89_PHYSTS_IE24_DBG_OFDM_TD_PATH_A = 24,
|
||||
- RTW89_PHYSTS_IE25_DBG_OFDM_TD_PATH_B = 25,
|
||||
- RTW89_PHYSTS_IE26_DBG_OFDM_TD_PATH_C = 26,
|
||||
- RTW89_PHYSTS_IE27_DBG_OFDM_TD_PATH_D = 27,
|
||||
- RTW89_PHYSTS_IE28_DBG_CCK_PATH_A = 28,
|
||||
- RTW89_PHYSTS_IE29_DBG_CCK_PATH_B = 29,
|
||||
- RTW89_PHYSTS_IE30_DBG_CCK_PATH_C = 30,
|
||||
- RTW89_PHYSTS_IE31_DBG_CCK_PATH_D = 31,
|
||||
-
|
||||
- /* keep last */
|
||||
- RTW89_PHYSTS_IE_NUM,
|
||||
- RTW89_PHYSTS_IE_MAX = RTW89_PHYSTS_IE_NUM - 1
|
||||
-};
|
||||
-
|
||||
static inline u8 rtw89_core_get_qsel(struct rtw89_dev *rtwdev, u8 tid)
|
||||
{
|
||||
switch (tid) {
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,359 @@
|
||||
From 54a696e53e3265ff849635957429da85977bf707 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:03 +0100
|
||||
Subject: [PATCH 23/36] rtw89: fix sending wrong rtwsta->mac_id to firmware to
|
||||
fill address CAM
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 40822e079011ef8704d429c9d8271000159abffe
|
||||
Author: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Date: Wed Dec 1 16:06:06 2021 +0800
|
||||
|
||||
rtw89: fix sending wrong rtwsta->mac_id to firmware to fill address CAM
|
||||
|
||||
With wrong rtwsta->mac_id, it can't send out ack properly when we receive
|
||||
assoc response occasionally. Then, it failed to connect an AP.
|
||||
|
||||
The cause is that we store 'sta' and use it somewhere. To correct this,
|
||||
remove the variable and use mac_id in drv_priv of 'sta' or 'vif' passed
|
||||
by mac80211.
|
||||
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20211201080607.11211-1-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/cam.c | 43 ++++++++++++---------------
|
||||
drivers/net/wireless/realtek/rtw89/cam.h | 1 +
|
||||
drivers/net/wireless/realtek/rtw89/core.c | 12 ++++----
|
||||
drivers/net/wireless/realtek/rtw89/core.h | 19 ++++++------
|
||||
drivers/net/wireless/realtek/rtw89/fw.c | 4 +--
|
||||
drivers/net/wireless/realtek/rtw89/fw.h | 2 +-
|
||||
drivers/net/wireless/realtek/rtw89/mac.c | 4 +--
|
||||
drivers/net/wireless/realtek/rtw89/mac80211.c | 6 ++--
|
||||
8 files changed, 43 insertions(+), 48 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/cam.c b/drivers/net/wireless/realtek/rtw89/cam.c
|
||||
index ce5056ad1e5c..bd34e4bbe107 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/cam.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/cam.c
|
||||
@@ -219,6 +219,7 @@ static int rtw89_cam_attach_sec_cam(struct rtw89_dev *rtwdev,
|
||||
struct ieee80211_key_conf *key,
|
||||
struct rtw89_sec_cam_entry *sec_cam)
|
||||
{
|
||||
+ struct rtw89_sta *rtwsta = sta_to_rtwsta_safe(sta);
|
||||
struct rtw89_vif *rtwvif;
|
||||
struct rtw89_addr_cam_entry *addr_cam;
|
||||
u8 key_idx = 0;
|
||||
@@ -243,7 +244,7 @@ static int rtw89_cam_attach_sec_cam(struct rtw89_dev *rtwdev,
|
||||
addr_cam->sec_ent[key_idx] = sec_cam->sec_cam_idx;
|
||||
addr_cam->sec_entries[key_idx] = sec_cam;
|
||||
set_bit(key_idx, addr_cam->sec_cam_map);
|
||||
- ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
+ ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, rtwsta, NULL);
|
||||
if (ret) {
|
||||
rtw89_err(rtwdev, "failed to update addr cam sec entry: %d\n",
|
||||
ret);
|
||||
@@ -371,6 +372,7 @@ int rtw89_cam_sec_key_del(struct rtw89_dev *rtwdev,
|
||||
struct ieee80211_key_conf *key,
|
||||
bool inform_fw)
|
||||
{
|
||||
+ struct rtw89_sta *rtwsta = sta_to_rtwsta_safe(sta);
|
||||
struct rtw89_cam_info *cam_info = &rtwdev->cam_info;
|
||||
struct rtw89_vif *rtwvif;
|
||||
struct rtw89_addr_cam_entry *addr_cam;
|
||||
@@ -394,7 +396,7 @@ int rtw89_cam_sec_key_del(struct rtw89_dev *rtwdev,
|
||||
clear_bit(key_idx, addr_cam->sec_cam_map);
|
||||
addr_cam->sec_entries[key_idx] = NULL;
|
||||
if (inform_fw) {
|
||||
- ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
+ ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, rtwsta, NULL);
|
||||
if (ret)
|
||||
rtw89_err(rtwdev, "failed to update cam del key: %d\n", ret);
|
||||
}
|
||||
@@ -536,12 +538,8 @@ static int rtw89_cam_init_bssid_cam(struct rtw89_dev *rtwdev,
|
||||
|
||||
void rtw89_cam_bssid_changed(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
|
||||
{
|
||||
- struct ieee80211_vif *vif = rtwvif_to_vif(rtwvif);
|
||||
- struct rtw89_addr_cam_entry *addr_cam = &rtwvif->addr_cam;
|
||||
struct rtw89_bssid_cam_entry *bssid_cam = &rtwvif->bssid_cam;
|
||||
|
||||
- if (vif->type == NL80211_IFTYPE_STATION)
|
||||
- ether_addr_copy(addr_cam->tma, rtwvif->bssid);
|
||||
ether_addr_copy(bssid_cam->bssid, rtwvif->bssid);
|
||||
}
|
||||
|
||||
@@ -606,17 +604,18 @@ static u8 rtw89_cam_addr_hash(u8 start, const u8 *addr)
|
||||
|
||||
void rtw89_cam_fill_addr_cam_info(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_vif *rtwvif,
|
||||
+ struct rtw89_sta *rtwsta,
|
||||
const u8 *scan_mac_addr,
|
||||
u8 *cmd)
|
||||
{
|
||||
struct ieee80211_vif *vif = rtwvif_to_vif(rtwvif);
|
||||
- struct ieee80211_sta *sta;
|
||||
- struct rtw89_sta *rtwsta;
|
||||
struct rtw89_addr_cam_entry *addr_cam = &rtwvif->addr_cam;
|
||||
+ struct ieee80211_sta *sta = rtwsta_to_sta_safe(rtwsta);
|
||||
const u8 *sma = scan_mac_addr ? scan_mac_addr : rtwvif->mac_addr;
|
||||
u8 sma_hash, tma_hash, addr_msk_start;
|
||||
u8 sma_start = 0;
|
||||
u8 tma_start = 0;
|
||||
+ u8 *tma = sta ? sta->addr : rtwvif->bssid;
|
||||
|
||||
if (addr_cam->addr_mask != 0) {
|
||||
addr_msk_start = __ffs(addr_cam->addr_mask);
|
||||
@@ -626,7 +625,7 @@ void rtw89_cam_fill_addr_cam_info(struct rtw89_dev *rtwdev,
|
||||
tma_start = addr_msk_start;
|
||||
}
|
||||
sma_hash = rtw89_cam_addr_hash(sma_start, sma);
|
||||
- tma_hash = rtw89_cam_addr_hash(tma_start, addr_cam->tma);
|
||||
+ tma_hash = rtw89_cam_addr_hash(tma_start, tma);
|
||||
|
||||
FWCMD_SET_ADDR_IDX(cmd, addr_cam->addr_cam_idx);
|
||||
FWCMD_SET_ADDR_OFFSET(cmd, addr_cam->offset);
|
||||
@@ -651,12 +650,12 @@ void rtw89_cam_fill_addr_cam_info(struct rtw89_dev *rtwdev,
|
||||
FWCMD_SET_ADDR_SMA4(cmd, sma[4]);
|
||||
FWCMD_SET_ADDR_SMA5(cmd, sma[5]);
|
||||
|
||||
- FWCMD_SET_ADDR_TMA0(cmd, addr_cam->tma[0]);
|
||||
- FWCMD_SET_ADDR_TMA1(cmd, addr_cam->tma[1]);
|
||||
- FWCMD_SET_ADDR_TMA2(cmd, addr_cam->tma[2]);
|
||||
- FWCMD_SET_ADDR_TMA3(cmd, addr_cam->tma[3]);
|
||||
- FWCMD_SET_ADDR_TMA4(cmd, addr_cam->tma[4]);
|
||||
- FWCMD_SET_ADDR_TMA5(cmd, addr_cam->tma[5]);
|
||||
+ FWCMD_SET_ADDR_TMA0(cmd, tma[0]);
|
||||
+ FWCMD_SET_ADDR_TMA1(cmd, tma[1]);
|
||||
+ FWCMD_SET_ADDR_TMA2(cmd, tma[2]);
|
||||
+ FWCMD_SET_ADDR_TMA3(cmd, tma[3]);
|
||||
+ FWCMD_SET_ADDR_TMA4(cmd, tma[4]);
|
||||
+ FWCMD_SET_ADDR_TMA5(cmd, tma[5]);
|
||||
|
||||
FWCMD_SET_ADDR_PORT_INT(cmd, rtwvif->port);
|
||||
FWCMD_SET_ADDR_TSF_SYNC(cmd, rtwvif->port);
|
||||
@@ -664,15 +663,11 @@ void rtw89_cam_fill_addr_cam_info(struct rtw89_dev *rtwdev,
|
||||
FWCMD_SET_ADDR_LSIG_TXOP(cmd, rtwvif->lsig_txop);
|
||||
FWCMD_SET_ADDR_TGT_IND(cmd, rtwvif->tgt_ind);
|
||||
FWCMD_SET_ADDR_FRM_TGT_IND(cmd, rtwvif->frm_tgt_ind);
|
||||
-
|
||||
- if (vif->type == NL80211_IFTYPE_STATION) {
|
||||
- sta = rtwvif->mgd.ap;
|
||||
- if (sta) {
|
||||
- rtwsta = (struct rtw89_sta *)sta->drv_priv;
|
||||
- FWCMD_SET_ADDR_MACID(cmd, rtwsta->mac_id);
|
||||
- FWCMD_SET_ADDR_AID12(cmd, vif->bss_conf.aid & 0xfff);
|
||||
- }
|
||||
- }
|
||||
+ FWCMD_SET_ADDR_MACID(cmd, rtwsta ? rtwsta->mac_id : rtwvif->mac_id);
|
||||
+ if (rtwvif->net_type == RTW89_NET_TYPE_INFRA)
|
||||
+ FWCMD_SET_ADDR_AID12(cmd, vif->bss_conf.aid & 0xfff);
|
||||
+ else if (rtwvif->net_type == RTW89_NET_TYPE_AP_MODE)
|
||||
+ FWCMD_SET_ADDR_AID12(cmd, sta ? sta->aid & 0xfff : 0);
|
||||
FWCMD_SET_ADDR_WOL_PATTERN(cmd, rtwvif->wowlan_pattern);
|
||||
FWCMD_SET_ADDR_WOL_UC(cmd, rtwvif->wowlan_uc);
|
||||
FWCMD_SET_ADDR_WOL_MAGIC(cmd, rtwvif->wowlan_magic);
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/cam.h b/drivers/net/wireless/realtek/rtw89/cam.h
|
||||
index c0f9ef12f530..33a3ad582b81 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/cam.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/cam.h
|
||||
@@ -348,6 +348,7 @@ int rtw89_cam_init(struct rtw89_dev *rtwdev, struct rtw89_vif *vif);
|
||||
void rtw89_cam_deinit(struct rtw89_dev *rtwdev, struct rtw89_vif *vif);
|
||||
void rtw89_cam_fill_addr_cam_info(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_vif *vif,
|
||||
+ struct rtw89_sta *rtwsta,
|
||||
const u8 *scan_mac_addr, u8 *cmd);
|
||||
int rtw89_cam_fill_bssid_cam_info(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_vif *vif, u8 *cmd);
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c
|
||||
index 2c079388a664..8212496ae9ef 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/core.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/core.c
|
||||
@@ -1854,7 +1854,8 @@ int rtw89_core_sta_add(struct rtw89_dev *rtwdev,
|
||||
ewma_rssi_init(&rtwsta->avg_rssi);
|
||||
|
||||
if (vif->type == NL80211_IFTYPE_STATION) {
|
||||
- rtwvif->mgd.ap = sta;
|
||||
+ /* for station mode, assign the mac_id from itself */
|
||||
+ rtwsta->mac_id = rtwvif->mac_id;
|
||||
rtw89_btc_ntfy_role_info(rtwdev, rtwvif, rtwsta,
|
||||
BTC_ROLE_MSTS_STA_CONN_START);
|
||||
rtw89_chip_rfk_channel(rtwdev);
|
||||
@@ -1880,6 +1881,7 @@ int rtw89_core_sta_disconnect(struct rtw89_dev *rtwdev,
|
||||
struct ieee80211_sta *sta)
|
||||
{
|
||||
struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
|
||||
+ struct rtw89_sta *rtwsta = (struct rtw89_sta *)sta->drv_priv;
|
||||
int ret;
|
||||
|
||||
rtw89_mac_bf_monitor_calc(rtwdev, sta, true);
|
||||
@@ -1901,7 +1903,7 @@ int rtw89_core_sta_disconnect(struct rtw89_dev *rtwdev,
|
||||
}
|
||||
|
||||
/* update cam aid mac_id net_type */
|
||||
- rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
+ rtw89_fw_h2c_cam(rtwdev, rtwvif, rtwsta, NULL);
|
||||
if (ret) {
|
||||
rtw89_warn(rtwdev, "failed to send h2c cam\n");
|
||||
return ret;
|
||||
@@ -1926,10 +1928,6 @@ int rtw89_core_sta_assoc(struct rtw89_dev *rtwdev,
|
||||
return ret;
|
||||
}
|
||||
|
||||
- /* for station mode, assign the mac_id from itself */
|
||||
- if (vif->type == NL80211_IFTYPE_STATION)
|
||||
- rtwsta->mac_id = rtwvif->mac_id;
|
||||
-
|
||||
ret = rtw89_fw_h2c_join_info(rtwdev, rtwvif, 0);
|
||||
if (ret) {
|
||||
rtw89_warn(rtwdev, "failed to send h2c join info\n");
|
||||
@@ -1937,7 +1935,7 @@ int rtw89_core_sta_assoc(struct rtw89_dev *rtwdev,
|
||||
}
|
||||
|
||||
/* update cam aid mac_id net_type */
|
||||
- rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
+ rtw89_fw_h2c_cam(rtwdev, rtwvif, rtwsta, NULL);
|
||||
if (ret) {
|
||||
rtw89_warn(rtwdev, "failed to send h2c cam\n");
|
||||
return ret;
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h
|
||||
index ef3f5de26f13..7066335adcee 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/core.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/core.h
|
||||
@@ -1869,7 +1869,6 @@ struct rtw89_addr_cam_entry {
|
||||
u8 wapi : 1;
|
||||
u8 mask_sel : 2;
|
||||
u8 bssid_cam_idx: 6;
|
||||
- u8 tma[ETH_ALEN];
|
||||
u8 sma[ETH_ALEN];
|
||||
|
||||
u8 sec_ent_mode;
|
||||
@@ -1938,14 +1937,6 @@ struct rtw89_vif {
|
||||
bool wowlan_magic;
|
||||
bool is_hesta;
|
||||
bool last_a_ctrl;
|
||||
- union {
|
||||
- struct {
|
||||
- struct ieee80211_sta *ap;
|
||||
- } mgd;
|
||||
- struct {
|
||||
- struct list_head sta_list;
|
||||
- } ap;
|
||||
- };
|
||||
struct rtw89_addr_cam_entry addr_cam;
|
||||
struct rtw89_bssid_cam_entry bssid_cam;
|
||||
struct ieee80211_tx_queue_params tx_params[IEEE80211_NUM_ACS];
|
||||
@@ -3132,6 +3123,16 @@ static inline struct ieee80211_sta *rtwsta_to_sta(struct rtw89_sta *rtwsta)
|
||||
return container_of(p, struct ieee80211_sta, drv_priv);
|
||||
}
|
||||
|
||||
+static inline struct ieee80211_sta *rtwsta_to_sta_safe(struct rtw89_sta *rtwsta)
|
||||
+{
|
||||
+ return rtwsta ? rtwsta_to_sta(rtwsta) : NULL;
|
||||
+}
|
||||
+
|
||||
+static inline struct rtw89_sta *sta_to_rtwsta_safe(struct ieee80211_sta *sta)
|
||||
+{
|
||||
+ return sta ? (struct rtw89_sta *)sta->drv_priv : NULL;
|
||||
+}
|
||||
+
|
||||
static inline
|
||||
void rtw89_chip_set_channel_prepare(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_channel_help_params *p)
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/fw.c b/drivers/net/wireless/realtek/rtw89/fw.c
|
||||
index c9aa86e5d4e4..d4b59fbe7365 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/fw.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/fw.c
|
||||
@@ -524,7 +524,7 @@ void rtw89_unload_firmware(struct rtw89_dev *rtwdev)
|
||||
|
||||
#define H2C_CAM_LEN 60
|
||||
int rtw89_fw_h2c_cam(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif,
|
||||
- const u8 *scan_mac_addr)
|
||||
+ struct rtw89_sta *rtwsta, const u8 *scan_mac_addr)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
|
||||
@@ -534,7 +534,7 @@ int rtw89_fw_h2c_cam(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif,
|
||||
return -ENOMEM;
|
||||
}
|
||||
skb_put(skb, H2C_CAM_LEN);
|
||||
- rtw89_cam_fill_addr_cam_info(rtwdev, rtwvif, scan_mac_addr, skb->data);
|
||||
+ rtw89_cam_fill_addr_cam_info(rtwdev, rtwvif, rtwsta, scan_mac_addr, skb->data);
|
||||
rtw89_cam_fill_bssid_cam_info(rtwdev, rtwvif, skb->data);
|
||||
|
||||
rtw89_h2c_pkt_set_hdr(rtwdev, skb, FWCMD_TYPE_H2C,
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/fw.h b/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
index 865170a89c4a..2d36dc27222f 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/fw.h
|
||||
@@ -1757,7 +1757,7 @@ int rtw89_fw_h2c_assoc_cmac_tbl(struct rtw89_dev *rtwdev,
|
||||
int rtw89_fw_h2c_txtime_cmac_tbl(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_sta *rtwsta);
|
||||
int rtw89_fw_h2c_cam(struct rtw89_dev *rtwdev, struct rtw89_vif *vif,
|
||||
- const u8 *scan_mac_addr);
|
||||
+ struct rtw89_sta *rtwsta, const u8 *scan_mac_addr);
|
||||
void rtw89_fw_c2h_irqsafe(struct rtw89_dev *rtwdev, struct sk_buff *c2h);
|
||||
void rtw89_fw_c2h_work(struct work_struct *work);
|
||||
int rtw89_fw_h2c_vif_maintain(struct rtw89_dev *rtwdev,
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
index 04c5f9966521..999459489e92 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
@@ -2990,7 +2990,7 @@ int rtw89_mac_vif_init(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
- ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
+ ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -3011,7 +3011,7 @@ int rtw89_mac_vif_deinit(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
|
||||
|
||||
rtw89_cam_deinit(rtwdev, rtwvif);
|
||||
|
||||
- ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
+ ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL, NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac80211.c b/drivers/net/wireless/realtek/rtw89/mac80211.c
|
||||
index 16381adf006e..757685de6b07 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac80211.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac80211.c
|
||||
@@ -336,7 +336,7 @@ static void rtw89_ops_bss_info_changed(struct ieee80211_hw *hw,
|
||||
if (changed & BSS_CHANGED_BSSID) {
|
||||
ether_addr_copy(rtwvif->bssid, conf->bssid);
|
||||
rtw89_cam_bssid_changed(rtwdev, rtwvif);
|
||||
- rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
+ rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL, NULL);
|
||||
}
|
||||
|
||||
if (changed & BSS_CHANGED_ERP_SLOT)
|
||||
@@ -624,7 +624,7 @@ static void rtw89_ops_sw_scan_start(struct ieee80211_hw *hw,
|
||||
rtw89_btc_ntfy_scan_start(rtwdev, RTW89_PHY_0, hal->current_band_type);
|
||||
rtw89_chip_rfk_scan(rtwdev, true);
|
||||
rtw89_hci_recalc_int_mit(rtwdev);
|
||||
- rtw89_fw_h2c_cam(rtwdev, rtwvif, mac_addr);
|
||||
+ rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL, mac_addr);
|
||||
mutex_unlock(&rtwdev->mutex);
|
||||
}
|
||||
|
||||
@@ -635,7 +635,7 @@ static void rtw89_ops_sw_scan_complete(struct ieee80211_hw *hw,
|
||||
struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
|
||||
|
||||
mutex_lock(&rtwdev->mutex);
|
||||
- rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL);
|
||||
+ rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL, NULL);
|
||||
rtw89_chip_rfk_scan(rtwdev, false);
|
||||
rtw89_btc_ntfy_scan_finish(rtwdev, RTW89_PHY_0);
|
||||
rtwdev->scanning = false;
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,146 @@
|
||||
From 52ad252f9ecc9b83bd17b74280e10ae8fae15e44 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:03 +0100
|
||||
Subject: [PATCH 24/36] rtw89: remove cch_by_bw which is not used
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit c2258b29985eac9216a9e55f9d5bead9767f96da
|
||||
Author: Zong-Zhe Yang <kevin_yang@realtek.com>
|
||||
Date: Wed Dec 1 16:09:01 2021 +0800
|
||||
|
||||
rtw89: remove cch_by_bw which is not used
|
||||
|
||||
Originally, cch_by_bw recorded center channels of each available
|
||||
bandwidths under current bandwidth. And the plan was to iterate
|
||||
cch_by_bw as parameters to query other configurations. However,
|
||||
we have not used it for the time being. Keeping it will disturb
|
||||
the follow-up things, such as bandwidth 160 MHz, so we remove it
|
||||
for now. If it's really needed at some point, we will redesign it.
|
||||
|
||||
Signed-off-by: Zong-Zhe Yang <kevin_yang@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/20211201080901.12125-1-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/core.c | 23 -----------------------
|
||||
drivers/net/wireless/realtek/rtw89/core.h | 6 ------
|
||||
2 files changed, 29 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c
|
||||
index 8212496ae9ef..00ae86807dc2 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/core.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/core.c
|
||||
@@ -143,20 +143,15 @@ static void rtw89_get_channel_params(struct cfg80211_chan_def *chandef,
|
||||
{
|
||||
struct ieee80211_channel *channel = chandef->chan;
|
||||
enum nl80211_chan_width width = chandef->width;
|
||||
- u8 *cch_by_bw = chan_param->cch_by_bw;
|
||||
u32 primary_freq, center_freq;
|
||||
u8 center_chan;
|
||||
u8 bandwidth = RTW89_CHANNEL_WIDTH_20;
|
||||
u8 primary_chan_idx = 0;
|
||||
- u8 i;
|
||||
|
||||
center_chan = channel->hw_value;
|
||||
primary_freq = channel->center_freq;
|
||||
center_freq = chandef->center_freq1;
|
||||
|
||||
- /* assign the center channel used while 20M bw is selected */
|
||||
- cch_by_bw[RTW89_CHANNEL_WIDTH_20] = channel->hw_value;
|
||||
-
|
||||
switch (width) {
|
||||
case NL80211_CHAN_WIDTH_20_NOHT:
|
||||
case NL80211_CHAN_WIDTH_20:
|
||||
@@ -183,10 +178,6 @@ static void rtw89_get_channel_params(struct cfg80211_chan_def *chandef,
|
||||
primary_chan_idx = RTW89_SC_20_UPMOST;
|
||||
center_chan -= 6;
|
||||
}
|
||||
- /* assign the center channel used
|
||||
- * while 40M bw is selected
|
||||
- */
|
||||
- cch_by_bw[RTW89_CHANNEL_WIDTH_40] = center_chan + 4;
|
||||
} else {
|
||||
if (center_freq - primary_freq == 10) {
|
||||
primary_chan_idx = RTW89_SC_20_LOWER;
|
||||
@@ -195,10 +186,6 @@ static void rtw89_get_channel_params(struct cfg80211_chan_def *chandef,
|
||||
primary_chan_idx = RTW89_SC_20_LOWEST;
|
||||
center_chan += 6;
|
||||
}
|
||||
- /* assign the center channel used
|
||||
- * while 40M bw is selected
|
||||
- */
|
||||
- cch_by_bw[RTW89_CHANNEL_WIDTH_40] = center_chan - 4;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -210,12 +197,6 @@ static void rtw89_get_channel_params(struct cfg80211_chan_def *chandef,
|
||||
chan_param->primary_chan = channel->hw_value;
|
||||
chan_param->bandwidth = bandwidth;
|
||||
chan_param->pri_ch_idx = primary_chan_idx;
|
||||
-
|
||||
- /* assign the center channel used while current bw is selected */
|
||||
- cch_by_bw[bandwidth] = center_chan;
|
||||
-
|
||||
- for (i = bandwidth + 1; i <= RTW89_MAX_CHANNEL_WIDTH; i++)
|
||||
- cch_by_bw[i] = 0;
|
||||
}
|
||||
|
||||
void rtw89_set_channel(struct rtw89_dev *rtwdev)
|
||||
@@ -228,7 +209,6 @@ void rtw89_set_channel(struct rtw89_dev *rtwdev)
|
||||
u8 center_chan, bandwidth;
|
||||
u8 band_type;
|
||||
bool band_changed;
|
||||
- u8 i;
|
||||
|
||||
rtw89_get_channel_params(&hw->conf.chandef, &ch_param);
|
||||
if (WARN(ch_param.center_chan == 0, "Invalid channel\n"))
|
||||
@@ -261,9 +241,6 @@ void rtw89_set_channel(struct rtw89_dev *rtwdev)
|
||||
break;
|
||||
}
|
||||
|
||||
- for (i = RTW89_CHANNEL_WIDTH_20; i <= RTW89_MAX_CHANNEL_WIDTH; i++)
|
||||
- hal->cch_by_bw[i] = ch_param.cch_by_bw[i];
|
||||
-
|
||||
rtw89_chip_set_channel_prepare(rtwdev, &bak);
|
||||
|
||||
chip->ops->set_channel(rtwdev, &ch_param);
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h
|
||||
index 7066335adcee..c03e3a13bd56 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/core.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/core.h
|
||||
@@ -547,7 +547,6 @@ enum rtw89_ps_mode {
|
||||
RTW89_PS_MODE_PWR_GATED = 3,
|
||||
};
|
||||
|
||||
-#define RTW89_MAX_CHANNEL_WIDTH RTW89_CHANNEL_WIDTH_80
|
||||
#define RTW89_2G_BW_NUM (RTW89_CHANNEL_WIDTH_40 + 1)
|
||||
#define RTW89_5G_BW_NUM (RTW89_CHANNEL_WIDTH_80 + 1)
|
||||
#define RTW89_PPE_BW_NUM (RTW89_CHANNEL_WIDTH_80 + 1)
|
||||
@@ -574,7 +573,6 @@ struct rtw89_channel_params {
|
||||
u8 primary_chan;
|
||||
u8 bandwidth;
|
||||
u8 pri_ch_idx;
|
||||
- u8 cch_by_bw[RTW89_MAX_CHANNEL_WIDTH + 1];
|
||||
};
|
||||
|
||||
struct rtw89_channel_help_params {
|
||||
@@ -2354,10 +2352,6 @@ struct rtw89_hal {
|
||||
enum rtw89_subband current_subband;
|
||||
u8 current_band_width;
|
||||
u8 current_band_type;
|
||||
- /* center channel for different available bandwidth,
|
||||
- * val of (bw > current_band_width) is invalid
|
||||
- */
|
||||
- u8 cch_by_bw[RTW89_MAX_CHANNEL_WIDTH + 1];
|
||||
u32 sw_amsdu_max_size;
|
||||
u32 antenna_tx;
|
||||
u32 antenna_rx;
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,49 @@
|
||||
From b80a31f2d8debd7681d141b03ce167701549be4f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:03 +0100
|
||||
Subject: [PATCH 25/36] rtw89: don't kick off TX DMA if failed to write skb
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit a58fdb7c843a37d6598204c6513961feefdadc6a
|
||||
Author: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Date: Wed Dec 1 17:38:16 2021 +0800
|
||||
|
||||
rtw89: don't kick off TX DMA if failed to write skb
|
||||
|
||||
This is found by Smatch static checker warning:
|
||||
drivers/net/wireless/realtek/rtw89/mac80211.c:31 rtw89_ops_tx()
|
||||
error: uninitialized symbol 'qsel'.
|
||||
|
||||
The warning is because 'qsel' isn't filled by rtw89_core_tx_write() due to
|
||||
failed to write. The way to fix it is to avoid kicking off TX DMA, so add
|
||||
'return' to the failure case.
|
||||
|
||||
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20211201093816.13806-1-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/mac80211.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac80211.c b/drivers/net/wireless/realtek/rtw89/mac80211.c
|
||||
index 757685de6b07..a322259f4cc4 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac80211.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac80211.c
|
||||
@@ -27,6 +27,7 @@ static void rtw89_ops_tx(struct ieee80211_hw *hw,
|
||||
if (ret) {
|
||||
rtw89_err(rtwdev, "failed to transmit skb: %d\n", ret);
|
||||
ieee80211_free_txskb(hw, skb);
|
||||
+ return;
|
||||
}
|
||||
rtw89_core_tx_kick_off(rtwdev, qsel);
|
||||
}
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,45 @@
|
||||
From a0606ee9846a9c9937a46717b18440cf6bad87f8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:04 +0100
|
||||
Subject: [PATCH 26/36] rtw89: coex: correct C2H header length
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit b3131a41ac6fcda0a636b3c7d1e05914107d8840
|
||||
Author: Ching-Te Ku <ku920601@realtek.com>
|
||||
Date: Thu Dec 9 16:32:23 2021 +0800
|
||||
|
||||
rtw89: coex: correct C2H header length
|
||||
|
||||
To resolve C2H handle length mismatch, or it will parse the c2h content
|
||||
out of array.
|
||||
|
||||
Signed-off-by: Ching-Te Ku <ku920601@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/20211209083229.10815-2-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/coex.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/coex.c b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
index abe4b6549ab2..f220229a7a48 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
@@ -4494,6 +4494,8 @@ void rtw89_btc_c2h_handle(struct rtw89_dev *rtwdev, struct sk_buff *skb,
|
||||
struct rtw89_btc_btf_fwinfo *pfwinfo = &btc->fwinfo;
|
||||
u8 *buf = &skb->data[RTW89_C2H_HEADER_LEN];
|
||||
|
||||
+ len -= RTW89_C2H_HEADER_LEN;
|
||||
+
|
||||
rtw89_debug(rtwdev, RTW89_DBG_BTC,
|
||||
"[BTC], %s(): C2H BT len:%d class:%d fun:%d\n",
|
||||
__func__, len, class, func);
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,71 @@
|
||||
From da03f6e3ed4f6dc74b3f0be2c7f959cea5af6c55 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:04 +0100
|
||||
Subject: [PATCH 27/36] rtw89: coex: Not to send H2C when WL not ready and
|
||||
count H2C
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit f8028a9a92f2b8653658f2ad9cc1fb849873ba5a
|
||||
Author: Ching-Te Ku <ku920601@realtek.com>
|
||||
Date: Thu Dec 9 16:32:24 2021 +0800
|
||||
|
||||
rtw89: coex: Not to send H2C when WL not ready and count H2C
|
||||
|
||||
Prevent to send H2C request to FW when BTC is not initialized or
|
||||
WL is under power saving. Add counter to count the H2C success or fail.
|
||||
|
||||
Signed-off-by: Ching-Te Ku <ku920601@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/20211209083229.10815-3-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/coex.c | 27 +++++++++++++++++++++++++--
|
||||
1 file changed, 25 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/coex.c b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
index f220229a7a48..c8f912e7344d 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
@@ -540,8 +540,31 @@ static void _update_bt_scbd(struct rtw89_dev *rtwdev, bool only_update);
|
||||
static void _send_fw_cmd(struct rtw89_dev *rtwdev, u8 h2c_class, u8 h2c_func,
|
||||
void *param, u16 len)
|
||||
{
|
||||
- rtw89_fw_h2c_raw_with_hdr(rtwdev, h2c_class, h2c_func, param, len,
|
||||
- false, true);
|
||||
+ struct rtw89_btc *btc = &rtwdev->btc;
|
||||
+ struct rtw89_btc_btf_fwinfo *pfwinfo = &btc->fwinfo;
|
||||
+ struct rtw89_btc_cx *cx = &btc->cx;
|
||||
+ struct rtw89_btc_wl_info *wl = &cx->wl;
|
||||
+ int ret;
|
||||
+
|
||||
+ if (!wl->status.map.init_ok) {
|
||||
+ rtw89_debug(rtwdev, RTW89_DBG_BTC,
|
||||
+ "[BTC], %s(): return by btc not init!!\n", __func__);
|
||||
+ pfwinfo->cnt_h2c_fail++;
|
||||
+ return;
|
||||
+ } else if ((wl->status.map.rf_off_pre == 1 && wl->status.map.rf_off == 1) ||
|
||||
+ (wl->status.map.lps_pre == 1 && wl->status.map.lps == 1)) {
|
||||
+ rtw89_debug(rtwdev, RTW89_DBG_BTC,
|
||||
+ "[BTC], %s(): return by wl off!!\n", __func__);
|
||||
+ pfwinfo->cnt_h2c_fail++;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ pfwinfo->cnt_h2c++;
|
||||
+
|
||||
+ ret = rtw89_fw_h2c_raw_with_hdr(rtwdev, h2c_class, h2c_func, param, len,
|
||||
+ false, true);
|
||||
+ if (ret != 0)
|
||||
+ pfwinfo->cnt_h2c_fail++;
|
||||
}
|
||||
|
||||
static void _reset_btc_var(struct rtw89_dev *rtwdev, u8 type)
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,113 @@
|
||||
From 28c1d4c167238010c6bfee8c86d9964a889b9acd Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:04 +0100
|
||||
Subject: [PATCH 28/36] rtw89: coex: Add MAC API to get BT polluted counter
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 8c7e9ceb5bacec842784e5568c36769e97d96acb
|
||||
Author: Ching-Te Ku <ku920601@realtek.com>
|
||||
Date: Thu Dec 9 16:32:25 2021 +0800
|
||||
|
||||
rtw89: coex: Add MAC API to get BT polluted counter
|
||||
|
||||
Add function to get and parse BT polluted counter.
|
||||
When WLAN Tx was dropped by BT, the packet will be marked as BT polluted.
|
||||
|
||||
Signed-off-by: Ching-Te Ku <ku920601@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/20211209083229.10815-4-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/coex.c | 6 ++++--
|
||||
drivers/net/wireless/realtek/rtw89/core.h | 1 +
|
||||
drivers/net/wireless/realtek/rtw89/mac.c | 12 ++++++++++++
|
||||
drivers/net/wireless/realtek/rtw89/mac.h | 1 +
|
||||
4 files changed, 18 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/coex.c b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
index c8f912e7344d..8763114eab27 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
@@ -1126,6 +1126,9 @@ static u32 _chk_btc_report(struct rtw89_dev *rtwdev,
|
||||
wl->ver_info.fw_coex = prpt->wl_fw_coex_ver;
|
||||
wl->ver_info.fw = prpt->wl_fw_ver;
|
||||
dm->wl_fw_cx_offload = !!(prpt->wl_fw_cx_offload);
|
||||
+
|
||||
+ btc->cx.cnt_bt[BTC_BCNT_POLUT] =
|
||||
+ rtw89_mac_get_plt_cnt(rtwdev, RTW89_MAC_0);
|
||||
}
|
||||
|
||||
if (rpt_type >= BTC_RPT_TYPE_BT_VER &&
|
||||
@@ -4798,7 +4801,6 @@ static void _show_bt_info(struct rtw89_dev *rtwdev, struct seq_file *m)
|
||||
struct rtw89_btc_module *module = &btc->mdinfo;
|
||||
struct rtw89_btc_bt_link_info *bt_linfo = &bt->link_info;
|
||||
u8 *afh = bt_linfo->afh_map;
|
||||
- u16 polt_cnt = 0;
|
||||
|
||||
if (!(btc->dm.coex_info_map & BTC_COEX_INFO_BT))
|
||||
return;
|
||||
@@ -4884,7 +4886,7 @@ static void _show_bt_info(struct rtw89_dev *rtwdev, struct seq_file *m)
|
||||
" %-15s : Hi-rx = %d, Hi-tx = %d, Lo-rx = %d, Lo-tx = %d (bt_polut_wl_tx = %d)\n",
|
||||
"[trx_req_cnt]", cx->cnt_bt[BTC_BCNT_HIPRI_RX],
|
||||
cx->cnt_bt[BTC_BCNT_HIPRI_TX], cx->cnt_bt[BTC_BCNT_LOPRI_RX],
|
||||
- cx->cnt_bt[BTC_BCNT_LOPRI_TX], polt_cnt);
|
||||
+ cx->cnt_bt[BTC_BCNT_LOPRI_TX], cx->cnt_bt[BTC_BCNT_POLUT]);
|
||||
}
|
||||
|
||||
#define CASE_BTC_RSN_STR(e) case BTC_RSN_ ## e: return #e
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h
|
||||
index c03e3a13bd56..7c84556ec4ad 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/core.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/core.h
|
||||
@@ -805,6 +805,7 @@ enum rtw89_btc_bt_state_cnt {
|
||||
BTC_BCNT_HIPRI_RX,
|
||||
BTC_BCNT_LOPRI_TX,
|
||||
BTC_BCNT_LOPRI_RX,
|
||||
+ BTC_BCNT_POLUT,
|
||||
BTC_BCNT_RATECHG,
|
||||
BTC_BCNT_NUM
|
||||
};
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
index 999459489e92..b98c47e9ecfe 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
@@ -3450,6 +3450,18 @@ bool rtw89_mac_get_ctrl_path(struct rtw89_dev *rtwdev)
|
||||
return FIELD_GET(B_AX_LTE_MUX_CTRL_PATH >> 24, val);
|
||||
}
|
||||
|
||||
+u16 rtw89_mac_get_plt_cnt(struct rtw89_dev *rtwdev, u8 band)
|
||||
+{
|
||||
+ u32 reg;
|
||||
+ u16 cnt;
|
||||
+
|
||||
+ reg = rtw89_mac_reg_by_idx(R_AX_BT_PLT, band);
|
||||
+ cnt = rtw89_read32_mask(rtwdev, reg, B_AX_BT_PLT_PKT_CNT_MASK);
|
||||
+ rtw89_write16_set(rtwdev, reg, B_AX_BT_PLT_RST);
|
||||
+
|
||||
+ return cnt;
|
||||
+}
|
||||
+
|
||||
static void rtw89_mac_bfee_ctrl(struct rtw89_dev *rtwdev, u8 mac_idx, bool en)
|
||||
{
|
||||
u32 reg;
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac.h b/drivers/net/wireless/realtek/rtw89/mac.h
|
||||
index 94cd29bd83d7..b7d13edf7dd1 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac.h
|
||||
@@ -788,6 +788,7 @@ int rtw89_mac_coex_init(struct rtw89_dev *rtwdev, const struct rtw89_mac_ax_coex
|
||||
int rtw89_mac_cfg_gnt(struct rtw89_dev *rtwdev,
|
||||
const struct rtw89_mac_ax_coex_gnt *gnt_cfg);
|
||||
int rtw89_mac_cfg_plt(struct rtw89_dev *rtwdev, struct rtw89_mac_ax_plt *plt);
|
||||
+u16 rtw89_mac_get_plt_cnt(struct rtw89_dev *rtwdev, u8 band);
|
||||
void rtw89_mac_cfg_sb(struct rtw89_dev *rtwdev, u32 val);
|
||||
u32 rtw89_mac_get_sb(struct rtw89_dev *rtwdev);
|
||||
bool rtw89_mac_get_ctrl_path(struct rtw89_dev *rtwdev);
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,82 @@
|
||||
From ac6eb6a8bbca1aa358b288ee694c62c740623283 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:04 +0100
|
||||
Subject: [PATCH 29/36] rtw89: coex: Define LPS state for BTC using
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 2200ff3f0d1df9f41d0a5589e4a9572b4f627796
|
||||
Author: Ching-Te Ku <ku920601@realtek.com>
|
||||
Date: Thu Dec 9 16:32:26 2021 +0800
|
||||
|
||||
rtw89: coex: Define LPS state for BTC using
|
||||
|
||||
To distinguish three types of LPS state.
|
||||
|
||||
Signed-off-by: Ching-Te Ku <ku920601@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/20211209083229.10815-5-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/coex.c | 8 ++++----
|
||||
drivers/net/wireless/realtek/rtw89/coex.h | 6 ++++++
|
||||
2 files changed, 10 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/coex.c b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
index 8763114eab27..436f5ccb193a 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
@@ -1622,7 +1622,7 @@ static void _set_rf_trx_para(struct rtw89_dev *rtwdev)
|
||||
_set_bt_rx_gain(rtwdev, para.bt_rx_gain);
|
||||
|
||||
if (bt->enable.now == 0 || wl->status.map.rf_off == 1 ||
|
||||
- wl->status.map.lps == 1)
|
||||
+ wl->status.map.lps == BTC_LPS_RF_OFF)
|
||||
wl_stb_chg = 0;
|
||||
else
|
||||
wl_stb_chg = 1;
|
||||
@@ -4225,16 +4225,16 @@ void rtw89_btc_ntfy_radio_state(struct rtw89_dev *rtwdev, enum btc_rfctrl rf_sta
|
||||
switch (rf_state) {
|
||||
case BTC_RFCTRL_WL_OFF:
|
||||
wl->status.map.rf_off = 1;
|
||||
- wl->status.map.lps = 0;
|
||||
+ wl->status.map.lps = BTC_LPS_OFF;
|
||||
break;
|
||||
case BTC_RFCTRL_FW_CTRL:
|
||||
wl->status.map.rf_off = 0;
|
||||
- wl->status.map.lps = 1;
|
||||
+ wl->status.map.lps = BTC_LPS_RF_OFF;
|
||||
break;
|
||||
case BTC_RFCTRL_WL_ON:
|
||||
default:
|
||||
wl->status.map.rf_off = 0;
|
||||
- wl->status.map.lps = 0;
|
||||
+ wl->status.map.lps = BTC_LPS_OFF;
|
||||
break;
|
||||
}
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/coex.h b/drivers/net/wireless/realtek/rtw89/coex.h
|
||||
index 4b4565d15c9e..c3a722d259d7 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/coex.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/coex.h
|
||||
@@ -130,6 +130,12 @@ enum btc_rfctrl {
|
||||
BTC_RFCTRL_MAX
|
||||
};
|
||||
|
||||
+enum btc_lps_state {
|
||||
+ BTC_LPS_OFF = 0,
|
||||
+ BTC_LPS_RF_OFF = 1,
|
||||
+ BTC_LPS_RF_ON = 2
|
||||
+};
|
||||
+
|
||||
void rtw89_btc_ntfy_poweron(struct rtw89_dev *rtwdev);
|
||||
void rtw89_btc_ntfy_poweroff(struct rtw89_dev *rtwdev);
|
||||
void rtw89_btc_ntfy_init(struct rtw89_dev *rtwdev, u8 mode);
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,118 @@
|
||||
From 1b91f335400f3c9937b7c2b6f396352fc8ecc7f7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:04 +0100
|
||||
Subject: [PATCH 30/36] rtw89: coex: Update BT counters while receiving report
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit eb87d79911c65ab8973ee8292802f0da6b7c67a4
|
||||
Author: Ching-Te Ku <ku920601@realtek.com>
|
||||
Date: Thu Dec 9 16:32:27 2021 +0800
|
||||
|
||||
rtw89: coex: Update BT counters while receiving report
|
||||
|
||||
Move _chk_btc_err and update_bt_cnt to _chk_btc_report(),
|
||||
so we can update counter/info to COEX at a proper moment,
|
||||
instead of relying on a user does cat the debug info periodically.
|
||||
|
||||
Signed-off-by: Ching-Te Ku <ku920601@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/20211209083229.10815-6-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/coex.c | 32 +++++++++++++++----------------
|
||||
1 file changed, 15 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/coex.c b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
index 436f5ccb193a..929818c3a776 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
@@ -1118,6 +1118,10 @@ static u32 _chk_btc_report(struct rtw89_dev *rtwdev,
|
||||
diff_t = pcysta->tavg_cycle[CXT_WL] - wl_slot_set;
|
||||
_chk_btc_err(rtwdev, BTC_DCNT_WL_SLOT_DRIFT, diff_t);
|
||||
}
|
||||
+
|
||||
+ _chk_btc_err(rtwdev, BTC_DCNT_W1_FREEZE, pcysta->slot_cnt[CXST_W1]);
|
||||
+ _chk_btc_err(rtwdev, BTC_DCNT_W1_FREEZE, pcysta->slot_cnt[CXST_W1]);
|
||||
+ _chk_btc_err(rtwdev, BTC_DCNT_CYCLE_FREEZE, (u32)pcysta->cycles);
|
||||
}
|
||||
|
||||
if (rpt_type == BTC_RPT_TYPE_CTRL) {
|
||||
@@ -1127,8 +1131,17 @@ static u32 _chk_btc_report(struct rtw89_dev *rtwdev,
|
||||
wl->ver_info.fw = prpt->wl_fw_ver;
|
||||
dm->wl_fw_cx_offload = !!(prpt->wl_fw_cx_offload);
|
||||
|
||||
- btc->cx.cnt_bt[BTC_BCNT_POLUT] =
|
||||
- rtw89_mac_get_plt_cnt(rtwdev, RTW89_MAC_0);
|
||||
+ _chk_btc_err(rtwdev, BTC_DCNT_RPT_FREEZE,
|
||||
+ pfwinfo->event[BTF_EVNT_RPT]);
|
||||
+
|
||||
+ /* To avoid I/O if WL LPS or power-off */
|
||||
+ if (wl->status.map.lps != BTC_LPS_RF_OFF && !wl->status.map.rf_off) {
|
||||
+ rtwdev->chip->ops->btc_update_bt_cnt(rtwdev);
|
||||
+ _chk_btc_err(rtwdev, BTC_DCNT_BTCNT_FREEZE, 0);
|
||||
+
|
||||
+ btc->cx.cnt_bt[BTC_BCNT_POLUT] =
|
||||
+ rtw89_mac_get_plt_cnt(rtwdev, RTW89_MAC_0);
|
||||
+ }
|
||||
}
|
||||
|
||||
if (rpt_type >= BTC_RPT_TYPE_BT_VER &&
|
||||
@@ -4793,7 +4806,6 @@ static void _show_bt_profile_info(struct rtw89_dev *rtwdev, struct seq_file *m)
|
||||
|
||||
static void _show_bt_info(struct rtw89_dev *rtwdev, struct seq_file *m)
|
||||
{
|
||||
- const struct rtw89_chip_info *chip = rtwdev->chip;
|
||||
struct rtw89_btc *btc = &rtwdev->btc;
|
||||
struct rtw89_btc_cx *cx = &btc->cx;
|
||||
struct rtw89_btc_bt_info *bt = &cx->bt;
|
||||
@@ -4876,12 +4888,6 @@ static void _show_bt_info(struct rtw89_dev *rtwdev, struct seq_file *m)
|
||||
cx->cnt_bt[BTC_BCNT_INFOUPDATE],
|
||||
cx->cnt_bt[BTC_BCNT_INFOSAME]);
|
||||
|
||||
- if (wl->status.map.lps || wl->status.map.rf_off)
|
||||
- return;
|
||||
-
|
||||
- chip->ops->btc_update_bt_cnt(rtwdev);
|
||||
- _chk_btc_err(rtwdev, BTC_DCNT_BTCNT_FREEZE, 0);
|
||||
-
|
||||
seq_printf(m,
|
||||
" %-15s : Hi-rx = %d, Hi-tx = %d, Lo-rx = %d, Lo-tx = %d (bt_polut_wl_tx = %d)\n",
|
||||
"[trx_req_cnt]", cx->cnt_bt[BTC_BCNT_HIPRI_RX],
|
||||
@@ -5254,8 +5260,6 @@ static void _show_fbtc_cysta(struct rtw89_dev *rtwdev, struct seq_file *m)
|
||||
pcysta->bcn_cnt[CXBCN_BT_SLOT],
|
||||
pcysta->bcn_cnt[CXBCN_BT_OK]);
|
||||
|
||||
- _chk_btc_err(rtwdev, BTC_DCNT_CYCLE_FREEZE, (u32)pcysta->cycles);
|
||||
-
|
||||
for (i = 0; i < CXST_MAX; i++) {
|
||||
if (!pcysta->slot_cnt[i])
|
||||
continue;
|
||||
@@ -5279,9 +5283,6 @@ static void _show_fbtc_cysta(struct rtw89_dev *rtwdev, struct seq_file *m)
|
||||
}
|
||||
seq_puts(m, "\n");
|
||||
|
||||
- _chk_btc_err(rtwdev, BTC_DCNT_W1_FREEZE, pcysta->slot_cnt[CXST_W1]);
|
||||
- _chk_btc_err(rtwdev, BTC_DCNT_B1_FREEZE, pcysta->slot_cnt[CXST_B1]);
|
||||
-
|
||||
seq_printf(m, " %-15s : avg_t[wl:%d/bt:%d/lk:%d.%03d]",
|
||||
"[cycle_time]",
|
||||
pcysta->tavg_cycle[CXT_WL],
|
||||
@@ -5633,9 +5634,6 @@ static void _show_summary(struct rtw89_dev *rtwdev, struct seq_file *m)
|
||||
pfwinfo->event[BTF_EVNT_RPT], prptctrl->rpt_cnt,
|
||||
prptctrl->rpt_enable, dm->error.val);
|
||||
|
||||
- _chk_btc_err(rtwdev, BTC_DCNT_RPT_FREEZE,
|
||||
- pfwinfo->event[BTF_EVNT_RPT]);
|
||||
-
|
||||
if (dm->error.map.wl_fw_hang)
|
||||
seq_puts(m, " (WL FW Hang!!)");
|
||||
seq_puts(m, "\n");
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,50 @@
|
||||
From 3880474c7442b138b17f8009b8a40037bbaf484c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:04 +0100
|
||||
Subject: [PATCH 31/36] rtw89: coex: Cancel PS leaving while C2H comes
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit bd309c8b4965b67917d8828c97d1b6741377cb8e
|
||||
Author: Ching-Te Ku <ku920601@realtek.com>
|
||||
Date: Thu Dec 9 16:32:28 2021 +0800
|
||||
|
||||
rtw89: coex: Cancel PS leaving while C2H comes
|
||||
|
||||
It's unnecessary to leave WL PS while C2H comes.
|
||||
|
||||
Signed-off-by: Ching-Te Ku <ku920601@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/20211209083229.10815-7-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/coex.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/coex.c b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
index 929818c3a776..9f7d4f8d0c56 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/coex.c
|
||||
@@ -4553,14 +4553,12 @@ void rtw89_btc_c2h_handle(struct rtw89_dev *rtwdev, struct sk_buff *skb,
|
||||
rtw89_debug(rtwdev, RTW89_DBG_BTC,
|
||||
"[BTC], handle C2H BT INFO with data %8ph\n", buf);
|
||||
btc->cx.cnt_bt[BTC_BCNT_INFOUPDATE]++;
|
||||
- rtw89_leave_ps_mode(rtwdev);
|
||||
_update_bt_info(rtwdev, buf, len);
|
||||
break;
|
||||
case BTF_EVNT_BT_SCBD:
|
||||
rtw89_debug(rtwdev, RTW89_DBG_BTC,
|
||||
"[BTC], handle C2H BT SCBD with data %8ph\n", buf);
|
||||
btc->cx.cnt_bt[BTC_BCNT_SCBDUPDATE]++;
|
||||
- rtw89_leave_ps_mode(rtwdev);
|
||||
_update_bt_scbd(rtwdev, false);
|
||||
break;
|
||||
case BTF_EVNT_BT_PSD:
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,44 @@
|
||||
From c5f1d2ed0a760267c6927d3d1670cffe02c51953 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:04 +0100
|
||||
Subject: [PATCH 32/36] rtw89: coex: Update COEX to 5.5.8
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 4c02043c5a5270c5b6e11ca1c695ac17043a3e88
|
||||
Author: Ching-Te Ku <ku920601@realtek.com>
|
||||
Date: Thu Dec 9 16:32:29 2021 +0800
|
||||
|
||||
rtw89: coex: Update COEX to 5.5.8
|
||||
|
||||
Update COEX version.
|
||||
|
||||
Signed-off-by: Ching-Te Ku <ku920601@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/20211209083229.10815-8-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/rtw8852a.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
index 5ec13ae0abcd..6b75e4bc7352 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
@@ -2031,7 +2031,7 @@ const struct rtw89_chip_info rtw8852a_chip_info = {
|
||||
.limit_efuse_size = 1152,
|
||||
.phycap_addr = 0x580,
|
||||
.phycap_size = 128,
|
||||
- .para_ver = 0x05050764,
|
||||
+ .para_ver = 0x05050864,
|
||||
.wlcx_desired = 0x05050000,
|
||||
.btcx_desired = 0x5,
|
||||
.scbd = 0x1,
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,45 @@
|
||||
From 67e9706f32aa28ec91467d694c72055e3cfe709c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:04 +0100
|
||||
Subject: [PATCH 33/36] rtw89: 8852a: correct bit definition of dfs_en
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
|
||||
commit 5f48d7bbec3775c9388c91c6920a64076f7ae339
|
||||
Author: Chung-Hsuan Hung <hsuan8331@realtek.com>
|
||||
Date: Tue Dec 21 10:48:00 2021 +0800
|
||||
|
||||
rtw89: 8852a: correct bit definition of dfs_en
|
||||
|
||||
Since there are other protections in the set channel flow, fortunately old
|
||||
wrong setting won't affect the performance.
|
||||
|
||||
Signed-off-by: Chung-Hsuan Hung <hsuan8331@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/20211221024800.23814-1-pkshih@realtek.com
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/reg.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/reg.h b/drivers/net/wireless/realtek/rtw89/reg.h
|
||||
index b6049009f183..e0a416d37d0e 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/reg.h
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/reg.h
|
||||
@@ -1658,7 +1658,7 @@
|
||||
#define R_RSTB_WATCH_DOG 0x000C
|
||||
#define B_P0_RSTB_WATCH_DOG BIT(0)
|
||||
#define B_P1_RSTB_WATCH_DOG BIT(1)
|
||||
-#define B_UPD_P0_EN BIT(30)
|
||||
+#define B_UPD_P0_EN BIT(31)
|
||||
#define R_ANAPAR_PW15 0x030C
|
||||
#define B_ANAPAR_PW15 GENMASK(31, 24)
|
||||
#define B_ANAPAR_PW15_H GENMASK(27, 24)
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,46 @@
|
||||
From 12844a206de3d543be87b9fbe8af014ca353a974 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:04 +0100
|
||||
Subject: [PATCH 34/36] rtw89: fix maybe-uninitialized error (RHEL only)
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
Upstream-status: RHEL8 only
|
||||
|
||||
Fix build error of "maybe uninitialized variable", refering to _cur
|
||||
variable in rtw8852a.c, function rtw8852a_btc_set_wl_txpwr_ctrl.
|
||||
In fact it will never be uninitialized in this case because _reg values
|
||||
used here are within the acceptable range for rtw89_mac_txpwr_read32 so
|
||||
it will not return an error in this case.
|
||||
|
||||
Upstream kernel is built with -Wno-maybe-uninitialized so this warning
|
||||
does not prevent from building. However, that flag was added after RHEL8
|
||||
kernel fork, so we build without it.
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/rtw8852a.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
index 6b75e4bc7352..15337c638317 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
@@ -1806,9 +1806,11 @@ rtw8852a_btc_set_wl_txpwr_ctrl(struct rtw89_dev *rtwdev, u32 txpwr_val)
|
||||
const u32 _reg = __btc_cr_ ## _case; \
|
||||
u32 _val = __btc_ctrl_val_ ## _case(txpwr_val); \
|
||||
u32 _cur, _wrt; \
|
||||
+ int ret; \
|
||||
rtw89_debug(rtwdev, RTW89_DBG_TXPWR, \
|
||||
"btc ctrl %s: 0x%x\n", #_case, _val); \
|
||||
- rtw89_mac_txpwr_read32(rtwdev, RTW89_PHY_0, _reg, &_cur);\
|
||||
+ ret = rtw89_mac_txpwr_read32(rtwdev, RTW89_PHY_0, _reg, &_cur);\
|
||||
+ if (ret) break; \
|
||||
rtw89_debug(rtwdev, RTW89_DBG_TXPWR, \
|
||||
"btc ctrl ori 0x%x: 0x%x\n", _reg, _cur); \
|
||||
_wrt = __do_clr(_val) ? \
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,38 @@
|
||||
From 067322075a8cdb1e466da71f7d7560062591ed54 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:04 +0100
|
||||
Subject: [PATCH 35/36] rtw89: enable driver and device RTL8852AE
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
Upstream-status: Posted https://gitlab.com/cki-project/kernel-ark/-/merge_requests/1570
|
||||
|
||||
Enable new driver rtw89 and device RTL8852AE
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
redhat/configs/generic/CONFIG_RTW89 | 1 +
|
||||
redhat/configs/generic/CONFIG_RTW89_8852AE | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
create mode 100644 redhat/configs/generic/CONFIG_RTW89
|
||||
create mode 100644 redhat/configs/generic/CONFIG_RTW89_8852AE
|
||||
|
||||
diff --git a/redhat/configs/generic/CONFIG_RTW89 b/redhat/configs/generic/CONFIG_RTW89
|
||||
new file mode 100644
|
||||
index 000000000000..48f9cf9f73e3
|
||||
--- /dev/null
|
||||
+++ b/redhat/configs/generic/CONFIG_RTW89
|
||||
@@ -0,0 +1 @@
|
||||
+CONFIG_RTW89=m
|
||||
diff --git a/redhat/configs/generic/CONFIG_RTW89_8852AE b/redhat/configs/generic/CONFIG_RTW89_8852AE
|
||||
new file mode 100644
|
||||
index 000000000000..d8ef20a039eb
|
||||
--- /dev/null
|
||||
+++ b/redhat/configs/generic/CONFIG_RTW89_8852AE
|
||||
@@ -0,0 +1 @@
|
||||
+CONFIG_RTW89_8852AE=m
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,44 @@
|
||||
From a76d23ad6ef2bf7e7f7f1718d74e799ca7e64c77 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||||
Date: Fri, 21 Jan 2022 08:49:05 +0100
|
||||
Subject: [PATCH 36/36] rtw89: fix maybe-uninitialized error
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Bugzilla: http://bugzilla.redhat.com/2033291
|
||||
Upstream-status: Posted https://patchwork.kernel.org/project/linux-wireless/patch/20220113094253.73370-1-ihuguet@redhat.com/
|
||||
|
||||
Author: Íñigo Huguet <ihuguet@redhat.com>
|
||||
|
||||
rtw89: fix maybe-uninitialized error
|
||||
|
||||
Call to dle_dfi_qempty might fail, leaving qempty.qempty untouched, which
|
||||
is latter used to control the for loop. If that happens, it's not
|
||||
initialized anywhere.
|
||||
|
||||
Initialize it so the loop doesn't iterate unless it's modified by the
|
||||
call to dle_dfi_qempty.
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
|
||||
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||||
---
|
||||
drivers/net/wireless/realtek/rtw89/mac.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
index b98c47e9ecfe..7c3e547006cd 100644
|
||||
--- a/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
|
||||
@@ -172,6 +172,7 @@ static void rtw89_mac_dump_qta_lost(struct rtw89_dev *rtwdev)
|
||||
|
||||
qempty.dle_type = DLE_CTRL_TYPE_PLE;
|
||||
qempty.grpsel = 0;
|
||||
+ qempty.qempty = ~(u32)0;
|
||||
ret = dle_dfi_qempty(rtwdev, &qempty);
|
||||
if (ret)
|
||||
rtw89_warn(rtwdev, "%s: query DLE fail\n", __func__);
|
||||
--
|
||||
2.13.6
|
||||
|
@ -0,0 +1,14 @@
|
||||
Index: src/drivers/net/wireless/realtek/rtw89/Makefile
|
||||
===================================================================
|
||||
--- src.orig/drivers/net/wireless/realtek/rtw89/Makefile 2022-01-26 22:56:38.152946163 +0100
|
||||
+++ src/drivers/net/wireless/realtek/rtw89/Makefile 2022-02-01 03:35:33.804917507 +0100
|
||||
@@ -1,5 +1,9 @@
|
||||
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
|
||||
+CONFIG_RTW89_CORE := m
|
||||
+CONFIG_RTW89_PCI := m
|
||||
+CONFIG_RTW89_8852AE := m
|
||||
+
|
||||
obj-$(CONFIG_RTW89_CORE) += rtw89_core.o
|
||||
rtw89_core-y += core.o \
|
||||
mac80211.o \
|
@ -0,0 +1,18 @@
|
||||
Index: src/drivers/net/wireless/realtek/rtw89/core.c
|
||||
===================================================================
|
||||
--- src.orig/drivers/net/wireless/realtek/rtw89/core.c 2022-02-01 03:34:55.998152930 +0100
|
||||
+++ src/drivers/net/wireless/realtek/rtw89/core.c 2022-02-01 03:36:17.249725882 +0100
|
||||
@@ -2504,3 +2504,4 @@
|
||||
MODULE_AUTHOR("Realtek Corporation");
|
||||
MODULE_DESCRIPTION("Realtek 802.11ax wireless core module");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
+MODULE_VERSION("4.18.0_363_dup8.5");
|
||||
Index: src/drivers/net/wireless/realtek/rtw89/pci.c
|
||||
===================================================================
|
||||
--- src.orig/drivers/net/wireless/realtek/rtw89/pci.c 2022-01-26 22:56:38.384944089 +0100
|
||||
+++ src/drivers/net/wireless/realtek/rtw89/pci.c 2022-02-01 03:36:39.679626949 +0100
|
||||
@@ -3058,3 +3058,4 @@
|
||||
MODULE_AUTHOR("Realtek Corporation");
|
||||
MODULE_DESCRIPTION("Realtek 802.11ax wireless PCI driver");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
+MODULE_VERSION("4.18.0_363_dup8.5");
|
@ -0,0 +1,19 @@
|
||||
Index: src/drivers/net/wireless/realtek/rtw89/rtw8852a.c
|
||||
===================================================================
|
||||
--- src.orig/drivers/net/wireless/realtek/rtw89/rtw8852a.c 2022-02-01 03:51:01.506584795 +0100
|
||||
+++ src/drivers/net/wireless/realtek/rtw89/rtw8852a.c 2022-02-01 15:55:44.165428825 +0100
|
||||
@@ -2000,7 +2000,7 @@
|
||||
const struct rtw89_chip_info rtw8852a_chip_info = {
|
||||
.chip_id = RTL8852A,
|
||||
.ops = &rtw8852a_chip_ops,
|
||||
- .fw_name = "rtw89/rtw8852a_fw.bin",
|
||||
+ .fw_name = "rtw89/rtw8852a_fw_dup85.bin",
|
||||
.fifo_size = 458752,
|
||||
.max_amsdu_limit = 3500,
|
||||
.dis_2g_40m_ul_ofdma = true,
|
||||
@@ -2054,4 +2054,4 @@
|
||||
};
|
||||
EXPORT_SYMBOL(rtw8852a_chip_info);
|
||||
|
||||
-MODULE_FIRMWARE("rtw89/rtw8852a_fw.bin");
|
||||
+MODULE_FIRMWARE("rtw89/rtw8852a_fw_dup85.bin");
|
@ -0,0 +1,402 @@
|
||||
%define kmod_name rtw89
|
||||
%define kmod_vendor redhat
|
||||
%define kmod_rpm_name kmod-redhat-rtw89
|
||||
%define kmod_driver_version 4.18.0_363_dup8.5
|
||||
%define kmod_driver_epoch %{nil}
|
||||
%define kmod_rpm_release 1
|
||||
%define kmod_kernel_version 4.18.0-348.el8
|
||||
%define kmod_kernel_version_min %{nil}
|
||||
%define kmod_kernel_version_dep %{nil}
|
||||
%define kmod_kbuild_dir drivers/net/wireless/realtek/rtw89
|
||||
%define kmod_dependencies %{nil}
|
||||
%define kmod_dist_build_deps %{nil}
|
||||
%define kmod_build_dependencies %{nil}
|
||||
%define kmod_provides %{nil}
|
||||
%define kmod_devel_package 1
|
||||
%define kmod_devel_src_paths %{nil}
|
||||
%define kmod_install_path extra/kmod-redhat-rtw89
|
||||
%define kmod_files_package 0
|
||||
%define kmod_files_noarch 1
|
||||
%define kernel_pkg kernel
|
||||
%define kernel_devel_pkg kernel-devel
|
||||
%define kernel_modules_pkg kernel-modules
|
||||
|
||||
%{!?dist: %define dist .el8_5}
|
||||
%{!?make_build: %define make_build make}
|
||||
|
||||
%if "%{kmod_kernel_version_dep}" == ""
|
||||
%define kmod_kernel_version_dep %{kmod_kernel_version}
|
||||
%endif
|
||||
|
||||
%if "%{kmod_dist_build_deps}" == ""
|
||||
%if (0%{?rhel} > 7) || (0%{?centos} > 7)
|
||||
%define kmod_dist_build_deps redhat-rpm-config kernel-abi-whitelists elfutils-libelf-devel kernel-rpm-macros kmod
|
||||
%else
|
||||
%define kmod_dist_build_deps redhat-rpm-config kernel-abi-whitelists
|
||||
%endif
|
||||
%endif
|
||||
|
||||
Source0: %{kmod_name}-%{kmod_vendor}-%{kmod_driver_version}.tar.bz2
|
||||
# Source code patches
|
||||
Patch0: 0001-rtw89-add-Realtek-802.11ax-driver.patch
|
||||
Patch1: 0002-rtw89-Fix-two-spelling-mistakes-in-debug-messages.patch
|
||||
Patch2: 0003-rtw89-Remove-redundant-check-of-ret-after-call-to-rt.patch
|
||||
Patch3: 0004-rtw89-fix-return-value-check-in-rtw89_cam_send_sec_k.patch
|
||||
Patch4: 0005-rtw89-remove-unneeded-semicolon.patch
|
||||
Patch5: 0006-rtw89-fix-error-function-parameter.patch
|
||||
Patch6: 0007-rtw89-remove-duplicate-register-definitions.patch
|
||||
Patch7: 0008-rtw89-fix-return-value-in-hfc_pub_cfg_chk.patch
|
||||
Patch8: 0009-rtw89-Fix-variable-dereferenced-before-check-sta.patch
|
||||
Patch9: 0010-rtw89-update-partition-size-of-firmware-header-on-sk.patch
|
||||
Patch10: 0011-rtw89-fill-regd-field-of-limit-limit_ru-tables-by-en.patch
|
||||
Patch11: 0012-rtw89-update-rtw89-regulation-definition-to-R58-R31.patch
|
||||
Patch12: 0013-rtw89-update-tx-power-limit-limit_ru-tables-to-R54.patch
|
||||
Patch13: 0014-rtw89-update-rtw89_regulatory-map-to-R58-R31.patch
|
||||
Patch14: 0015-rtw89-remove-unnecessary-conditional-operators.patch
|
||||
Patch15: 0016-rtw89-remove-unneeded-variable.patch
|
||||
Patch16: 0017-rtw89-fix-potentially-access-out-of-range-of-RF-regi.patch
|
||||
Patch17: 0018-rtw89-add-AXIDMA-and-TX-FIFO-dump-in-mac_mem_dump.patch
|
||||
Patch18: 0019-rtw89-add-const-in-the-cast-of-le32_get_bits.patch
|
||||
Patch19: 0020-rtw89-use-inline-function-instead-macro-to-set-H2C-a.patch
|
||||
Patch20: 0021-rtw89-update-scan_mac_addr-during-scanning-period.patch
|
||||
Patch21: 0022-rtw89-fix-incorrect-channel-info-during-scan.patch
|
||||
Patch22: 0023-rtw89-fix-sending-wrong-rtwsta-mac_id-to-firmware-to.patch
|
||||
Patch23: 0024-rtw89-remove-cch_by_bw-which-is-not-used.patch
|
||||
Patch24: 0025-rtw89-don-t-kick-off-TX-DMA-if-failed-to-write-skb.patch
|
||||
Patch25: 0026-rtw89-coex-correct-C2H-header-length.patch
|
||||
Patch26: 0027-rtw89-coex-Not-to-send-H2C-when-WL-not-ready-and-cou.patch
|
||||
Patch27: 0028-rtw89-coex-Add-MAC-API-to-get-BT-polluted-counter.patch
|
||||
Patch28: 0029-rtw89-coex-Define-LPS-state-for-BTC-using.patch
|
||||
Patch29: 0030-rtw89-coex-Update-BT-counters-while-receiving-report.patch
|
||||
Patch30: 0031-rtw89-coex-Cancel-PS-leaving-while-C2H-comes.patch
|
||||
Patch31: 0032-rtw89-coex-Update-COEX-to-5.5.8.patch
|
||||
Patch32: 0033-rtw89-8852a-correct-bit-definition-of-dfs_en.patch
|
||||
Patch33: 0034-rtw89-fix-maybe-uninitialized-error-RHEL-only.patch
|
||||
Patch34: 0035-rtw89-enable-driver-and-device-RTL8852AE.patch
|
||||
Patch35: 0036-rtw89-fix-maybe-uninitialized-error.patch
|
||||
Patch36: 9000-force-enable-rtw89.patch
|
||||
Patch37: 9001-add-driver-version.patch
|
||||
Patch38: 9002-change-firmware-path.patch
|
||||
|
||||
%define findpat %( echo "%""P" )
|
||||
%define __find_requires /usr/lib/rpm/redhat/find-requires.ksyms
|
||||
%define __find_provides /usr/lib/rpm/redhat/find-provides.ksyms %{kmod_name} %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
%define sbindir %( if [ -d "/sbin" -a \! -h "/sbin" ]; then echo "/sbin"; else echo %{_sbindir}; fi )
|
||||
%define dup_state_dir %{_localstatedir}/lib/rpm-state/kmod-dups
|
||||
%define kver_state_dir %{dup_state_dir}/kver
|
||||
%define kver_state_file %{kver_state_dir}/%{kmod_kernel_version}.%(arch)
|
||||
%define dup_module_list %{dup_state_dir}/rpm-kmod-%{kmod_name}-modules
|
||||
|
||||
Name: kmod-redhat-rtw89
|
||||
Version: %{kmod_driver_version}
|
||||
Release: %{kmod_rpm_release}%{?dist}
|
||||
%if "%{kmod_driver_epoch}" != ""
|
||||
Epoch: %{kmod_driver_epoch}
|
||||
%endif
|
||||
Summary: rtw89 kernel module for Driver Update Program
|
||||
Group: System/Kernel
|
||||
License: GPLv2
|
||||
URL: https://www.kernel.org/
|
||||
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
||||
BuildRequires: %kernel_devel_pkg = %kmod_kernel_version
|
||||
%if "%{kmod_dist_build_deps}" != ""
|
||||
BuildRequires: %{kmod_dist_build_deps}
|
||||
%endif
|
||||
ExclusiveArch: x86_64
|
||||
%global kernel_source() /usr/src/kernels/%{kmod_kernel_version}.$(arch)
|
||||
|
||||
%global _use_internal_dependency_generator 0
|
||||
%if "%{?kmod_kernel_version_min}" != ""
|
||||
Provides: %kernel_modules_pkg >= %{kmod_kernel_version_min}.%{_target_cpu}
|
||||
%else
|
||||
Provides: %kernel_modules_pkg = %{kmod_kernel_version_dep}.%{_target_cpu}
|
||||
%endif
|
||||
Provides: kmod-%{kmod_name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires(post): %{sbindir}/weak-modules
|
||||
Requires(postun): %{sbindir}/weak-modules
|
||||
Requires: kernel >= 4.18.0-348.el8
|
||||
|
||||
Requires: kernel < 4.18.0-349.el8
|
||||
%if 1
|
||||
Requires: firmware(%{kmod_name}) = 20211119_105.gitf5d51956_dup8.5
|
||||
%endif
|
||||
%if "%{kmod_build_dependencies}" != ""
|
||||
BuildRequires: %{kmod_build_dependencies}
|
||||
%endif
|
||||
%if "%{kmod_dependencies}" != ""
|
||||
Requires: %{kmod_dependencies}
|
||||
%endif
|
||||
%if "%{kmod_provides}" != ""
|
||||
Provides: %{kmod_provides}
|
||||
%endif
|
||||
# if there are multiple kmods for the same driver from different vendors,
|
||||
# they should conflict with each other.
|
||||
Conflicts: kmod-%{kmod_name}
|
||||
|
||||
%description
|
||||
rtw89 kernel module for Driver Update Program
|
||||
|
||||
%if 1
|
||||
|
||||
%package -n kmod-redhat-rtw89-firmware
|
||||
Version: 20211119_105.gitf5d51956_dup8.5
|
||||
Summary: rtw89 firmware for Driver Update Program
|
||||
Provides: firmware(%{kmod_name}) = 20211119_105.gitf5d51956_dup8.5
|
||||
%if "%{kmod_kernel_version_min}" != ""
|
||||
Provides: %kernel_modules_pkg >= %{kmod_kernel_version_min}.%{_target_cpu}
|
||||
%else
|
||||
Provides: %kernel_modules_pkg = %{kmod_kernel_version_dep}.%{_target_cpu}
|
||||
%endif
|
||||
%description -n kmod-redhat-rtw89-firmware
|
||||
rtw89 firmware for Driver Update Program
|
||||
|
||||
|
||||
%files -n kmod-redhat-rtw89-firmware
|
||||
%defattr(644,root,root,755)
|
||||
/lib/firmware/rtw89/rtw8852a_fw_dup85.bin
|
||||
|
||||
|
||||
%endif
|
||||
|
||||
# Development package
|
||||
%if 0%{kmod_devel_package}
|
||||
%package -n kmod-redhat-rtw89-devel
|
||||
Version: %{kmod_driver_version}
|
||||
Requires: kernel >= 4.18.0-348.el8
|
||||
|
||||
Requires: kernel < 4.18.0-349.el8
|
||||
Summary: rtw89 development files for Driver Update Program
|
||||
|
||||
%description -n kmod-redhat-rtw89-devel
|
||||
rtw89 development files for Driver Update Program
|
||||
|
||||
|
||||
%files -n kmod-redhat-rtw89-devel
|
||||
%defattr(644,root,root,755)
|
||||
/lib/modules/%{kmod_rpm_name}-%{kmod_driver_version}/
|
||||
%endif
|
||||
|
||||
# Extra files package
|
||||
%if 0%{kmod_files_package}
|
||||
%package -n kmod-redhat-rtw89-files
|
||||
Version: %{kmod_driver_version}
|
||||
Summary: rtw89 additional files for Driver Update Program
|
||||
%if 0%{kmod_files_noarch}
|
||||
BuildArch: noarch
|
||||
%endif
|
||||
%if "%{?kmod_kernel_version_min}" != ""
|
||||
Provides: %kernel_modules_pkg >= %{kmod_kernel_version_min}.%{_target_cpu}
|
||||
%else
|
||||
Provides: %kernel_modules_pkg = %{kmod_kernel_version_dep}.%{_target_cpu}
|
||||
%endif
|
||||
|
||||
%description -n kmod-redhat-rtw89-files
|
||||
rtw89 additional files for Driver Update Program
|
||||
|
||||
|
||||
%files -n kmod-redhat-rtw89-files
|
||||
%defattr(644,root,root,755)
|
||||
/etc/dracut.conf.d/kmod-redhat-rtw89_dup85.conf
|
||||
%endif
|
||||
|
||||
%post
|
||||
modules=( $(find /lib/modules/%{kmod_kernel_version}.%(arch)/%{kmod_install_path} | grep '\.ko$') )
|
||||
printf '%s\n' "${modules[@]}" | %{sbindir}/weak-modules --add-modules --no-initramfs
|
||||
|
||||
mkdir -p "%{kver_state_dir}"
|
||||
touch "%{kver_state_file}"
|
||||
|
||||
exit 0
|
||||
|
||||
%posttrans
|
||||
# We have to re-implement part of weak-modules here because it doesn't allow
|
||||
# calling initramfs regeneration separately
|
||||
if [ -f "%{kver_state_file}" ]; then
|
||||
kver_base="%{kmod_kernel_version_dep}"
|
||||
kvers=$(ls -d "/lib/modules/${kver_base%%.*}"*)
|
||||
|
||||
for k_dir in $kvers; do
|
||||
k="${k_dir#/lib/modules/}"
|
||||
|
||||
tmp_initramfs="/boot/initramfs-$k.tmp"
|
||||
dst_initramfs="/boot/initramfs-$k.img"
|
||||
|
||||
# The same check as in weak-modules: we assume that the kernel present
|
||||
# if the symvers file exists.
|
||||
if [ -e "/boot/symvers-$k.gz" ] || [ -e "$k_dir/symvers.gz" ]; then
|
||||
/usr/bin/dracut -f "$tmp_initramfs" "$k" || exit 1
|
||||
cmp -s "$tmp_initramfs" "$dst_initramfs"
|
||||
if [ "$?" = 1 ]; then
|
||||
mv "$tmp_initramfs" "$dst_initramfs"
|
||||
else
|
||||
rm -f "$tmp_initramfs"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
rm -f "%{kver_state_file}"
|
||||
rmdir "%{kver_state_dir}" 2> /dev/null
|
||||
fi
|
||||
|
||||
rmdir "%{dup_state_dir}" 2> /dev/null
|
||||
|
||||
exit 0
|
||||
|
||||
%preun
|
||||
if rpm -q --filetriggers kmod 2> /dev/null| grep -q "Trigger for weak-modules call on kmod removal"; then
|
||||
mkdir -p "%{kver_state_dir}"
|
||||
touch "%{kver_state_file}"
|
||||
fi
|
||||
|
||||
mkdir -p "%{dup_state_dir}"
|
||||
rpm -ql kmod-redhat-rtw89-%{kmod_driver_version}-%{kmod_rpm_release}%{?dist}.$(arch) | \
|
||||
grep '\.ko$' > "%{dup_module_list}"
|
||||
|
||||
%postun
|
||||
if rpm -q --filetriggers kmod 2> /dev/null| grep -q "Trigger for weak-modules call on kmod removal"; then
|
||||
initramfs_opt="--no-initramfs"
|
||||
else
|
||||
initramfs_opt=""
|
||||
fi
|
||||
|
||||
modules=( $(cat "%{dup_module_list}") )
|
||||
rm -f "%{dup_module_list}"
|
||||
printf '%s\n' "${modules[@]}" | %{sbindir}/weak-modules --remove-modules $initramfs_opt
|
||||
|
||||
rmdir "%{dup_state_dir}" 2> /dev/null
|
||||
|
||||
exit 0
|
||||
|
||||
%files
|
||||
%defattr(644,root,root,755)
|
||||
/lib/modules/%{kmod_kernel_version}.%(arch)
|
||||
/etc/depmod.d/%{kmod_name}.conf
|
||||
%doc /usr/share/doc/%{kmod_rpm_name}/greylist.txt
|
||||
%if !0%{kmod_files_package}
|
||||
/etc/dracut.conf.d/kmod-redhat-rtw89_dup85.conf
|
||||
%endif
|
||||
|
||||
%prep
|
||||
%setup -n %{kmod_name}-%{kmod_vendor}-%{kmod_driver_version}
|
||||
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
%patch20 -p1
|
||||
%patch21 -p1
|
||||
%patch22 -p1
|
||||
%patch23 -p1
|
||||
%patch24 -p1
|
||||
%patch25 -p1
|
||||
%patch26 -p1
|
||||
%patch27 -p1
|
||||
%patch28 -p1
|
||||
%patch29 -p1
|
||||
%patch30 -p1
|
||||
%patch31 -p1
|
||||
%patch32 -p1
|
||||
%patch33 -p1
|
||||
%patch34 -p1
|
||||
%patch35 -p1
|
||||
%patch36 -p1
|
||||
%patch37 -p1
|
||||
%patch38 -p1
|
||||
set -- *
|
||||
mkdir source
|
||||
mv "$@" source/
|
||||
mkdir obj
|
||||
|
||||
%build
|
||||
rm -rf obj
|
||||
cp -r source obj
|
||||
|
||||
PWD_PATH="$PWD"
|
||||
%if "%{workaround_no_pwd_rel_path}" != "1"
|
||||
PWD_PATH=$(realpath --relative-to="%{kernel_source}" . 2>/dev/null || echo "$PWD")
|
||||
%endif
|
||||
%{make_build} -C %{kernel_source} V=1 M="$PWD_PATH/obj/%{kmod_kbuild_dir}" \
|
||||
NOSTDINC_FLAGS="-I$PWD_PATH/obj/include -I$PWD_PATH/obj/include/uapi %{nil}" \
|
||||
EXTRA_CFLAGS="%{nil}" \
|
||||
%{nil}
|
||||
# mark modules executable so that strip-to-file can strip them
|
||||
find obj/%{kmod_kbuild_dir} -name "*.ko" -type f -exec chmod u+x '{}' +
|
||||
|
||||
whitelist="/lib/modules/kabi-current/kabi_whitelist_%{_target_cpu}"
|
||||
for modules in $( find obj/%{kmod_kbuild_dir} -name "*.ko" -type f -printf "%{findpat}\n" | sed 's|\.ko$||' | sort -u ) ; do
|
||||
# update depmod.conf
|
||||
module_weak_path=$(echo "$modules" | sed 's/[\/]*[^\/]*$//')
|
||||
if [ -z "$module_weak_path" ]; then
|
||||
module_weak_path=%{name}
|
||||
else
|
||||
module_weak_path=%{name}/$module_weak_path
|
||||
fi
|
||||
echo "override $(echo $modules | sed 's/.*\///')" \
|
||||
"$(echo "%{kmod_kernel_version_dep}" |
|
||||
sed 's/\.[^\.]*$//;
|
||||
s/\([.+?^$\/\\|()\[]\|\]\)/\\\0/g').*" \
|
||||
"weak-updates/$module_weak_path" >> source/depmod.conf
|
||||
|
||||
# update greylist
|
||||
nm -u obj/%{kmod_kbuild_dir}/$modules.ko | sed 's/.*U //' | sed 's/^\.//' | sort -u | while read -r symbol; do
|
||||
grep -q "^\s*$symbol\$" $whitelist || echo "$symbol" >> source/greylist
|
||||
done
|
||||
done
|
||||
sort -u source/greylist | uniq > source/greylist.txt
|
||||
|
||||
%install
|
||||
export INSTALL_MOD_PATH=$RPM_BUILD_ROOT
|
||||
export INSTALL_MOD_DIR=%{kmod_install_path}
|
||||
PWD_PATH="$PWD"
|
||||
%if "%{workaround_no_pwd_rel_path}" != "1"
|
||||
PWD_PATH=$(realpath --relative-to="%{kernel_source}" . 2>/dev/null || echo "$PWD")
|
||||
%endif
|
||||
make -C %{kernel_source} modules_install \
|
||||
M=$PWD_PATH/obj/%{kmod_kbuild_dir}
|
||||
# Cleanup unnecessary kernel-generated module dependency files.
|
||||
find $INSTALL_MOD_PATH/lib/modules -iname 'modules.*' -exec rm {} \;
|
||||
|
||||
install -m 644 -D source/depmod.conf $RPM_BUILD_ROOT/etc/depmod.d/%{kmod_name}.conf
|
||||
install -m 644 -D source/greylist.txt $RPM_BUILD_ROOT/usr/share/doc/%{kmod_rpm_name}/greylist.txt
|
||||
%if 1
|
||||
install -m 644 -D source/firmware/rtw89/rtw8852a_fw_dup85.bin $RPM_BUILD_ROOT/lib/firmware/rtw89/rtw8852a_fw_dup85.bin
|
||||
|
||||
%endif
|
||||
%if 0%{kmod_devel_package}
|
||||
install -m 644 -D $PWD/obj/%{kmod_kbuild_dir}/Module.symvers $RPM_BUILD_ROOT/lib/modules/%{kmod_rpm_name}-%{kmod_driver_version}/build/Module.symvers
|
||||
|
||||
if [ -n "%{kmod_devel_src_paths}" ]; then
|
||||
for i in %{kmod_devel_src_paths}; do
|
||||
mkdir -p "$RPM_BUILD_ROOT/lib/modules/%{kmod_rpm_name}-%{kmod_driver_version}/build/$(dirname "$i")"
|
||||
cp -rv "$PWD/source/$i" \
|
||||
"$RPM_BUILD_ROOT/lib/modules/%{kmod_rpm_name}-%{kmod_driver_version}/build/$i"
|
||||
done
|
||||
fi
|
||||
%endif
|
||||
install -m 664 -D source/extra//etc/dracut.conf.d/kmod-redhat-rtw89_dup85.conf $RPM_BUILD_ROOT//etc/dracut.conf.d/kmod-redhat-rtw89_dup85.conf
|
||||
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%changelog
|
||||
* Wed Feb 09 2022 Eugene Syromiatnikov <esyr@redhat.com> 4.18.0_363_dup8.5-1
|
||||
- 9dc660bf1362f5a22a908e61004498cf7ec063a8
|
||||
- rtw89 kernel module for Driver Update Program
|
||||
- Resolves: #bz2051886
|
Loading…
Reference in new issue