return err;
 }
 
-void mt7921_stop(struct ieee80211_hw *hw)
-{
-       struct mt792x_dev *dev = mt792x_hw_dev(hw);
-       struct mt792x_phy *phy = mt792x_hw_phy(hw);
-
-       cancel_delayed_work_sync(&phy->mt76->mac_work);
-
-       cancel_delayed_work_sync(&dev->pm.ps_work);
-       cancel_work_sync(&dev->pm.wake_work);
-       cancel_work_sync(&dev->reset_work);
-       mt76_connac_free_pending_tx_skbs(&dev->pm, NULL);
-
-       mt792x_mutex_acquire(dev);
-       clear_bit(MT76_STATE_RUNNING, &phy->mt76->state);
-       mt76_connac_mcu_set_mac_enable(&dev->mt76, 0, false, false);
-       mt792x_mutex_release(dev);
-}
-EXPORT_SYMBOL_GPL(mt7921_stop);
-
 static int
 mt7921_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
 {
 const struct ieee80211_ops mt7921_ops = {
        .tx = mt792x_tx,
        .start = mt7921_start,
-       .stop = mt7921_stop,
+       .stop = mt792x_stop,
        .add_interface = mt7921_add_interface,
        .remove_interface = mt792x_remove_interface,
        .config = mt7921_config,
 
 #define mt7921_l1_set(dev, addr, val)  mt7921_l1_rmw(dev, addr, 0, val)
 #define mt7921_l1_clear(dev, addr, val)        mt7921_l1_rmw(dev, addr, val, 0)
 
-void mt7921_stop(struct ieee80211_hw *hw);
 int mt7921_mac_init(struct mt792x_dev *dev);
 bool mt7921_mac_wtbl_update(struct mt792x_dev *dev, int idx, u32 mask);
 int mt7921_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
 
        return err;
 }
 
-static void mt7921u_stop(struct ieee80211_hw *hw)
-{
-       struct mt792x_dev *dev = mt792x_hw_dev(hw);
-
-       mt76u_stop_tx(&dev->mt76);
-       mt7921_stop(hw);
-}
-
 static int mt7921u_probe(struct usb_interface *usb_intf,
                         const struct usb_device_id *id)
 {
        if (!ops)
                return -ENOMEM;
 
-       ops->stop = mt7921u_stop;
+       ops->stop = mt792xu_stop;
        mdev = mt76_alloc_device(&usb_intf->dev, sizeof(*dev), ops, &drv_ops);
        if (!mdev)
                return -ENOMEM;
 
        return err;
 }
 
-void mt7925_stop(struct ieee80211_hw *hw)
-{
-       struct mt792x_dev *dev = mt792x_hw_dev(hw);
-       struct mt792x_phy *phy = mt792x_hw_phy(hw);
-
-       cancel_delayed_work_sync(&phy->mt76->mac_work);
-
-       cancel_delayed_work_sync(&dev->pm.ps_work);
-       cancel_work_sync(&dev->pm.wake_work);
-       cancel_work_sync(&dev->reset_work);
-       mt76_connac_free_pending_tx_skbs(&dev->pm, NULL);
-
-       mt792x_mutex_acquire(dev);
-       clear_bit(MT76_STATE_RUNNING, &phy->mt76->state);
-       mt792x_mutex_release(dev);
-}
-EXPORT_SYMBOL_GPL(mt7925_stop);
-
 static int
 mt7925_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
 {
 const struct ieee80211_ops mt7925_ops = {
        .tx = mt792x_tx,
        .start = mt7925_start,
-       .stop = mt7925_stop,
+       .stop = mt792x_stop,
        .add_interface = mt7925_add_interface,
        .remove_interface = mt792x_remove_interface,
        .config = mt7925_config,
 
 int mt7925_mcu_set_rxfilter(struct mt792x_dev *dev, u32 fif,
                            u8 bit_op, u32 bit_map);
 
-void mt7925_stop(struct ieee80211_hw *hw);
 int mt7925_mac_init(struct mt792x_dev *dev);
 int mt7925_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
                       struct ieee80211_sta *sta);
 
        return 0;
 }
 
-static void mt7925u_stop(struct ieee80211_hw *hw)
-{
-       struct mt792x_dev *dev = mt792x_hw_dev(hw);
-
-       mt76u_stop_tx(&dev->mt76);
-       mt7925_stop(hw);
-}
-
 static int mt7925u_mac_reset(struct mt792x_dev *dev)
 {
        int err;
        if (!ops)
                return -ENOMEM;
 
-       ops->stop = mt7925u_stop;
+       ops->stop = mt792xu_stop;
 
        mdev = mt76_alloc_device(&usb_intf->dev, sizeof(*dev), ops, &drv_ops);
        if (!mdev)
 
 #define mt792x_mutex_release(dev)      \
        mt76_connac_mutex_release(&(dev)->mt76, &(dev)->pm)
 
+void mt792x_stop(struct ieee80211_hw *hw);
 void mt792x_pm_wake_work(struct work_struct *work);
 void mt792x_pm_power_save_work(struct work_struct *work);
 void mt792x_reset(struct mt76_dev *mdev);
 u32 mt792xu_rmw(struct mt76_dev *dev, u32 addr, u32 mask, u32 val);
 void mt792xu_copy(struct mt76_dev *dev, u32 offset, const void *data, int len);
 void mt792xu_disconnect(struct usb_interface *usb_intf);
+void mt792xu_stop(struct ieee80211_hw *hw);
 
 static inline void
 mt792x_skb_add_usb_sdio_hdr(struct mt792x_dev *dev, struct sk_buff *skb,
 
 }
 EXPORT_SYMBOL_GPL(mt792x_tx);
 
+void mt792x_stop(struct ieee80211_hw *hw)
+{
+       struct mt792x_dev *dev = mt792x_hw_dev(hw);
+       struct mt792x_phy *phy = mt792x_hw_phy(hw);
+
+       cancel_delayed_work_sync(&phy->mt76->mac_work);
+
+       cancel_delayed_work_sync(&dev->pm.ps_work);
+       cancel_work_sync(&dev->pm.wake_work);
+       cancel_work_sync(&dev->reset_work);
+       mt76_connac_free_pending_tx_skbs(&dev->pm, NULL);
+
+       if (is_mt7921(&dev->mt76)) {
+               mt792x_mutex_acquire(dev);
+               mt76_connac_mcu_set_mac_enable(&dev->mt76, 0, false, false);
+               mt792x_mutex_release(dev);
+       }
+
+       clear_bit(MT76_STATE_RUNNING, &phy->mt76->state);
+}
+EXPORT_SYMBOL_GPL(mt792x_stop);
+
 void mt792x_remove_interface(struct ieee80211_hw *hw,
                             struct ieee80211_vif *vif)
 {
 
 }
 EXPORT_SYMBOL_GPL(mt792xu_init_reset);
 
+void mt792xu_stop(struct ieee80211_hw *hw)
+{
+       struct mt792x_dev *dev = mt792x_hw_dev(hw);
+
+       mt76u_stop_tx(&dev->mt76);
+       mt792x_stop(hw);
+}
+EXPORT_SYMBOL_GPL(mt792xu_stop);
+
 void mt792xu_disconnect(struct usb_interface *usb_intf)
 {
        struct mt792x_dev *dev = usb_get_intfdata(usb_intf);