summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ralink/rt2x00/rt2x00link.c
diff options
context:
space:
mode:
authorStanislaw Gruszka <sgruszka@redhat.com>2016-12-19 11:52:57 +0100
committerKalle Valo <kvalo@codeaurora.org>2016-12-30 14:03:41 +0200
commitc7d1c77781f468c639867d324d4e490139cd4c7f (patch)
tree0800a783adfbd65b30a42d2bd91e59a759a91f33 /drivers/net/wireless/ralink/rt2x00/rt2x00link.c
parent31369c323ba0dc839d8a4e5a5727adc76814959c (diff)
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.c5
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.
*/