return 0;
 }
 
-static void ath12k_sta_rc_update_wk(struct work_struct *wk)
+static void ath12k_sta_rc_update_wk(struct wiphy *wiphy, struct wiphy_work *wk)
 {
        struct ath12k *ar;
        struct ath12k_vif *arvif;
        struct ath12k_wmi_peer_assoc_arg peer_arg;
        enum wmi_phy_mode peer_phymode;
 
+       lockdep_assert_wiphy(wiphy);
+
        arsta = container_of(wk, struct ath12k_sta, update_wk);
        sta = container_of((void *)arsta, struct ieee80211_sta, drv_priv);
        arvif = arsta->arvif;
        /* cancel must be done outside the mutex to avoid deadlock */
        if ((old_state == IEEE80211_STA_NONE &&
             new_state == IEEE80211_STA_NOTEXIST))
-               cancel_work_sync(&arsta->update_wk);
+               wiphy_work_cancel(hw->wiphy, &arsta->update_wk);
 
        ar = ath12k_get_ar_by_vif(hw, vif);
        if (!ar) {
            new_state == IEEE80211_STA_NONE) {
                memset(arsta, 0, sizeof(*arsta));
                arsta->arvif = arvif;
-               INIT_WORK(&arsta->update_wk, ath12k_sta_rc_update_wk);
+               wiphy_work_init(&arsta->update_wk, ath12k_sta_rc_update_wk);
 
                ret = ath12k_mac_station_add(ar, vif, sta);
                if (ret)
 
        spin_unlock_bh(&ar->data_lock);
 
-       ieee80211_queue_work(hw, &arsta->update_wk);
+       wiphy_work_queue(hw->wiphy, &arsta->update_wk);
 }
 
 static int ath12k_conf_tx_uapsd(struct ath12k_vif *arvif,
        arsta->changed |= IEEE80211_RC_SUPP_RATES_CHANGED;
        spin_unlock_bh(&ar->data_lock);
 
-       ieee80211_queue_work(ath12k_ar_to_hw(ar), &arsta->update_wk);
+       wiphy_work_queue(ath12k_ar_to_hw(ar)->wiphy, &arsta->update_wk);
 }
 
 static void ath12k_mac_disable_peer_fixed_rate(void *data,