[SRU][R][PATCH 1/1] UBUNTU: SAUCE: Revert "wifi: mt76: mt7925: add rfkill_poll for hardware rfkill"

AceLan Kao acelan.kao at canonical.com
Mon Jun 29 09:47:42 UTC 2026


From: "Chia-Lin Kao (AceLan)" <acelan.kao at canonical.com>

BugLink: https://bugs.launchpad.net/bugs/2158229

This reverts commit e54b870212c079bef4ff61238f8c1278a14d1863.

The rfkill polling feature on the MT7925 module causes the Wi-Fi card to
be incorrectly reported as hard blocked on various systems. While this
was resolved by a firmware update on some devices, new hardware is
still affected.

Instead of continuously adding DMI quirks for each new machine, revert the
polling feature entirely until MediaTek provides a proper fix.

Signed-off-by: Chia-Lin Kao (AceLan) <acelan.kao at canonical.com>
---
 .../wireless/mediatek/mt76/mt76_connac_mcu.h  |  1 -
 .../net/wireless/mediatek/mt76/mt7925/main.c  | 16 --------
 .../net/wireless/mediatek/mt76/mt7925/mcu.c   | 37 -------------------
 .../wireless/mediatek/mt76/mt7925/mt7925.h    |  1 -
 .../net/wireless/mediatek/mt76/mt7925/pci.c   |  4 --
 5 files changed, 59 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h
index 8d59cf43f0e2..e87feb035006 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h
@@ -1308,7 +1308,6 @@ enum {
 	MCU_UNI_CMD_PER_STA_INFO = 0x6d,
 	MCU_UNI_CMD_ALL_STA_INFO = 0x6e,
 	MCU_UNI_CMD_ASSERT_DUMP = 0x6f,
-	MCU_UNI_CMD_RADIO_STATUS = 0x80,
 	MCU_UNI_CMD_SDO = 0x88,
 };
 
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net/wireless/mediatek/mt76/mt7925/main.c
index fec54d5f4eaf..f9df43684a85 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c
@@ -332,9 +332,6 @@ int __mt7925_start(struct mt792x_phy *phy)
 	ieee80211_queue_delayed_work(mphy->hw, &mphy->mac_work,
 				     MT792x_WATCHDOG_TIME);
 
-	if (phy->chip_cap & MT792x_CHIP_CAP_WF_RF_PIN_CTRL_EVT_EN)
-		wiphy_rfkill_start_polling(mphy->hw->wiphy);
-
 	return 0;
 }
 EXPORT_SYMBOL_GPL(__mt7925_start);
@@ -2144,18 +2141,6 @@ static void mt7925_unassign_vif_chanctx(struct ieee80211_hw *hw,
 	mutex_unlock(&dev->mt76.mutex);
 }
 
-static void mt7925_rfkill_poll(struct ieee80211_hw *hw)
-{
-	struct mt792x_phy *phy = mt792x_hw_phy(hw);
-	int ret;
-
-	mt792x_mutex_acquire(phy->dev);
-	ret = mt7925_mcu_wf_rf_pin_ctrl(phy);
-	mt792x_mutex_release(phy->dev);
-
-	wiphy_rfkill_set_hw_state(hw->wiphy, ret == 0);
-}
-
 const struct ieee80211_ops mt7925_ops = {
 	.tx = mt792x_tx,
 	.start = mt7925_start,
@@ -2218,7 +2203,6 @@ const struct ieee80211_ops mt7925_ops = {
 	.link_info_changed = mt7925_link_info_changed,
 	.change_vif_links = mt7925_change_vif_links,
 	.change_sta_links = mt7925_change_sta_links,
-	.rfkill_poll = mt7925_rfkill_poll,
 };
 EXPORT_SYMBOL_GPL(mt7925_ops);
 
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
index abcdd0e0b3b5..d595fc05aa70 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
@@ -3810,43 +3810,6 @@ int mt7925_mcu_set_rate_txpower(struct mt76_phy *phy)
 	return 0;
 }
 
-int mt7925_mcu_wf_rf_pin_ctrl(struct mt792x_phy *phy)
-{
-#define UNI_CMD_RADIO_STATUS_GET	0
-	struct mt792x_dev *dev = phy->dev;
-	struct sk_buff *skb;
-	int ret;
-	struct {
-		__le16 tag;
-		__le16 len;
-		u8 rsv[4];
-	} __packed req = {
-		.tag = UNI_CMD_RADIO_STATUS_GET,
-		.len = cpu_to_le16(sizeof(req)),
-	};
-	struct mt7925_radio_status_event {
-		__le16 tag;
-		__le16 len;
-
-		u8 data;
-		u8 rsv[3];
-	} __packed *status;
-
-	ret = mt76_mcu_send_and_get_msg(&dev->mt76,
-					MCU_UNI_CMD(RADIO_STATUS),
-					&req, sizeof(req), true, &skb);
-	if (ret)
-		return ret;
-
-	skb_pull(skb, sizeof(struct tlv));
-	status = (struct mt7925_radio_status_event *)skb->data;
-	ret = status->data;
-
-	dev_kfree_skb(skb);
-
-	return ret;
-}
-
 int mt7925_mcu_set_rxfilter(struct mt792x_dev *dev, u32 fif,
 			    u8 bit_op, u32 bit_map)
 {
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h b/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h
index a1d902ccce6d..35dc746942cd 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h
@@ -369,7 +369,6 @@ int mt7925_mcu_wtbl_update_hdr_trans(struct mt792x_dev *dev,
 				     struct ieee80211_vif *vif,
 				     struct ieee80211_sta *sta,
 				     int link_id);
-int mt7925_mcu_wf_rf_pin_ctrl(struct mt792x_phy *phy);
 
 int mt7925_testmode_cmd(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 			void *data, int len);
diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c
index c4161754c01d..344f5ef548ae 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c
@@ -32,10 +32,6 @@ static void mt7925e_unregister_device(struct mt792x_dev *dev)
 {
 	int i;
 	struct mt76_connac_pm *pm = &dev->pm;
-	struct ieee80211_hw *hw = mt76_hw(dev);
-
-	if (dev->phy.chip_cap & MT792x_CHIP_CAP_WF_RF_PIN_CTRL_EVT_EN)
-		wiphy_rfkill_stop_polling(hw->wiphy);
 
 	cancel_work_sync(&dev->init_work);
 	mt76_unregister_device(&dev->mt76);
-- 
2.53.0




More information about the kernel-team mailing list