/* * precondition: perimeter lock has been acquired */ bool brcms_rfkill_set_hw_state(struct brcms_info *wl) { bool blocked = brcms_c_check_radio_disabled(wl->wlc); spin_unlock_bh(&wl->lock); wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, blocked); if (blocked) wiphy_rfkill_start_polling(wl->pub->ieee_hw->wiphy); spin_lock_bh(&wl->lock); return blocked; }
static void brcms_ops_rfkill_poll(struct ieee80211_hw *hw) { struct brcms_info *wl = hw->priv; bool blocked; spin_lock_bh(&wl->lock); blocked = brcms_c_check_radio_disabled(wl->wlc); spin_unlock_bh(&wl->lock); wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, blocked); }
static void brcms_ops_rfkill_poll(struct ieee80211_hw *hw) { struct brcms_info *wl = HW_TO_WL(hw); bool blocked; LOCK(wl); blocked = brcms_c_check_radio_disabled(wl->wlc); UNLOCK(wl); wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, blocked); }