Skip to content

Commit

Permalink
mt76: mt76x02: disable ED/CCA by default
Browse files Browse the repository at this point in the history
This feature has been reported to cause stability issues on several systems.
Disable it until it has been fixed and verified. It can still be enabled
through debugfs

Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
Felix Fietkau committed Mar 7, 2019
1 parent ffc9a7f commit 643749d
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
1 change: 1 addition & 0 deletions drivers/net/wireless/mediatek/mt76/mt76x02.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ struct mt76x02_dev {
unsigned long ed_trigger_timeout;
bool ed_tx_blocked;
bool ed_monitor;
u8 ed_monitor_enabled;
u8 ed_monitor_learning;
u8 ed_trigger;
u8 ed_silent;
Expand Down
27 changes: 27 additions & 0 deletions drivers/net/wireless/mediatek/mt76/mt76x02_debugfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,32 @@ static int read_agc(struct seq_file *file, void *data)
return 0;
}

static int
mt76_edcca_set(void *data, u64 val)
{
struct mt76x02_dev *dev = data;
enum nl80211_dfs_regions region = dev->dfs_pd.region;

dev->ed_monitor_enabled = !!val;
dev->ed_monitor = dev->ed_monitor_enabled &&
region == NL80211_DFS_ETSI;
mt76x02_edcca_init(dev, true);

return 0;
}

static int
mt76_edcca_get(void *data, u64 *val)
{
struct mt76x02_dev *dev = data;

*val = dev->ed_monitor_enabled;
return 0;
}

DEFINE_DEBUGFS_ATTRIBUTE(fops_edcca, mt76_edcca_get, mt76_edcca_set,
"%lld\n");

void mt76x02_init_debugfs(struct mt76x02_dev *dev)
{
struct dentry *dir;
Expand All @@ -127,6 +153,7 @@ void mt76x02_init_debugfs(struct mt76x02_dev *dev)
debugfs_create_u8("temperature", 0400, dir, &dev->cal.temp);
debugfs_create_bool("tpc", 0600, dir, &dev->enable_tpc);

debugfs_create_file("edcca", 0400, dir, dev, &fops_edcca);
debugfs_create_file("ampdu_stat", 0400, dir, dev, &fops_ampdu_stat);
debugfs_create_file("dfs_stats", 0400, dir, dev, &fops_dfs_stat);
debugfs_create_devm_seqfile(dev->mt76.dev, "txpower", dir,
Expand Down
3 changes: 2 additions & 1 deletion drivers/net/wireless/mediatek/mt76/mt76x02_dfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -885,7 +885,8 @@ mt76x02_dfs_set_domain(struct mt76x02_dev *dev,
if (dfs_pd->region != region) {
tasklet_disable(&dfs_pd->dfs_tasklet);

dev->ed_monitor = region == NL80211_DFS_ETSI;
dev->ed_monitor = dev->ed_monitor_enabled &&
region == NL80211_DFS_ETSI;
mt76x02_edcca_init(dev, true);

dfs_pd->region = region;
Expand Down

0 comments on commit 643749d

Please sign in to comment.