• Home
  • Raw
  • Download

Lines Matching refs:wl

287 static void brcms_free(struct brcms_info *wl)  in brcms_free()  argument
292 if (wl->fw.fw_cnt) in brcms_free()
293 brcms_ucode_data_free(&wl->ucode); in brcms_free()
294 if (wl->irq) in brcms_free()
295 free_irq(wl->irq, wl); in brcms_free()
298 tasklet_kill(&wl->tasklet); in brcms_free()
300 if (wl->pub) { in brcms_free()
301 brcms_debugfs_detach(wl->pub); in brcms_free()
302 brcms_c_module_unregister(wl->pub, "linux", wl); in brcms_free()
306 if (wl->wlc) { in brcms_free()
307 brcms_c_detach(wl->wlc); in brcms_free()
308 wl->wlc = NULL; in brcms_free()
309 wl->pub = NULL; in brcms_free()
315 while (atomic_read(&wl->callbacks) > 0) in brcms_free()
319 for (t = wl->timers; t; t = next) { in brcms_free()
335 struct brcms_info *wl = hw->priv; in brcms_remove() local
337 if (wl->wlc) { in brcms_remove()
338 brcms_led_unregister(wl); in brcms_remove()
339 wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, false); in brcms_remove()
340 wiphy_rfkill_stop_polling(wl->pub->ieee_hw->wiphy); in brcms_remove()
344 brcms_free(wl); in brcms_remove()
354 static void brcms_release_fw(struct brcms_info *wl) in brcms_release_fw() argument
358 release_firmware(wl->fw.fw_bin[i]); in brcms_release_fw()
359 release_firmware(wl->fw.fw_hdr[i]); in brcms_release_fw()
367 static int brcms_request_fw(struct brcms_info *wl, struct bcma_device *pdev) in brcms_request_fw() argument
374 memset(&wl->fw, 0, sizeof(struct brcms_firmware)); in brcms_request_fw()
380 status = request_firmware(&wl->fw.fw_bin[i], fw_name, device); in brcms_request_fw()
382 wiphy_err(wl->wiphy, "%s: fail to load firmware %s\n", in brcms_request_fw()
388 status = request_firmware(&wl->fw.fw_hdr[i], fw_name, device); in brcms_request_fw()
390 wiphy_err(wl->wiphy, "%s: fail to load firmware %s\n", in brcms_request_fw()
394 wl->fw.hdr_num_entries[i] = in brcms_request_fw()
395 wl->fw.fw_hdr[i]->size / (sizeof(struct firmware_hdr)); in brcms_request_fw()
397 wl->fw.fw_cnt = i; in brcms_request_fw()
398 status = brcms_ucode_data_init(wl, &wl->ucode); in brcms_request_fw()
399 brcms_release_fw(wl); in brcms_request_fw()
407 struct brcms_info *wl = hw->priv; in brcms_ops_tx() local
410 spin_lock_bh(&wl->lock); in brcms_ops_tx()
411 if (!wl->pub->up) { in brcms_ops_tx()
412 brcms_err(wl->wlc->hw->d11core, "ops->tx called while down\n"); in brcms_ops_tx()
416 if (brcms_c_sendpkt_mac80211(wl->wlc, skb, hw)) in brcms_ops_tx()
419 spin_unlock_bh(&wl->lock); in brcms_ops_tx()
424 struct brcms_info *wl = hw->priv; in brcms_ops_start() local
428 if (!wl->ucode.bcm43xx_bomminor) { in brcms_ops_start()
429 err = brcms_request_fw(wl, wl->wlc->hw->d11core); in brcms_ops_start()
435 spin_lock_bh(&wl->lock); in brcms_ops_start()
436 blocked = brcms_rfkill_set_hw_state(wl); in brcms_ops_start()
437 spin_unlock_bh(&wl->lock); in brcms_ops_start()
439 wiphy_rfkill_stop_polling(wl->pub->ieee_hw->wiphy); in brcms_ops_start()
441 spin_lock_bh(&wl->lock); in brcms_ops_start()
443 wl->mute_tx = true; in brcms_ops_start()
445 if (!wl->pub->up) in brcms_ops_start()
447 err = brcms_up(wl); in brcms_ops_start()
452 spin_unlock_bh(&wl->lock); in brcms_ops_start()
455 brcms_err(wl->wlc->hw->d11core, "%s: brcms_up() returned %d\n", in brcms_ops_start()
458 bcma_core_pci_power_save(wl->wlc->hw->d11core->bus, true); in brcms_ops_start()
464 struct brcms_info *wl = hw->priv; in brcms_ops_stop() local
469 if (wl->wlc == NULL) in brcms_ops_stop()
472 spin_lock_bh(&wl->lock); in brcms_ops_stop()
473 status = brcms_c_chipmatch(wl->wlc->hw->d11core); in brcms_ops_stop()
474 spin_unlock_bh(&wl->lock); in brcms_ops_stop()
476 brcms_err(wl->wlc->hw->d11core, in brcms_ops_stop()
481 bcma_core_pci_power_save(wl->wlc->hw->d11core->bus, false); in brcms_ops_stop()
484 spin_lock_bh(&wl->lock); in brcms_ops_stop()
485 brcms_down(wl); in brcms_ops_stop()
486 spin_unlock_bh(&wl->lock); in brcms_ops_stop()
492 struct brcms_info *wl = hw->priv; in brcms_ops_add_interface() local
498 brcms_err(wl->wlc->hw->d11core, in brcms_ops_add_interface()
504 spin_lock_bh(&wl->lock); in brcms_ops_add_interface()
505 wl->wlc->vif = vif; in brcms_ops_add_interface()
506 wl->mute_tx = false; in brcms_ops_add_interface()
507 brcms_c_mute(wl->wlc, false); in brcms_ops_add_interface()
509 brcms_c_start_station(wl->wlc, vif->addr); in brcms_ops_add_interface()
511 brcms_c_start_ap(wl->wlc, vif->addr, vif->bss_conf.bssid, in brcms_ops_add_interface()
514 brcms_c_start_adhoc(wl->wlc, vif->addr); in brcms_ops_add_interface()
515 spin_unlock_bh(&wl->lock); in brcms_ops_add_interface()
523 struct brcms_info *wl = hw->priv; in brcms_ops_remove_interface() local
525 spin_lock_bh(&wl->lock); in brcms_ops_remove_interface()
526 wl->wlc->vif = NULL; in brcms_ops_remove_interface()
527 spin_unlock_bh(&wl->lock); in brcms_ops_remove_interface()
533 struct brcms_info *wl = hw->priv; in brcms_ops_config() local
534 struct bcma_device *core = wl->wlc->hw->d11core; in brcms_ops_config()
538 spin_lock_bh(&wl->lock); in brcms_ops_config()
540 brcms_c_set_beacon_listen_interval(wl->wlc, in brcms_ops_config()
553 err = brcms_c_set_tx_power(wl->wlc, conf->power_level); in brcms_ops_config()
559 new_int = brcms_c_get_tx_power(wl->wlc); in brcms_ops_config()
569 err = brcms_c_set_channel(wl->wlc, in brcms_ops_config()
575 err = brcms_c_set_rate_limit(wl->wlc, in brcms_ops_config()
580 spin_unlock_bh(&wl->lock); in brcms_ops_config()
589 struct brcms_info *wl = hw->priv; in brcms_ops_bss_info_changed() local
590 struct bcma_device *core = wl->wlc->hw->d11core; in brcms_ops_bss_info_changed()
598 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
599 brcms_c_associate_upd(wl->wlc, info->assoc); in brcms_ops_bss_info_changed()
600 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
610 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
611 brcms_c_set_shortslot_override(wl->wlc, val); in brcms_ops_bss_info_changed()
612 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
619 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
620 brcms_c_protection_upd(wl->wlc, BRCMS_PROT_N_CFG, in brcms_ops_bss_info_changed()
622 brcms_c_protection_upd(wl->wlc, BRCMS_PROT_N_NONGF, in brcms_ops_bss_info_changed()
624 brcms_c_protection_upd(wl->wlc, BRCMS_PROT_N_OBSS, in brcms_ops_bss_info_changed()
626 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
636 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
637 brcms_c_get_current_rateset(wl->wlc, &rs); in brcms_ops_bss_info_changed()
638 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
641 bi = hw->wiphy->bands[brcms_c_get_curband(wl->wlc)]; in brcms_ops_bss_info_changed()
652 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
653 error = brcms_c_set_rateset(wl->wlc, &rs); in brcms_ops_bss_info_changed()
654 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
661 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
662 brcms_c_set_beacon_period(wl->wlc, info->beacon_int); in brcms_ops_bss_info_changed()
663 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
667 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
668 brcms_c_set_addrmatch(wl->wlc, RCM_BSSID_OFFSET, info->bssid); in brcms_ops_bss_info_changed()
669 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
673 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
674 brcms_c_set_ssid(wl->wlc, info->ssid, info->ssid_len); in brcms_ops_bss_info_changed()
675 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
682 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
684 brcms_c_set_new_beacon(wl->wlc, beacon, tim_offset, in brcms_ops_bss_info_changed()
686 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
692 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
694 brcms_c_set_new_probe_resp(wl->wlc, probe_resp); in brcms_ops_bss_info_changed()
695 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
704 brcms_c_enable_probe_resp(wl->wlc, true); in brcms_ops_bss_info_changed()
706 brcms_c_enable_probe_resp(wl->wlc, false); in brcms_ops_bss_info_changed()
745 struct brcms_info *wl = hw->priv; in brcms_ops_configure_filter() local
746 struct bcma_device *core = wl->wlc->hw->d11core; in brcms_ops_configure_filter()
764 spin_lock_bh(&wl->lock); in brcms_ops_configure_filter()
765 brcms_c_mac_promisc(wl->wlc, *total_flags); in brcms_ops_configure_filter()
766 spin_unlock_bh(&wl->lock); in brcms_ops_configure_filter()
774 struct brcms_info *wl = hw->priv; in brcms_ops_sw_scan_start() local
775 spin_lock_bh(&wl->lock); in brcms_ops_sw_scan_start()
776 brcms_c_scan_start(wl->wlc); in brcms_ops_sw_scan_start()
777 spin_unlock_bh(&wl->lock); in brcms_ops_sw_scan_start()
784 struct brcms_info *wl = hw->priv; in brcms_ops_sw_scan_complete() local
785 spin_lock_bh(&wl->lock); in brcms_ops_sw_scan_complete()
786 brcms_c_scan_stop(wl->wlc); in brcms_ops_sw_scan_complete()
787 spin_unlock_bh(&wl->lock); in brcms_ops_sw_scan_complete()
795 struct brcms_info *wl = hw->priv; in brcms_ops_conf_tx() local
797 spin_lock_bh(&wl->lock); in brcms_ops_conf_tx()
798 brcms_c_wme_setparams(wl->wlc, queue, params, true); in brcms_ops_conf_tx()
799 spin_unlock_bh(&wl->lock); in brcms_ops_conf_tx()
808 struct brcms_info *wl = hw->priv; in brcms_ops_sta_add() local
809 struct scb *scb = &wl->wlc->pri_scb; in brcms_ops_sta_add()
813 wl->pub->global_ampdu = &(scb->scb_ampdu); in brcms_ops_sta_add()
814 wl->pub->global_ampdu->scb = scb; in brcms_ops_sta_add()
815 wl->pub->global_ampdu->max_pdu = 16; in brcms_ops_sta_add()
829 struct brcms_info *wl = hw->priv; in brcms_ops_ampdu_action() local
830 struct scb *scb = &wl->wlc->pri_scb; in brcms_ops_ampdu_action()
845 spin_lock_bh(&wl->lock); in brcms_ops_ampdu_action()
846 status = brcms_c_aggregatable(wl->wlc, tid); in brcms_ops_ampdu_action()
847 spin_unlock_bh(&wl->lock); in brcms_ops_ampdu_action()
849 brcms_dbg_ht(wl->wlc->hw->d11core, in brcms_ops_ampdu_action()
859 spin_lock_bh(&wl->lock); in brcms_ops_ampdu_action()
860 brcms_c_ampdu_flush(wl->wlc, sta, tid); in brcms_ops_ampdu_action()
861 spin_unlock_bh(&wl->lock); in brcms_ops_ampdu_action()
871 spin_lock_bh(&wl->lock); in brcms_ops_ampdu_action()
872 brcms_c_ampdu_tx_operational(wl->wlc, tid, buf_size, in brcms_ops_ampdu_action()
875 spin_unlock_bh(&wl->lock); in brcms_ops_ampdu_action()
879 brcms_err(wl->wlc->hw->d11core, in brcms_ops_ampdu_action()
888 struct brcms_info *wl = hw->priv; in brcms_ops_rfkill_poll() local
891 spin_lock_bh(&wl->lock); in brcms_ops_rfkill_poll()
892 blocked = brcms_c_check_radio_disabled(wl->wlc); in brcms_ops_rfkill_poll()
893 spin_unlock_bh(&wl->lock); in brcms_ops_rfkill_poll()
895 wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, blocked); in brcms_ops_rfkill_poll()
898 static bool brcms_tx_flush_completed(struct brcms_info *wl) in brcms_tx_flush_completed() argument
902 spin_lock_bh(&wl->lock); in brcms_tx_flush_completed()
903 result = brcms_c_tx_flush_completed(wl->wlc); in brcms_tx_flush_completed()
904 spin_unlock_bh(&wl->lock); in brcms_tx_flush_completed()
911 struct brcms_info *wl = hw->priv; in brcms_ops_flush() local
916 ret = wait_event_timeout(wl->tx_flush_wq, in brcms_ops_flush()
917 brcms_tx_flush_completed(wl), in brcms_ops_flush()
920 brcms_dbg_mac80211(wl->wlc->hw->d11core, in brcms_ops_flush()
926 struct brcms_info *wl = hw->priv; in brcms_ops_get_tsf() local
929 spin_lock_bh(&wl->lock); in brcms_ops_get_tsf()
930 tsf = brcms_c_tsf_get(wl->wlc); in brcms_ops_get_tsf()
931 spin_unlock_bh(&wl->lock); in brcms_ops_get_tsf()
939 struct brcms_info *wl = hw->priv; in brcms_ops_set_tsf() local
941 spin_lock_bh(&wl->lock); in brcms_ops_set_tsf()
942 brcms_c_tsf_set(wl->wlc, tsf); in brcms_ops_set_tsf()
943 spin_unlock_bh(&wl->lock); in brcms_ops_set_tsf()
949 struct brcms_info *wl = hw->priv; in brcms_ops_beacon_set_tim() local
953 spin_lock_bh(&wl->lock); in brcms_ops_beacon_set_tim()
954 if (wl->wlc->vif) in brcms_ops_beacon_set_tim()
955 beacon = ieee80211_beacon_get_tim(hw, wl->wlc->vif, in brcms_ops_beacon_set_tim()
958 brcms_c_set_new_beacon(wl->wlc, beacon, tim_offset, in brcms_ops_beacon_set_tim()
959 wl->wlc->vif->bss_conf.dtim_period); in brcms_ops_beacon_set_tim()
960 spin_unlock_bh(&wl->lock); in brcms_ops_beacon_set_tim()
988 struct brcms_info *wl; in brcms_dpc() local
990 wl = (struct brcms_info *) data; in brcms_dpc()
992 spin_lock_bh(&wl->lock); in brcms_dpc()
995 if (wl->pub->up) { in brcms_dpc()
996 if (wl->resched) { in brcms_dpc()
999 spin_lock_irqsave(&wl->isr_lock, flags); in brcms_dpc()
1000 brcms_c_intrsupd(wl->wlc); in brcms_dpc()
1001 spin_unlock_irqrestore(&wl->isr_lock, flags); in brcms_dpc()
1004 wl->resched = brcms_c_dpc(wl->wlc, true); in brcms_dpc()
1008 if (!wl->pub->up) in brcms_dpc()
1012 if (wl->resched) in brcms_dpc()
1013 tasklet_schedule(&wl->tasklet); in brcms_dpc()
1016 brcms_intrson(wl); in brcms_dpc()
1019 spin_unlock_bh(&wl->lock); in brcms_dpc()
1020 wake_up(&wl->tx_flush_wq); in brcms_dpc()
1025 struct brcms_info *wl; in brcms_isr() local
1028 wl = (struct brcms_info *) dev_id; in brcms_isr()
1030 spin_lock(&wl->isr_lock); in brcms_isr()
1033 if (brcms_c_isr(wl->wlc)) { in brcms_isr()
1035 tasklet_schedule(&wl->tasklet); in brcms_isr()
1039 spin_unlock(&wl->isr_lock); in brcms_isr()
1049 struct brcms_info *wl = hw->priv; in ieee_hw_rate_init() local
1050 struct brcms_c_info *wlc = wl->wlc; in ieee_hw_rate_init()
1058 phy_type = brcms_c_get_phy_type(wl->wlc, 0); in ieee_hw_rate_init()
1073 if (wl->pub->_nbands > 1) { in ieee_hw_rate_init()
1129 struct brcms_info *wl = NULL; in brcms_attach() local
1143 wl = hw->priv; in brcms_attach()
1144 if (WARN_ON(hw == NULL) || WARN_ON(wl == NULL)) in brcms_attach()
1146 wl->wiphy = hw->wiphy; in brcms_attach()
1148 atomic_set(&wl->callbacks, 0); in brcms_attach()
1150 init_waitqueue_head(&wl->tx_flush_wq); in brcms_attach()
1153 tasklet_init(&wl->tasklet, brcms_dpc, (unsigned long) wl); in brcms_attach()
1155 spin_lock_init(&wl->lock); in brcms_attach()
1156 spin_lock_init(&wl->isr_lock); in brcms_attach()
1159 wl->wlc = brcms_c_attach((void *)wl, pdev, unit, false, &err); in brcms_attach()
1160 if (!wl->wlc) { in brcms_attach()
1161 wiphy_err(wl->wiphy, "%s: attach() failed with code %d\n", in brcms_attach()
1165 wl->pub = brcms_c_pub(wl->wlc); in brcms_attach()
1167 wl->pub->ieee_hw = hw; in brcms_attach()
1171 IRQF_SHARED, KBUILD_MODNAME, wl)) { in brcms_attach()
1172 wiphy_err(wl->wiphy, "wl%d: request_irq() failed\n", unit); in brcms_attach()
1175 wl->irq = pdev->irq; in brcms_attach()
1178 brcms_c_module_register(wl->pub, "linux", wl, NULL); in brcms_attach()
1181 wiphy_err(wl->wiphy, "wl%d: %s: ieee_hw_init failed!\n", unit, in brcms_attach()
1186 brcms_c_regd_init(wl->wlc); in brcms_attach()
1188 memcpy(perm, &wl->pub->cur_etheraddr, ETH_ALEN); in brcms_attach()
1195 wiphy_err(wl->wiphy, "%s: ieee80211_register_hw failed, status" in brcms_attach()
1198 if (wl->pub->srom_ccode[0] && in brcms_attach()
1199 regulatory_hint(wl->wiphy, wl->pub->srom_ccode)) in brcms_attach()
1200 wiphy_err(wl->wiphy, "%s: regulatory hint failed\n", __func__); in brcms_attach()
1202 brcms_debugfs_attach(wl->pub); in brcms_attach()
1203 brcms_debugfs_create_files(wl->pub); in brcms_attach()
1205 return wl; in brcms_attach()
1208 brcms_free(wl); in brcms_attach()
1224 struct brcms_info *wl; in brcms_bcma_probe() local
1245 memset(hw->priv, 0, sizeof(*wl)); in brcms_bcma_probe()
1247 wl = brcms_attach(pdev); in brcms_bcma_probe()
1248 if (!wl) { in brcms_bcma_probe()
1252 brcms_led_register(wl); in brcms_bcma_probe()
1259 struct brcms_info *wl; in brcms_suspend() local
1263 wl = hw->priv; in brcms_suspend()
1264 if (!wl) { in brcms_suspend()
1271 spin_lock_bh(&wl->lock); in brcms_suspend()
1272 wl->pub->hw_up = false; in brcms_suspend()
1273 spin_unlock_bh(&wl->lock); in brcms_suspend()
1275 brcms_dbg_info(wl->wlc->hw->d11core, "brcms_suspend ok\n"); in brcms_suspend()
1341 void brcms_txflowcontrol(struct brcms_info *wl, struct brcms_if *wlif, in brcms_txflowcontrol() argument
1344 brcms_err(wl->wlc->hw->d11core, "Shouldn't be here %s\n", __func__); in brcms_txflowcontrol()
1350 void brcms_init(struct brcms_info *wl) in brcms_init() argument
1352 brcms_dbg_info(wl->wlc->hw->d11core, "Initializing wl%d\n", in brcms_init()
1353 wl->pub->unit); in brcms_init()
1354 brcms_reset(wl); in brcms_init()
1355 brcms_c_init(wl->wlc, wl->mute_tx); in brcms_init()
1361 uint brcms_reset(struct brcms_info *wl) in brcms_reset() argument
1363 brcms_dbg_info(wl->wlc->hw->d11core, "Resetting wl%d\n", wl->pub->unit); in brcms_reset()
1364 brcms_c_reset(wl->wlc); in brcms_reset()
1367 wl->resched = false; in brcms_reset()
1370 wl->pub->up = false; in brcms_reset()
1375 void brcms_fatal_error(struct brcms_info *wl) in brcms_fatal_error() argument
1377 brcms_err(wl->wlc->hw->d11core, "wl%d: fatal error, reinitializing\n", in brcms_fatal_error()
1378 wl->wlc->pub->unit); in brcms_fatal_error()
1379 brcms_reset(wl); in brcms_fatal_error()
1380 ieee80211_restart_hw(wl->pub->ieee_hw); in brcms_fatal_error()
1387 void brcms_intrson(struct brcms_info *wl) in brcms_intrson() argument
1391 spin_lock_irqsave(&wl->isr_lock, flags); in brcms_intrson()
1392 brcms_c_intrson(wl->wlc); in brcms_intrson()
1393 spin_unlock_irqrestore(&wl->isr_lock, flags); in brcms_intrson()
1396 u32 brcms_intrsoff(struct brcms_info *wl) in brcms_intrsoff() argument
1401 spin_lock_irqsave(&wl->isr_lock, flags); in brcms_intrsoff()
1402 status = brcms_c_intrsoff(wl->wlc); in brcms_intrsoff()
1403 spin_unlock_irqrestore(&wl->isr_lock, flags); in brcms_intrsoff()
1407 void brcms_intrsrestore(struct brcms_info *wl, u32 macintmask) in brcms_intrsrestore() argument
1411 spin_lock_irqsave(&wl->isr_lock, flags); in brcms_intrsrestore()
1412 brcms_c_intrsrestore(wl->wlc, macintmask); in brcms_intrsrestore()
1413 spin_unlock_irqrestore(&wl->isr_lock, flags); in brcms_intrsrestore()
1419 int brcms_up(struct brcms_info *wl) in brcms_up() argument
1423 if (wl->pub->up) in brcms_up()
1426 error = brcms_c_up(wl->wlc); in brcms_up()
1434 void brcms_down(struct brcms_info *wl) in brcms_down() argument
1439 ret_val = brcms_c_down(wl->wlc); in brcms_down()
1440 callbacks = atomic_read(&wl->callbacks) - ret_val; in brcms_down()
1443 spin_unlock_bh(&wl->lock); in brcms_down()
1448 SPINWAIT((atomic_read(&wl->callbacks) > callbacks), 100 * 1000); in brcms_down()
1450 spin_lock_bh(&wl->lock); in brcms_down()
1461 spin_lock_bh(&t->wl->lock); in _brcms_timer()
1465 atomic_inc(&t->wl->callbacks); in _brcms_timer()
1466 ieee80211_queue_delayed_work(t->wl->pub->ieee_hw, in _brcms_timer()
1476 atomic_dec(&t->wl->callbacks); in _brcms_timer()
1478 spin_unlock_bh(&t->wl->lock); in _brcms_timer()
1487 struct brcms_timer *brcms_init_timer(struct brcms_info *wl, in brcms_init_timer() argument
1498 t->wl = wl; in brcms_init_timer()
1501 t->next = wl->timers; in brcms_init_timer()
1502 wl->timers = t; in brcms_init_timer()
1519 struct ieee80211_hw *hw = t->wl->pub->ieee_hw; in brcms_add_timer()
1523 brcms_dbg_info(t->wl->wlc->hw->d11core, in brcms_add_timer()
1531 atomic_inc(&t->wl->callbacks); in brcms_add_timer()
1549 atomic_dec(&t->wl->callbacks); in brcms_del_timer()
1560 struct brcms_info *wl = t->wl; in brcms_free_timer() local
1566 if (wl->timers == t) { in brcms_free_timer()
1567 wl->timers = wl->timers->next; in brcms_free_timer()
1576 tmp = wl->timers; in brcms_free_timer()
1594 int brcms_ucode_init_buf(struct brcms_info *wl, void **pbuf, u32 idx) in brcms_ucode_init_buf() argument
1599 for (i = 0; i < wl->fw.fw_cnt; i++) { in brcms_ucode_init_buf()
1600 hdr = (struct firmware_hdr *)wl->fw.fw_hdr[i]->data; in brcms_ucode_init_buf()
1601 for (entry = 0; entry < wl->fw.hdr_num_entries[i]; in brcms_ucode_init_buf()
1605 pdata = wl->fw.fw_bin[i]->data + in brcms_ucode_init_buf()
1615 brcms_err(wl->wlc->hw->d11core, in brcms_ucode_init_buf()
1626 int brcms_ucode_init_uint(struct brcms_info *wl, size_t *n_bytes, u32 idx) in brcms_ucode_init_uint() argument
1631 for (i = 0; i < wl->fw.fw_cnt; i++) { in brcms_ucode_init_uint()
1632 hdr = (struct firmware_hdr *)wl->fw.fw_hdr[i]->data; in brcms_ucode_init_uint()
1633 for (entry = 0; entry < wl->fw.hdr_num_entries[i]; in brcms_ucode_init_uint()
1636 pdata = wl->fw.fw_bin[i]->data + in brcms_ucode_init_uint()
1639 brcms_err(wl->wlc->hw->d11core, in brcms_ucode_init_uint()
1648 brcms_err(wl->wlc->hw->d11core, in brcms_ucode_init_uint()
1667 int brcms_check_firmwares(struct brcms_info *wl) in brcms_check_firmwares() argument
1676 fw = wl->fw.fw_bin[i]; in brcms_check_firmwares()
1677 fw_hdr = wl->fw.fw_hdr[i]; in brcms_check_firmwares()
1681 wiphy_err(wl->wiphy, "%s: invalid bin/hdr fw\n", in brcms_check_firmwares()
1685 wiphy_err(wl->wiphy, "%s: non integral fw hdr file " in brcms_check_firmwares()
1690 wiphy_err(wl->wiphy, "%s: out of bounds fw file size %zu\n", in brcms_check_firmwares()
1696 for (entry = 0; entry < wl->fw.hdr_num_entries[i] && in brcms_check_firmwares()
1701 wiphy_err(wl->wiphy, in brcms_check_firmwares()
1709 if (rc == 0 && wl->fw.fw_cnt != i) { in brcms_check_firmwares()
1710 wiphy_err(wl->wiphy, "%s: invalid fw_cnt=%d\n", __func__, in brcms_check_firmwares()
1711 wl->fw.fw_cnt); in brcms_check_firmwares()
1720 bool brcms_rfkill_set_hw_state(struct brcms_info *wl) in brcms_rfkill_set_hw_state() argument
1722 bool blocked = brcms_c_check_radio_disabled(wl->wlc); in brcms_rfkill_set_hw_state()
1724 spin_unlock_bh(&wl->lock); in brcms_rfkill_set_hw_state()
1725 wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, blocked); in brcms_rfkill_set_hw_state()
1727 wiphy_rfkill_start_polling(wl->pub->ieee_hw->wiphy); in brcms_rfkill_set_hw_state()
1728 spin_lock_bh(&wl->lock); in brcms_rfkill_set_hw_state()