Skip to content

Commit 1f8dd56

Browse files
committed
wifi: mt76: mt7996: move all debugfs files to the primary phy
Preparation for single-wiphy support Link: https://patch.msgid.link/[email protected] Signed-off-by: Felix Fietkau <[email protected]>
1 parent a0facfc commit 1f8dd56

File tree

3 files changed

+89
-63
lines changed

3 files changed

+89
-63
lines changed

drivers/net/wireless/mediatek/mt76/mt7996/debugfs.c

Lines changed: 87 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,10 @@ static ssize_t
5151
mt7996_sys_recovery_set(struct file *file, const char __user *user_buf,
5252
size_t count, loff_t *ppos)
5353
{
54-
struct mt7996_phy *phy = file->private_data;
55-
struct mt7996_dev *dev = phy->dev;
56-
bool band = phy->mt76->band_idx;
57-
char buf[16];
54+
struct mt7996_dev *dev = file->private_data;
55+
char buf[16], *sep;
5856
int ret = 0;
59-
u16 val;
57+
u16 band, val;
6058

6159
if (count >= sizeof(buf))
6260
return -EINVAL;
@@ -69,21 +67,26 @@ mt7996_sys_recovery_set(struct file *file, const char __user *user_buf,
6967
else
7068
buf[count] = '\0';
7169

72-
if (kstrtou16(buf, 0, &val))
70+
sep = strchr(buf, ',');
71+
if (!sep)
72+
return -EINVAL;
73+
74+
*sep = 0;
75+
if (kstrtou16(buf, 0, &band) || kstrtou16(sep + 1, 0, &val))
7376
return -EINVAL;
7477

7578
switch (val) {
7679
/*
77-
* 0: grab firmware current SER state.
78-
* 1: trigger & enable system error L1 recovery.
79-
* 2: trigger & enable system error L2 recovery.
80-
* 3: trigger & enable system error L3 rx abort.
81-
* 4: trigger & enable system error L3 tx abort
82-
* 5: trigger & enable system error L3 tx disable.
83-
* 6: trigger & enable system error L3 bf recovery.
84-
* 7: trigger & enable system error L4 mdp recovery.
85-
* 8: trigger & enable system error full recovery.
86-
* 9: trigger firmware crash.
80+
* <band>,0: grab firmware current SER state.
81+
* <band>,1: trigger & enable system error L1 recovery.
82+
* <band>,2: trigger & enable system error L2 recovery.
83+
* <band>,3: trigger & enable system error L3 rx abort.
84+
* <band>,4: trigger & enable system error L3 tx abort
85+
* <band>,5: trigger & enable system error L3 tx disable.
86+
* <band>,6: trigger & enable system error L3 bf recovery.
87+
* <band>,7: trigger & enable system error L4 mdp recovery.
88+
* <band>,8: trigger & enable system error full recovery.
89+
* <band>,9: trigger firmware crash.
8790
*/
8891
case UNI_CMD_SER_QUERY:
8992
ret = mt7996_mcu_set_ser(dev, UNI_CMD_SER_QUERY, 0, band);
@@ -126,8 +129,7 @@ static ssize_t
126129
mt7996_sys_recovery_get(struct file *file, char __user *user_buf,
127130
size_t count, loff_t *ppos)
128131
{
129-
struct mt7996_phy *phy = file->private_data;
130-
struct mt7996_dev *dev = phy->dev;
132+
struct mt7996_dev *dev = file->private_data;
131133
char *buff;
132134
int desc = 0;
133135
ssize_t ret;
@@ -141,25 +143,25 @@ mt7996_sys_recovery_get(struct file *file, char __user *user_buf,
141143
desc += scnprintf(buff + desc, bufsz - desc,
142144
"Please echo the correct value ...\n");
143145
desc += scnprintf(buff + desc, bufsz - desc,
144-
"0: grab firmware transient SER state\n");
146+
"<band>,0: grab firmware transient SER state\n");
145147
desc += scnprintf(buff + desc, bufsz - desc,
146-
"1: trigger system error L1 recovery\n");
148+
"<band>,1: trigger system error L1 recovery\n");
147149
desc += scnprintf(buff + desc, bufsz - desc,
148-
"2: trigger system error L2 recovery\n");
150+
"<band>,2: trigger system error L2 recovery\n");
149151
desc += scnprintf(buff + desc, bufsz - desc,
150-
"3: trigger system error L3 rx abort\n");
152+
"<band>,3: trigger system error L3 rx abort\n");
151153
desc += scnprintf(buff + desc, bufsz - desc,
152-
"4: trigger system error L3 tx abort\n");
154+
"<band>,4: trigger system error L3 tx abort\n");
153155
desc += scnprintf(buff + desc, bufsz - desc,
154-
"5: trigger system error L3 tx disable\n");
156+
"<band>,5: trigger system error L3 tx disable\n");
155157
desc += scnprintf(buff + desc, bufsz - desc,
156-
"6: trigger system error L3 bf recovery\n");
158+
"<band>,6: trigger system error L3 bf recovery\n");
157159
desc += scnprintf(buff + desc, bufsz - desc,
158-
"7: trigger system error L4 mdp recovery\n");
160+
"<band>,7: trigger system error L4 mdp recovery\n");
159161
desc += scnprintf(buff + desc, bufsz - desc,
160-
"8: trigger system error full recovery\n");
162+
"<band>,8: trigger system error full recovery\n");
161163
desc += scnprintf(buff + desc, bufsz - desc,
162-
"9: trigger firmware crash\n");
164+
"<band>,9: trigger firmware crash\n");
163165

