--- /dev/null
+From 473f0a763d2c7cd68a6dedf51e7d81e8f58f78ac Mon Sep 17 00:00:00 2001
+From: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
+Date: Fri, 7 Sep 2018 23:13:12 +0200
+Subject: mt76x0: run vco calibration for each channel configuration
+
+From: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
+
+commit 473f0a763d2c7cd68a6dedf51e7d81e8f58f78ac upstream.
+
+According to vendor sdk, vco calibration has to be executed
+for each channel configuration whereas mcu calibration has to be
+performed during channel scanning. This patch fixes the mt76x0
+monitor mode issue since in that configuration vco calibration
+was never executed
+
+Fixes: 10de7a8b4ab9 ("mt76x0: phy files")
+Tested-by: Sid Hayn <sidhayn@gmail.com>
+Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+Cc: Stanislaw Gruszka <sgruszka@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/mediatek/mt76/mt76x0/phy.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/net/wireless/mediatek/mt76/mt76x0/phy.c
++++ b/drivers/net/wireless/mediatek/mt76/mt76x0/phy.c
+@@ -757,10 +757,10 @@ __mt76x0_phy_set_channel(struct mt76x0_d
+ /* Vendor driver don't do it */
+ /* mt76x0_phy_set_tx_power(dev, channel, rf_bw_band); */
+
++ mt76x0_vco_cal(dev, channel);
+ if (scan)
+- mt76x0_vco_cal(dev, channel);
++ mt76x0_mcu_calibrate(dev, MCU_CAL_RXDCOC, 1);
+
+- mt76x0_mcu_calibrate(dev, MCU_CAL_RXDCOC, 1);
+ mt76x0_phy_set_chan_pwr(dev, channel);
+
+ dev->mt76.chandef = *chandef;