diff options
author | Felix Fietkau <nbd@nbd.name> | 2019-02-25 19:25:38 +0300 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2019-02-26 12:28:19 +0300 |
commit | 4606a26c0c51d23401a00d787aa61e508f3e14a7 (patch) | |
tree | aae009235a79a5032217e4104922aeb76c4bcd17 /drivers/net/wireless/mediatek/mt76/mt76x0/phy.c | |
parent | 72e5d479b8de4a3b3cbc01f9fcc4a6936f82414f (diff) | |
download | linux-4606a26c0c51d23401a00d787aa61e508f3e14a7.tar.xz |
mt76: mt76x02: fix ED/CCA enabling/disabling
ED/CCA needs to be disable before stopping the MAC to avoid hangs from tx
being blocked. It must only be enabled again after the MAC has been started
again.
In many places this wasn't done properly, so fix this by always clearing
the relevant ED/CCA bits in mt76x2_mac_stop and set it up again after
channel change or calibration is done
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mt76x0/phy.c')
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt76x0/phy.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x0/phy.c b/drivers/net/wireless/mediatek/mt76/mt76x0/phy.c index 3467a32f5fda..1fd22eb841c3 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x0/phy.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x0/phy.c @@ -1007,17 +1007,13 @@ int mt76x0_phy_set_channel(struct mt76x02_dev *dev, /* enable vco */ mt76x0_rf_set(dev, MT_RF(0, 4), BIT(7)); - if (scan) { - mt76x02_edcca_init(dev, false); + if (scan) return 0; - } mt76x02_init_agc_gain(dev); mt76x0_phy_calibrate(dev, false); mt76x0_phy_set_txpower(dev); - mt76x02_edcca_init(dev, true); - ieee80211_queue_delayed_work(dev->mt76.hw, &dev->cal_work, MT_CALIBRATE_INTERVAL); |