164166
/* SER statistics */
165167
desc += scnprintf(buff + desc, bufsz - desc,
@@ -524,16 +526,12 @@ mt7996_txbf_stat_read_phy(struct mt7996_phy *phy, struct seq_file *s)
524526
seq_puts(s, "\n");
525527
}
526528

527-
static int
528-
mt7996_tx_stats_show(struct seq_file *file, void *data)
529+
static void
530+
mt7996_tx_stats_show_phy(struct seq_file *file, struct mt7996_phy *phy)
529531
{
530-
struct mt7996_phy *phy = file->private;
531-
struct mt7996_dev *dev = phy->dev;
532532
struct mt76_mib_stats *mib = &phy->mib;
533-
int i;
534533
u32 attempts, success, per;
535-
536-
mutex_lock(&dev->mt76.mutex);
534+
int i;
537535

538536
mt7996_mac_update_stats(phy);
539537
mt7996_ampdu_stat_read_phy(phy, file);
@@ -558,6 +556,23 @@ mt7996_tx_stats_show(struct seq_file *file, void *data)
558556
else
559557
seq_puts(file, "\n");
560558
}
559+
}
560+
561+
static int
562+
mt7996_tx_stats_show(struct seq_file *file, void *data)
563+
{
564+
struct mt7996_dev *dev = file->private;
565+
struct mt7996_phy *phy = &dev->phy;
566+
567+
mutex_lock(&dev->mt76.mutex);
568+
569+
mt7996_tx_stats_show_phy(file, phy);
570+
phy = mt7996_phy2(dev);
571+
if (phy)
572+
mt7996_tx_stats_show_phy(file, phy);
573+
phy = mt7996_phy3(dev);
574+
if (phy)
575+
mt7996_tx_stats_show_phy(file, phy);
561576

562577
mutex_unlock(&dev->mt76.mutex);
563578

@@ -628,8 +643,8 @@ mt7996_sta_hw_queue_read(void *data, struct ieee80211_sta *sta)
628643
static int
629644
mt7996_hw_queues_show(struct seq_file *file, void *data)
630645
{
631-
struct mt7996_phy *phy = file->private;
632-
struct mt7996_dev *dev = phy->dev;
646+
struct mt7996_dev *dev = file->private;
647+
struct mt7996_phy *phy = &dev->phy;
633648
static const struct hw_queue_map ple_queue_map[] = {
634649
{ "CPU_Q0", 0, 1, MT_CTX0 },
635650
{ "CPU_Q1", 1, 1, MT_CTX0 + 1 },
@@ -685,6 +700,15 @@ mt7996_hw_queues_show(struct seq_file *file, void *data)
685700
/* iterate per-sta ple queue */
686701
ieee80211_iterate_stations_atomic(phy->mt76->hw,
687702
mt7996_sta_hw_queue_read, file);
703+
phy = mt7996_phy2(dev);
704+
if (phy)
705+
ieee80211_iterate_stations_atomic(phy->mt76->hw,
706+
mt7996_sta_hw_queue_read, file);
707+
phy = mt7996_phy3(dev);
708+
if (phy)
709+
ieee80211_iterate_stations_atomic(phy->mt76->hw,
710+
mt7996_sta_hw_queue_read, file);
711+
688712
/* pse queue */
689713
seq_puts(file, "PSE non-empty queue info:\n");
690714
mt7996_hw_queue_read(file, ARRAY_SIZE(pse_queue_map),
@@ -698,19 +722,29 @@ DEFINE_SHOW_ATTRIBUTE(mt7996_hw_queues);
698722
static int
699723
mt7996_xmit_queues_show(struct seq_file *file, void *data)
700724
{
701-
struct mt7996_phy *phy = file->private;
702-
struct mt7996_dev *dev = phy->dev;
725+
struct mt7996_dev *dev = file->private;
726+
struct mt7996_phy *phy;
703727
struct {
704728
struct mt76_queue *q;
705729
char *queue;
706730
} queue_map[] = {
707-
{ phy->mt76->q_tx[MT_TXQ_BE], " MAIN" },
731+
{ dev->mphy.q_tx[MT_TXQ_BE], " MAIN0" },
732+
{ NULL, " MAIN1" },
733+
{ NULL, " MAIN2" },
708734
{ dev->mt76.q_mcu[MT_MCUQ_WM], " MCUWM" },
709735
{ dev->mt76.q_mcu[MT_MCUQ_WA], " MCUWA" },
710736
{ dev->mt76.q_mcu[MT_MCUQ_FWDL], "MCUFWDL" },
711737
};
712738
int i;
713739

740+
phy = mt7996_phy2(dev);
741+
if (phy)
742+
queue_map[1].q = phy->mt76->q_tx[MT_TXQ_BE];
743+
744+
phy = mt7996_phy3(dev);
745+
if (phy)
746+
queue_map[2].q = phy->mt76->q_tx[MT_TXQ_BE];
747+
714748
seq_puts(file, " queue | hw-queued | head | tail |\n");
715749
for (i = 0; i < ARRAY_SIZE(queue_map); i++) {
716750
struct mt76_queue *q = queue_map[i].q;
@@ -785,20 +819,20 @@ mt7996_rf_regval_set(void *data, u64 val)
785819
DEFINE_DEBUGFS_ATTRIBUTE(fops_rf_regval, mt7996_rf_regval_get,
786820
mt7996_rf_regval_set, "0x%08llx\n");
787821

788-
int mt7996_init_debugfs(struct mt7996_phy *phy)
822+
int mt7996_init_debugfs(struct mt7996_dev *dev)
789823
{
790-
struct mt7996_dev *dev = phy->dev;
791824
struct dentry *dir;
792825

793-
dir = mt76_register_debugfs_fops(phy->mt76, NULL);
826+
dir = mt76_register_debugfs_fops(&dev->mphy, NULL);
794827
if (!dir)
795828
return -ENOMEM;
796-
debugfs_create_file("hw-queues", 0400, dir, phy,
829+
830+
debugfs_create_file("hw-queues", 0400, dir, dev,
797831
&mt7996_hw_queues_fops);
798-
debugfs_create_file("xmit-queues", 0400, dir, phy,
832+
debugfs_create_file("xmit-queues", 0400, dir, dev,
799833
&mt7996_xmit_queues_fops);
800-
debugfs_create_file("tx_stats", 0400, dir, phy, &mt7996_tx_stats_fops);
801-
debugfs_create_file("sys_recovery", 0600, dir, phy,
834+
debugfs_create_file("tx_stats", 0400, dir, dev, &mt7996_tx_stats_fops);
835+
debugfs_create_file("sys_recovery", 0600, dir, dev,
802836
&mt7996_sys_recovery_ops);
803837
debugfs_create_file("fw_debug_wm", 0600, dir, dev, &fops_fw_debug_wm);
804838
debugfs_create_file("fw_debug_wa", 0600, dir, dev, &fops_fw_debug_wa);
@@ -812,17 +846,13 @@ int mt7996_init_debugfs(struct mt7996_phy *phy)
812846
mt7996_twt_stats);
813847
debugfs_create_file("rf_regval", 0600, dir, dev, &fops_rf_regval);
814848

815-
if (phy->mt76->cap.has_5ghz) {
816-
debugfs_create_u32("dfs_hw_pattern", 0400, dir,
817-
&dev->hw_pattern);
818-
debugfs_create_file("radar_trigger", 0200, dir, dev,
819-
&fops_radar_trigger);
820-
debugfs_create_devm_seqfile(dev->mt76.dev, "rdd_monitor", dir,
821-
mt7996_rdd_monitor);
822-
}
849+
debugfs_create_u32("dfs_hw_pattern", 0400, dir, &dev->hw_pattern);
850+
debugfs_create_file("radar_trigger", 0200, dir, dev,
851+
&fops_radar_trigger);
852+
debugfs_create_devm_seqfile(dev->mt76.dev, "rdd_monitor", dir,
853+
mt7996_rdd_monitor);
823854

824-
if (phy == &dev->phy)
825-
dev->debugfs_dir = dir;
855+
dev->debugfs_dir = dir;
826856

827857
return 0;
828858
}

drivers/net/wireless/mediatek/mt76/mt7996/init.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -630,10 +630,6 @@ static int mt7996_register_phy(struct mt7996_dev *dev, struct mt7996_phy *phy,
630630
if (ret)
631631
goto error;
632632

633-
ret = mt7996_init_debugfs(phy);
634-
if (ret)
635-
goto error;
636-
637633
if (wed == &dev->mt76.mmio.wed_hif2 && mtk_wed_device_active(wed)) {
638634
u32 irq_mask = dev->mt76.mmio.irqmask | MT_INT_TX_DONE_BAND2;
639635

@@ -1458,7 +1454,7 @@ int mt7996_register_device(struct mt7996_dev *dev)
14581454

14591455
dev->recovery.hw_init_done = true;
14601456

1461-
ret = mt7996_init_debugfs(&dev->phy);
1457+
ret = mt7996_init_debugfs(dev);
14621458
if (ret)
14631459
goto error;
14641460

drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ int mt7996_dfs_init_radar_detector(struct mt7996_phy *phy);
680680
void mt7996_set_stream_he_eht_caps(struct mt7996_phy *phy);
681681
void mt7996_set_stream_vht_txbf_caps(struct mt7996_phy *phy);
682682
void mt7996_update_channel(struct mt76_phy *mphy);
683-
int mt7996_init_debugfs(struct mt7996_phy *phy);
683+
int mt7996_init_debugfs(struct mt7996_dev *dev);
684684
void mt7996_debugfs_rx_fw_monitor(struct mt7996_dev *dev, const void *data, int len);
685685
bool mt7996_debugfs_rx_log(struct mt7996_dev *dev, const void *data, int len);
686686
int mt7996_mcu_add_key(struct mt76_dev *dev, struct ieee80211_vif *vif,

0 commit comments

Comments
 (0)