diff options
author | Stanislaw Gruszka <sgruszka@redhat.com> | 2016-12-19 13:52:57 +0300 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2016-12-30 15:03:41 +0300 |
commit | c7d1c77781f468c639867d324d4e490139cd4c7f (patch) | |
tree | 0800a783adfbd65b30a42d2bd91e59a759a91f33 /drivers/net/wireless/ralink/rt2x00/rt2x00link.c | |
parent | 31369c323ba0dc839d8a4e5a5727adc76814959c (diff) | |
download | linux-c7d1c77781f468c639867d324d4e490139cd4c7f.tar.xz |
rt2x00: add mutex to synchronize config and link tuner
Do not perform mac80211 config and link_tuner at the same time,
this can possibly result in wrong RF or BBP configuration.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/ralink/rt2x00/rt2x00link.c')
-rw-r--r-- | drivers/net/wireless/ralink/rt2x00/rt2x00link.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00link.c b/drivers/net/wireless/ralink/rt2x00/rt2x00link.c index 73cbf23b17ef..2010a7715f21 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00link.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00link.c @@ -363,6 +363,9 @@ static void rt2x00link_tuner(struct work_struct *work) test_bit(DEVICE_STATE_SCANNING, &rt2x00dev->flags)) return; + /* Do not race with rt2x00mac_config(). */ + mutex_lock(&rt2x00dev->conf_mutex); + if (rt2x00dev->intf_sta_count) rt2x00link_tuner_sta(rt2x00dev, link); @@ -375,6 +378,8 @@ static void rt2x00link_tuner(struct work_struct *work) (link->count % (VCO_SECONDS / LINK_TUNE_SECONDS)) == 0) rt2x00dev->ops->lib->vco_calibration(rt2x00dev); + mutex_unlock(&rt2x00dev->conf_mutex); + /* * Increase tuner counter, and reschedule the next link tuner run. */ |