struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy);
        struct rtw89_dev *rtwdev = hw->priv;
 
+       wiphy_lock(wiphy);
        mutex_lock(&rtwdev->mutex);
        rtw89_leave_ps_mode(rtwdev);
 
 
 exit:
        mutex_unlock(&rtwdev->mutex);
+       wiphy_unlock(wiphy);
 }
 
 /* Maximum Transmit Power field (@raw) can be EIRP or PSD.
 
        rtw89_debug(rtwdev, RTW89_DBG_SER, "ser: %s receive %s\n",
                    ser_st_name(ser), ser_ev_name(ser, evt));
 
+       wiphy_lock(rtwdev->hw->wiphy);
        mutex_lock(&rtwdev->mutex);
        rtw89_leave_lps(rtwdev);
        mutex_unlock(&rtwdev->mutex);
+       wiphy_unlock(rtwdev->hw->wiphy);
 
        ser->st_tbl[ser->state].st_func(ser, evt);
 }
 
        switch (evt) {
        case SER_EV_STATE_IN:
+               wiphy_lock(rtwdev->hw->wiphy);
                mutex_lock(&rtwdev->mutex);
                ser_l2_reset_st_pre_hdl(ser);
                mutex_unlock(&rtwdev->mutex);
+               wiphy_unlock(rtwdev->hw->wiphy);
 
                ieee80211_restart_hw(rtwdev->hw);
                ser_set_alarm(ser, SER_RECFG_TIMEOUT, SER_EV_L2_RECFG_TIMEOUT);