mt76: add missing lock configuring coverage class
Coverage class callback can potentially run in parallel with other routines (e.g. mt7615_set_channel) that configures timing registers. Run coverage class callback holding mt76 mutex Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
71d4364abd
commit
2cb002e3c2
|
@ -642,8 +642,10 @@ mt7603_set_coverage_class(struct ieee80211_hw *hw, s16 coverage_class)
|
|||
{
|
||||
struct mt7603_dev *dev = hw->priv;
|
||||
|
||||
mutex_lock(&dev->mt76.mutex);
|
||||
dev->coverage_class = max_t(s16, coverage_class, 0);
|
||||
mt7603_mac_set_timing(dev);
|
||||
mutex_unlock(&dev->mt76.mutex);
|
||||
}
|
||||
|
||||
static void mt7603_tx(struct ieee80211_hw *hw,
|
||||
|
|
|
@ -735,9 +735,12 @@ static void
|
|||
mt7615_set_coverage_class(struct ieee80211_hw *hw, s16 coverage_class)
|
||||
{
|
||||
struct mt7615_phy *phy = mt7615_hw_phy(hw);
|
||||
struct mt7615_dev *dev = phy->dev;
|
||||
|
||||
mutex_lock(&dev->mt76.mutex);
|
||||
phy->coverage_class = max_t(s16, coverage_class, 0);
|
||||
mt7615_mac_set_timing(phy);
|
||||
mutex_unlock(&dev->mt76.mutex);
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
|
@ -716,9 +716,12 @@ static void
|
|||
mt7915_set_coverage_class(struct ieee80211_hw *hw, s16 coverage_class)
|
||||
{
|
||||
struct mt7915_phy *phy = mt7915_hw_phy(hw);
|
||||
struct mt7915_dev *dev = phy->dev;
|
||||
|
||||
mutex_lock(&dev->mt76.mutex);
|
||||
phy->coverage_class = max_t(s16, coverage_class, 0);
|
||||
mt7915_mac_set_timing(phy);
|
||||
mutex_unlock(&dev->mt76.mutex);
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
Loading…
Reference in New Issue