diff options
author | Lorenzo Bianconi <lorenzo.bianconi@redhat.com> | 2018-01-09 14:13:11 +0100 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2018-01-24 17:15:33 +0200 |
commit | 2070f3cc2c2cbaba634ef33b42c37baafd80bd2c (patch) | |
tree | f2319eb7f59dad1aff24a7120605e8f316cd47a0 /drivers/net/wireless/mediatek | |
parent | 8c9f6491a313b5b83f6f395b5cd195f261124fe5 (diff) |
mt76x2: dfs: add set_domain handler
Add mt76x2_dfs_set_domain routine in order to properly reconfigure
pattern detector when DFS domain has been changed
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/mediatek')
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt76x2_dfs.c | 13 | ||||
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt76x2_init.c | 2 |
3 files changed, 16 insertions, 1 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.c b/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.c index 1a6282a8b64b..df23ba5ef900 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.c @@ -490,3 +490,16 @@ void mt76x2_dfs_init_detector(struct mt76x2_dev *dev) (unsigned long)dev); } +void mt76x2_dfs_set_domain(struct mt76x2_dev *dev, + enum nl80211_dfs_regions region) +{ + struct mt76x2_dfs_pattern_detector *dfs_pd = &dev->dfs_pd; + + if (dfs_pd->region != region) { + tasklet_disable(&dfs_pd->dfs_tasklet); + dfs_pd->region = region; + mt76x2_dfs_init_params(dev); + tasklet_enable(&dfs_pd->dfs_tasklet); + } +} + diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h b/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h index 9ac69b6a116d..8dbc783cc6bc 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h +++ b/drivers/net/wireless/mediatek/mt76/mt76x2_dfs.h @@ -76,5 +76,7 @@ struct mt76x2_dfs_pattern_detector { void mt76x2_dfs_init_params(struct mt76x2_dev *dev); void mt76x2_dfs_init_detector(struct mt76x2_dev *dev); void mt76x2_dfs_adjust_agc(struct mt76x2_dev *dev); +void mt76x2_dfs_set_domain(struct mt76x2_dev *dev, + enum nl80211_dfs_regions region); #endif /* __MT76x2_DFS_H */ diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2_init.c b/drivers/net/wireless/mediatek/mt76/mt76x2_init.c index 4373a2ba5143..9f20a308ff76 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x2_init.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x2_init.c @@ -652,7 +652,7 @@ static void mt76x2_regd_notifier(struct wiphy *wiphy, struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); struct mt76x2_dev *dev = hw->priv; - dev->dfs_pd.region = request->dfs_region; + mt76x2_dfs_set_domain(dev, request->dfs_region); } #define CCK_RATE(_idx, _rate) { \ |