You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
3.8 KiB
115 lines
3.8 KiB
1 year ago
|
From 310410705b2c19a4fea9911a2e8bf0881522719b Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||
|
Date: Wed, 24 May 2023 15:00:39 +0200
|
||
|
Subject: [PATCH 132/142] wifi: rtw89: add use of pkt_list offload to debug
|
||
|
entry
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
Bugzilla: https://bugzilla.redhat.com/2207499
|
||
|
|
||
|
commit 5da5ba7e6ec4f13c2abba8de3578a3c197925243
|
||
|
Author: Ping-Ke Shih <pkshih@realtek.com>
|
||
|
Date: Mon Jan 23 14:53:58 2023 +0800
|
||
|
|
||
|
wifi: rtw89: add use of pkt_list offload to debug entry
|
||
|
|
||
|
Driver can prepare pkt_list for firmware that only uses them to send out
|
||
|
the packets in specific situations. To understand the usage of current
|
||
|
status, and to check if there is leakage problem, dump bitmap and the
|
||
|
indices used by certain function.
|
||
|
|
||
|
An example looks like:
|
||
|
|
||
|
map:
|
||
|
...
|
||
|
pkt_ofld: 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...
|
||
|
[SCAN 0]: 3
|
||
|
[SCAN 1]: 4
|
||
|
[SCAN 3]: 5
|
||
|
VIF [0] xx:xx:xx:xx:xx:xx
|
||
|
...
|
||
|
pkt_ofld[GENERAL]: 0 1 2
|
||
|
|
||
|
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||
|
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||
|
Link: https://lore.kernel.org/r/20230123065401.14174-4-pkshih@realtek.com
|
||
|
|
||
|
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||
|
---
|
||
|
drivers/net/wireless/realtek/rtw89/debug.c | 36 ++++++++++++++++++++++++++++++
|
||
|
1 file changed, 36 insertions(+)
|
||
|
|
||
|
diff --git a/drivers/net/wireless/realtek/rtw89/debug.c b/drivers/net/wireless/realtek/rtw89/debug.c
|
||
|
index 6730eea930ece..0e0e1483c099b 100644
|
||
|
--- a/drivers/net/wireless/realtek/rtw89/debug.c
|
||
|
+++ b/drivers/net/wireless/realtek/rtw89/debug.c
|
||
|
@@ -3354,6 +3354,31 @@ static void rtw89_dump_addr_cam(struct seq_file *m,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+__printf(3, 4)
|
||
|
+static void rtw89_dump_pkt_offload(struct seq_file *m, struct list_head *pkt_list,
|
||
|
+ const char *fmt, ...)
|
||
|
+{
|
||
|
+ struct rtw89_pktofld_info *info;
|
||
|
+ struct va_format vaf;
|
||
|
+ va_list args;
|
||
|
+
|
||
|
+ if (list_empty(pkt_list))
|
||
|
+ return;
|
||
|
+
|
||
|
+ va_start(args, fmt);
|
||
|
+ vaf.va = &args;
|
||
|
+ vaf.fmt = fmt;
|
||
|
+
|
||
|
+ seq_printf(m, "%pV", &vaf);
|
||
|
+
|
||
|
+ va_end(args);
|
||
|
+
|
||
|
+ list_for_each_entry(info, pkt_list, list)
|
||
|
+ seq_printf(m, "%d ", info->id);
|
||
|
+
|
||
|
+ seq_puts(m, "\n");
|
||
|
+}
|
||
|
+
|
||
|
static
|
||
|
void rtw89_vif_ids_get_iter(void *data, u8 *mac, struct ieee80211_vif *vif)
|
||
|
{
|
||
|
@@ -3364,6 +3389,7 @@ void rtw89_vif_ids_get_iter(void *data, u8 *mac, struct ieee80211_vif *vif)
|
||
|
seq_printf(m, "VIF [%d] %pM\n", rtwvif->mac_id, rtwvif->mac_addr);
|
||
|
seq_printf(m, "\tbssid_cam_idx=%u\n", bssid_cam->bssid_cam_idx);
|
||
|
rtw89_dump_addr_cam(m, &rtwvif->addr_cam);
|
||
|
+ rtw89_dump_pkt_offload(m, &rtwvif->general_pkt_list, "\tpkt_ofld[GENERAL]: ");
|
||
|
}
|
||
|
|
||
|
static void rtw89_dump_ba_cam(struct seq_file *m, struct rtw89_sta *rtwsta)
|
||
|
@@ -3402,6 +3428,7 @@ static int rtw89_debug_priv_stations_get(struct seq_file *m, void *v)
|
||
|
struct rtw89_debugfs_priv *debugfs_priv = m->private;
|
||
|
struct rtw89_dev *rtwdev = debugfs_priv->rtwdev;
|
||
|
struct rtw89_cam_info *cam_info = &rtwdev->cam_info;
|
||
|
+ u8 idx;
|
||
|
|
||
|
mutex_lock(&rtwdev->mutex);
|
||
|
|
||
|
@@ -3416,6 +3443,15 @@ static int rtw89_debug_priv_stations_get(struct seq_file *m, void *v)
|
||
|
cam_info->sec_cam_map);
|
||
|
seq_printf(m, "\tba_cam: %*ph\n", (int)sizeof(cam_info->ba_cam_map),
|
||
|
cam_info->ba_cam_map);
|
||
|
+ seq_printf(m, "\tpkt_ofld: %*ph\n", (int)sizeof(rtwdev->pkt_offload),
|
||
|
+ rtwdev->pkt_offload);
|
||
|
+
|
||
|
+ for (idx = NL80211_BAND_2GHZ; idx < NUM_NL80211_BANDS; idx++) {
|
||
|
+ if (!(rtwdev->chip->support_bands & BIT(idx)))
|
||
|
+ continue;
|
||
|
+ rtw89_dump_pkt_offload(m, &rtwdev->scan_info.pkt_list[idx],
|
||
|
+ "\t\t[SCAN %u]: ", idx);
|
||
|
+ }
|
||
|
|
||
|
ieee80211_iterate_active_interfaces_atomic(rtwdev->hw,
|
||
|
IEEE80211_IFACE_ITER_NORMAL, rtw89_vif_ids_get_iter, m);
|
||
|
--
|
||
|
2.13.6
|
||
|
|