enum nl80211_tx_power_setting type, int mbm)
 {
        int ret;
+       int srcu_idx;
        s32 tx_power = MBM_TO_DBM(mbm);
-       struct wilc_vif *vif = netdev_priv(wdev->netdev);
+       struct wilc *wl = wiphy_priv(wiphy);
+       struct wilc_vif *vif;
 
+       if (!wl->initialized)
+               return -EIO;
+
+       srcu_idx = srcu_read_lock(&wl->srcu);
+       vif = wilc_get_wl_to_vif(wl);
+       if (IS_ERR(vif)) {
+               srcu_read_unlock(&wl->srcu, srcu_idx);
+               return -EINVAL;
+       }
+
+       netdev_info(vif->ndev, "Setting tx power %d\n", tx_power);
        if (tx_power < 0)
                tx_power = 0;
        else if (tx_power > 18)
        ret = wilc_set_tx_power(vif, tx_power);
        if (ret)
                netdev_err(vif->ndev, "Failed to set tx power\n");
+       srcu_read_unlock(&wl->srcu, srcu_idx);
 
        return ret;
 }