summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/realtek/rtw89/debug.c
diff options
context:
space:
mode:
authorZong-Zhe Yang <kevin_yang@realtek.com>2024-09-16 13:31:55 +0800
committerPing-Ke Shih <pkshih@realtek.com>2024-09-24 09:16:17 +0800
commit04911c0fe874bb44e8ee0f5896a5a10c37a14cf2 (patch)
tree9d42b6f1cea80c6b4c7c48d340e8baf9c6be8d7c /drivers/net/wireless/realtek/rtw89/debug.c
parent89bac818bbd2ccced29d4b888ba1a4cf3e1ede4e (diff)
wifi: rtw89: read link_sta corresponding to the link
Tweak code to not always access sta->deflink directly. Instead, according to link_id, read target link_sta from sta->link[]. For now, rtwsta_link->link_id keeps 0. When driver starts to support MLO, the link_id will be assigned. Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/20240916053158.47350-5-pkshih@realtek.com
Diffstat (limited to 'drivers/net/wireless/realtek/rtw89/debug.c')
-rw-r--r--drivers/net/wireless/realtek/rtw89/debug.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/drivers/net/wireless/realtek/rtw89/debug.c b/drivers/net/wireless/realtek/rtw89/debug.c
index f09f1a251b16..cc7aaf6fa31f 100644
--- a/drivers/net/wireless/realtek/rtw89/debug.c
+++ b/drivers/net/wireless/realtek/rtw89/debug.c
@@ -3526,11 +3526,20 @@ static void rtw89_sta_info_get_iter(void *data, struct ieee80211_sta *sta)
struct rtw89_hal *hal = &rtwdev->hal;
u8 ant_num = hal->ant_diversity ? 2 : rtwdev->chip->rf_path_num;
bool ant_asterisk = hal->tx_path_diversity || hal->ant_diversity;
+ struct ieee80211_link_sta *link_sta;
u8 evm_min, evm_max, evm_1ss;
+ u16 max_rc_amsdu_len;
u8 rssi;
u8 snr;
int i;
+ rcu_read_lock();
+
+ link_sta = rtw89_sta_rcu_dereference_link(rtwsta_link, true);
+ max_rc_amsdu_len = link_sta->agg.max_rc_amsdu_len;
+
+ rcu_read_unlock();
+
seq_printf(m, "TX rate [%d]: ", rtwsta_link->mac_id);
if (rate->flags & RATE_INFO_FLAGS_MCS)
@@ -3553,7 +3562,7 @@ static void rtw89_sta_info_get_iter(void *data, struct ieee80211_sta *sta)
seq_printf(m, " BW:%u", rtw89_rate_info_bw_to_mhz(rate->bw));
seq_printf(m, "\t(hw_rate=0x%x)", rtwsta_link->ra_report.hw_rate);
seq_printf(m, "\t==> agg_wait=%d (%d)\n", rtwsta_link->max_agg_wait,
- sta->deflink.agg.max_rc_amsdu_len);
+ max_rc_amsdu_len);
seq_printf(m, "RX rate [%d]: ", rtwsta_link->mac_id);
@@ -3777,9 +3786,17 @@ static void rtw89_sta_ids_get_iter(void *data, struct ieee80211_sta *sta)
struct rtw89_sta_link *rtwsta_link = (struct rtw89_sta_link *)sta->drv_priv;
struct rtw89_dev *rtwdev = rtwsta_link->rtwdev;
struct seq_file *m = (struct seq_file *)data;
+ struct ieee80211_link_sta *link_sta;
+
+ rcu_read_lock();
- seq_printf(m, "STA [%d] %pM %s\n", rtwsta_link->mac_id, sta->addr,
+ link_sta = rtw89_sta_rcu_dereference_link(rtwsta_link, true);
+
+ seq_printf(m, "STA [%d] %pM %s\n", rtwsta_link->mac_id, link_sta->addr,
sta->tdls ? "(TDLS)" : "");
+
+ rcu_read_unlock();
+
rtw89_dump_addr_cam(m, rtwdev, &rtwsta_link->addr_cam);
rtw89_dump_ba_cam(m, rtwsta_link);
}