Lines Matching refs:wl

288 static void brcms_free(struct brcms_info *wl)  in brcms_free()  argument
293 if (wl->fw.fw_cnt) in brcms_free()
294 brcms_ucode_data_free(&wl->ucode); in brcms_free()
295 if (wl->irq) in brcms_free()
296 free_irq(wl->irq, wl); in brcms_free()
299 tasklet_kill(&wl->tasklet); in brcms_free()
301 if (wl->pub) { in brcms_free()
302 brcms_debugfs_detach(wl->pub); in brcms_free()
303 brcms_c_module_unregister(wl->pub, "linux", wl); in brcms_free()
307 if (wl->wlc) { in brcms_free()
308 brcms_c_detach(wl->wlc); in brcms_free()
309 wl->wlc = NULL; in brcms_free()
310 wl->pub = NULL; in brcms_free()
316 while (atomic_read(&wl->callbacks) > 0) in brcms_free()
320 for (t = wl->timers; t; t = next) { in brcms_free()
336 struct brcms_info *wl = hw->priv; in brcms_remove() local
338 if (wl->wlc) { in brcms_remove()
339 brcms_led_unregister(wl); in brcms_remove()
340 wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, false); in brcms_remove()
341 wiphy_rfkill_stop_polling(wl->pub->ieee_hw->wiphy); in brcms_remove()
345 brcms_free(wl); in brcms_remove()
355 static void brcms_release_fw(struct brcms_info *wl) in brcms_release_fw() argument
359 release_firmware(wl->fw.fw_bin[i]); in brcms_release_fw()
360 release_firmware(wl->fw.fw_hdr[i]); in brcms_release_fw()
368 static int brcms_request_fw(struct brcms_info *wl, struct bcma_device *pdev) in brcms_request_fw() argument
375 memset(&wl->fw, 0, sizeof(struct brcms_firmware)); in brcms_request_fw()
381 status = request_firmware(&wl->fw.fw_bin[i], fw_name, device); in brcms_request_fw()
383 wiphy_err(wl->wiphy, "%s: fail to load firmware %s\n", in brcms_request_fw()
389 status = request_firmware(&wl->fw.fw_hdr[i], fw_name, device); in brcms_request_fw()
391 wiphy_err(wl->wiphy, "%s: fail to load firmware %s\n", in brcms_request_fw()
395 wl->fw.hdr_num_entries[i] = in brcms_request_fw()
396 wl->fw.fw_hdr[i]->size / (sizeof(struct firmware_hdr)); in brcms_request_fw()
398 wl->fw.fw_cnt = i; in brcms_request_fw()
399 status = brcms_ucode_data_init(wl, &wl->ucode); in brcms_request_fw()
400 brcms_release_fw(wl); in brcms_request_fw()
408 struct brcms_info *wl = hw->priv; in brcms_ops_tx() local
411 spin_lock_bh(&wl->lock); in brcms_ops_tx()
412 if (!wl->pub->up) { in brcms_ops_tx()
413 brcms_err(wl->wlc->hw->d11core, "ops->tx called while down\n"); in brcms_ops_tx()
417 if (brcms_c_sendpkt_mac80211(wl->wlc, skb, hw)) in brcms_ops_tx()
420 spin_unlock_bh(&wl->lock); in brcms_ops_tx()
425 struct brcms_info *wl = hw->priv; in brcms_ops_start() local
429 if (!wl->ucode.bcm43xx_bomminor) { in brcms_ops_start()
430 err = brcms_request_fw(wl, wl->wlc->hw->d11core); in brcms_ops_start()
436 spin_lock_bh(&wl->lock); in brcms_ops_start()
437 blocked = brcms_rfkill_set_hw_state(wl); in brcms_ops_start()
438 spin_unlock_bh(&wl->lock); in brcms_ops_start()
440 wiphy_rfkill_stop_polling(wl->pub->ieee_hw->wiphy); in brcms_ops_start()
442 spin_lock_bh(&wl->lock); in brcms_ops_start()
444 wl->mute_tx = true; in brcms_ops_start()
446 if (!wl->pub->up) in brcms_ops_start()
448 err = brcms_up(wl); in brcms_ops_start()
453 spin_unlock_bh(&wl->lock); in brcms_ops_start()
456 brcms_err(wl->wlc->hw->d11core, "%s: brcms_up() returned %d\n", in brcms_ops_start()
459 bcma_core_pci_power_save(wl->wlc->hw->d11core->bus, true); in brcms_ops_start()
465 struct brcms_info *wl = hw->priv; in brcms_ops_stop() local
470 if (wl->wlc == NULL) in brcms_ops_stop()
473 spin_lock_bh(&wl->lock); in brcms_ops_stop()
474 status = brcms_c_chipmatch(wl->wlc->hw->d11core); in brcms_ops_stop()
475 spin_unlock_bh(&wl->lock); in brcms_ops_stop()
477 brcms_err(wl->wlc->hw->d11core, in brcms_ops_stop()
482 bcma_core_pci_power_save(wl->wlc->hw->d11core->bus, false); in brcms_ops_stop()
485 spin_lock_bh(&wl->lock); in brcms_ops_stop()
486 brcms_down(wl); in brcms_ops_stop()
487 spin_unlock_bh(&wl->lock); in brcms_ops_stop()
493 struct brcms_info *wl = hw->priv; in brcms_ops_add_interface() local
499 brcms_err(wl->wlc->hw->d11core, in brcms_ops_add_interface()
505 spin_lock_bh(&wl->lock); 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()
528 struct brcms_info *wl = hw->priv; in brcms_ops_config() local
529 struct bcma_device *core = wl->wlc->hw->d11core; in brcms_ops_config()
533 spin_lock_bh(&wl->lock); in brcms_ops_config()
535 brcms_c_set_beacon_listen_interval(wl->wlc, in brcms_ops_config()
548 err = brcms_c_set_tx_power(wl->wlc, conf->power_level); in brcms_ops_config()
554 new_int = brcms_c_get_tx_power(wl->wlc); in brcms_ops_config()
564 err = brcms_c_set_channel(wl->wlc, in brcms_ops_config()
570 err = brcms_c_set_rate_limit(wl->wlc, in brcms_ops_config()
575 spin_unlock_bh(&wl->lock); in brcms_ops_config()
584 struct brcms_info *wl = hw->priv; in brcms_ops_bss_info_changed() local
585 struct bcma_device *core = wl->wlc->hw->d11core; in brcms_ops_bss_info_changed()
593 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
594 brcms_c_associate_upd(wl->wlc, info->assoc); in brcms_ops_bss_info_changed()
595 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
605 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
606 brcms_c_set_shortslot_override(wl->wlc, val); in brcms_ops_bss_info_changed()
607 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
614 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
615 brcms_c_protection_upd(wl->wlc, BRCMS_PROT_N_CFG, in brcms_ops_bss_info_changed()
617 brcms_c_protection_upd(wl->wlc, BRCMS_PROT_N_NONGF, in brcms_ops_bss_info_changed()
619 brcms_c_protection_upd(wl->wlc, BRCMS_PROT_N_OBSS, in brcms_ops_bss_info_changed()
621 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
631 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
632 brcms_c_get_current_rateset(wl->wlc, &rs); in brcms_ops_bss_info_changed()
633 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
636 bi = hw->wiphy->bands[brcms_c_get_curband(wl->wlc)]; in brcms_ops_bss_info_changed()
647 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
648 error = brcms_c_set_rateset(wl->wlc, &rs); in brcms_ops_bss_info_changed()
649 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
656 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
657 brcms_c_set_beacon_period(wl->wlc, info->beacon_int); in brcms_ops_bss_info_changed()
658 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
662 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
663 brcms_c_set_addrmatch(wl->wlc, RCM_BSSID_OFFSET, info->bssid); in brcms_ops_bss_info_changed()
664 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
668 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
669 brcms_c_set_ssid(wl->wlc, info->ssid, info->ssid_len); in brcms_ops_bss_info_changed()
670 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
677 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
679 brcms_c_set_new_beacon(wl->wlc, beacon, tim_offset, in brcms_ops_bss_info_changed()
681 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
687 spin_lock_bh(&wl->lock); in brcms_ops_bss_info_changed()
689 brcms_c_set_new_probe_resp(wl->wlc, probe_resp); in brcms_ops_bss_info_changed()
690 spin_unlock_bh(&wl->lock); in brcms_ops_bss_info_changed()
699 brcms_c_enable_probe_resp(wl->wlc, true); in brcms_ops_bss_info_changed()
701 brcms_c_enable_probe_resp(wl->wlc, false); in brcms_ops_bss_info_changed()
740 struct brcms_info *wl = hw->priv; in brcms_ops_configure_filter() local
741 struct bcma_device *core = wl->wlc->hw->d11core; in brcms_ops_configure_filter()
761 spin_lock_bh(&wl->lock); in brcms_ops_configure_filter()
762 brcms_c_mac_promisc(wl->wlc, *total_flags); in brcms_ops_configure_filter()
763 spin_unlock_bh(&wl->lock); in brcms_ops_configure_filter()
771 struct brcms_info *wl = hw->priv; in brcms_ops_sw_scan_start() local
772 spin_lock_bh(&wl->lock); in brcms_ops_sw_scan_start()
773 brcms_c_scan_start(wl->wlc); in brcms_ops_sw_scan_start()
774 spin_unlock_bh(&wl->lock); in brcms_ops_sw_scan_start()
781 struct brcms_info *wl = hw->priv; in brcms_ops_sw_scan_complete() local
782 spin_lock_bh(&wl->lock); in brcms_ops_sw_scan_complete()
783 brcms_c_scan_stop(wl->wlc); in brcms_ops_sw_scan_complete()
784 spin_unlock_bh(&wl->lock); in brcms_ops_sw_scan_complete()
792 struct brcms_info *wl = hw->priv; in brcms_ops_conf_tx() local
794 spin_lock_bh(&wl->lock); in brcms_ops_conf_tx()
795 brcms_c_wme_setparams(wl->wlc, queue, params, true); in brcms_ops_conf_tx()
796 spin_unlock_bh(&wl->lock); in brcms_ops_conf_tx()
805 struct brcms_info *wl = hw->priv; in brcms_ops_sta_add() local
806 struct scb *scb = &wl->wlc->pri_scb; in brcms_ops_sta_add()
810 wl->pub->global_ampdu = &(scb->scb_ampdu); in brcms_ops_sta_add()
811 wl->pub->global_ampdu->scb = scb; in brcms_ops_sta_add()
812 wl->pub->global_ampdu->max_pdu = 16; in brcms_ops_sta_add()
828 struct brcms_info *wl = hw->priv; in brcms_ops_ampdu_action() local
829 struct scb *scb = &wl->wlc->pri_scb; in brcms_ops_ampdu_action()
840 spin_lock_bh(&wl->lock); in brcms_ops_ampdu_action()
841 status = brcms_c_aggregatable(wl->wlc, tid); in brcms_ops_ampdu_action()
842 spin_unlock_bh(&wl->lock); in brcms_ops_ampdu_action()
844 brcms_err(wl->wlc->hw->d11core, in brcms_ops_ampdu_action()
854 spin_lock_bh(&wl->lock); in brcms_ops_ampdu_action()
855 brcms_c_ampdu_flush(wl->wlc, sta, tid); in brcms_ops_ampdu_action()
856 spin_unlock_bh(&wl->lock); in brcms_ops_ampdu_action()
866 spin_lock_bh(&wl->lock); in brcms_ops_ampdu_action()
867 brcms_c_ampdu_tx_operational(wl->wlc, tid, buf_size, in brcms_ops_ampdu_action()
870 spin_unlock_bh(&wl->lock); in brcms_ops_ampdu_action()
874 brcms_err(wl->wlc->hw->d11core, in brcms_ops_ampdu_action()
883 struct brcms_info *wl = hw->priv; in brcms_ops_rfkill_poll() local
886 spin_lock_bh(&wl->lock); in brcms_ops_rfkill_poll()
887 blocked = brcms_c_check_radio_disabled(wl->wlc); in brcms_ops_rfkill_poll()
888 spin_unlock_bh(&wl->lock); in brcms_ops_rfkill_poll()
890 wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, blocked); in brcms_ops_rfkill_poll()
893 static bool brcms_tx_flush_completed(struct brcms_info *wl) in brcms_tx_flush_completed() argument
897 spin_lock_bh(&wl->lock); in brcms_tx_flush_completed()
898 result = brcms_c_tx_flush_completed(wl->wlc); in brcms_tx_flush_completed()
899 spin_unlock_bh(&wl->lock); in brcms_tx_flush_completed()
906 struct brcms_info *wl = hw->priv; in brcms_ops_flush() local
911 ret = wait_event_timeout(wl->tx_flush_wq, in brcms_ops_flush()
912 brcms_tx_flush_completed(wl), in brcms_ops_flush()
915 brcms_dbg_mac80211(wl->wlc->hw->d11core, in brcms_ops_flush()
921 struct brcms_info *wl = hw->priv; in brcms_ops_get_tsf() local
924 spin_lock_bh(&wl->lock); in brcms_ops_get_tsf()
925 tsf = brcms_c_tsf_get(wl->wlc); in brcms_ops_get_tsf()
926 spin_unlock_bh(&wl->lock); in brcms_ops_get_tsf()
934 struct brcms_info *wl = hw->priv; in brcms_ops_set_tsf() local
936 spin_lock_bh(&wl->lock); in brcms_ops_set_tsf()
937 brcms_c_tsf_set(wl->wlc, tsf); in brcms_ops_set_tsf()
938 spin_unlock_bh(&wl->lock); in brcms_ops_set_tsf()
963 struct brcms_info *wl; in brcms_dpc() local
965 wl = (struct brcms_info *) data; in brcms_dpc()
967 spin_lock_bh(&wl->lock); in brcms_dpc()
970 if (wl->pub->up) { in brcms_dpc()
971 if (wl->resched) { in brcms_dpc()
974 spin_lock_irqsave(&wl->isr_lock, flags); in brcms_dpc()
975 brcms_c_intrsupd(wl->wlc); in brcms_dpc()
976 spin_unlock_irqrestore(&wl->isr_lock, flags); in brcms_dpc()
979 wl->resched = brcms_c_dpc(wl->wlc, true); in brcms_dpc()
983 if (!wl->pub->up) in brcms_dpc()
987 if (wl->resched) in brcms_dpc()
988 tasklet_schedule(&wl->tasklet); in brcms_dpc()
991 brcms_intrson(wl); in brcms_dpc()
994 spin_unlock_bh(&wl->lock); in brcms_dpc()
995 wake_up(&wl->tx_flush_wq); in brcms_dpc()
1000 struct brcms_info *wl; in brcms_isr() local
1003 wl = (struct brcms_info *) dev_id; in brcms_isr()
1005 spin_lock(&wl->isr_lock); in brcms_isr()
1008 if (brcms_c_isr(wl->wlc)) { in brcms_isr()
1010 tasklet_schedule(&wl->tasklet); in brcms_isr()
1014 spin_unlock(&wl->isr_lock); in brcms_isr()
1024 struct brcms_info *wl = hw->priv; in ieee_hw_rate_init() local
1025 struct brcms_c_info *wlc = wl->wlc; in ieee_hw_rate_init()
1033 phy_type = brcms_c_get_phy_type(wl->wlc, 0); in ieee_hw_rate_init()
1048 if (wl->pub->_nbands > 1) { in ieee_hw_rate_init()
1103 struct brcms_info *wl = NULL; in brcms_attach() local
1117 wl = hw->priv; in brcms_attach()
1118 if (WARN_ON(hw == NULL) || WARN_ON(wl == NULL)) in brcms_attach()
1120 wl->wiphy = hw->wiphy; in brcms_attach()
1122 atomic_set(&wl->callbacks, 0); in brcms_attach()
1124 init_waitqueue_head(&wl->tx_flush_wq); in brcms_attach()
1127 tasklet_init(&wl->tasklet, brcms_dpc, (unsigned long) wl); in brcms_attach()
1129 spin_lock_init(&wl->lock); in brcms_attach()
1130 spin_lock_init(&wl->isr_lock); in brcms_attach()
1133 wl->wlc = brcms_c_attach((void *)wl, pdev, unit, false, &err); in brcms_attach()
1134 if (!wl->wlc) { in brcms_attach()
1135 wiphy_err(wl->wiphy, "%s: attach() failed with code %d\n", in brcms_attach()
1139 wl->pub = brcms_c_pub(wl->wlc); in brcms_attach()
1141 wl->pub->ieee_hw = hw; in brcms_attach()
1145 IRQF_SHARED, KBUILD_MODNAME, wl)) { in brcms_attach()
1146 wiphy_err(wl->wiphy, "wl%d: request_irq() failed\n", unit); in brcms_attach()
1149 wl->irq = pdev->irq; in brcms_attach()
1152 brcms_c_module_register(wl->pub, "linux", wl, NULL); in brcms_attach()
1155 wiphy_err(wl->wiphy, "wl%d: %s: ieee_hw_init failed!\n", unit, in brcms_attach()
1160 brcms_c_regd_init(wl->wlc); in brcms_attach()
1162 memcpy(perm, &wl->pub->cur_etheraddr, ETH_ALEN); in brcms_attach()
1169 wiphy_err(wl->wiphy, "%s: ieee80211_register_hw failed, status" in brcms_attach()
1172 if (wl->pub->srom_ccode[0] && in brcms_attach()
1173 regulatory_hint(wl->wiphy, wl->pub->srom_ccode)) in brcms_attach()
1174 wiphy_err(wl->wiphy, "%s: regulatory hint failed\n", __func__); in brcms_attach()
1176 brcms_debugfs_attach(wl->pub); in brcms_attach()
1177 brcms_debugfs_create_files(wl->pub); in brcms_attach()
1179 return wl; in brcms_attach()
1182 brcms_free(wl); in brcms_attach()
1198 struct brcms_info *wl; in brcms_bcma_probe() local
1219 memset(hw->priv, 0, sizeof(*wl)); in brcms_bcma_probe()
1221 wl = brcms_attach(pdev); in brcms_bcma_probe()
1222 if (!wl) { in brcms_bcma_probe()
1226 brcms_led_register(wl); in brcms_bcma_probe()
1233 struct brcms_info *wl; in brcms_suspend() local
1237 wl = hw->priv; in brcms_suspend()
1238 if (!wl) { in brcms_suspend()
1245 spin_lock_bh(&wl->lock); in brcms_suspend()
1246 wl->pub->hw_up = false; in brcms_suspend()
1247 spin_unlock_bh(&wl->lock); in brcms_suspend()
1249 brcms_dbg_info(wl->wlc->hw->d11core, "brcms_suspend ok\n"); in brcms_suspend()
1315 void brcms_txflowcontrol(struct brcms_info *wl, struct brcms_if *wlif, in brcms_txflowcontrol() argument
1318 brcms_err(wl->wlc->hw->d11core, "Shouldn't be here %s\n", __func__); in brcms_txflowcontrol()
1324 void brcms_init(struct brcms_info *wl) in brcms_init() argument
1326 brcms_dbg_info(wl->wlc->hw->d11core, "Initializing wl%d\n", in brcms_init()
1327 wl->pub->unit); in brcms_init()
1328 brcms_reset(wl); in brcms_init()
1329 brcms_c_init(wl->wlc, wl->mute_tx); in brcms_init()
1335 uint brcms_reset(struct brcms_info *wl) in brcms_reset() argument
1337 brcms_dbg_info(wl->wlc->hw->d11core, "Resetting wl%d\n", wl->pub->unit); in brcms_reset()
1338 brcms_c_reset(wl->wlc); in brcms_reset()
1341 wl->resched = false; in brcms_reset()
1344 wl->pub->up = false; in brcms_reset()
1349 void brcms_fatal_error(struct brcms_info *wl) in brcms_fatal_error() argument
1351 brcms_err(wl->wlc->hw->d11core, "wl%d: fatal error, reinitializing\n", in brcms_fatal_error()
1352 wl->wlc->pub->unit); in brcms_fatal_error()
1353 brcms_reset(wl); in brcms_fatal_error()
1354 ieee80211_restart_hw(wl->pub->ieee_hw); in brcms_fatal_error()
1361 void brcms_intrson(struct brcms_info *wl) in brcms_intrson() argument
1365 spin_lock_irqsave(&wl->isr_lock, flags); in brcms_intrson()
1366 brcms_c_intrson(wl->wlc); in brcms_intrson()
1367 spin_unlock_irqrestore(&wl->isr_lock, flags); in brcms_intrson()
1370 u32 brcms_intrsoff(struct brcms_info *wl) in brcms_intrsoff() argument
1375 spin_lock_irqsave(&wl->isr_lock, flags); in brcms_intrsoff()
1376 status = brcms_c_intrsoff(wl->wlc); in brcms_intrsoff()
1377 spin_unlock_irqrestore(&wl->isr_lock, flags); in brcms_intrsoff()
1381 void brcms_intrsrestore(struct brcms_info *wl, u32 macintmask) in brcms_intrsrestore() argument
1385 spin_lock_irqsave(&wl->isr_lock, flags); in brcms_intrsrestore()
1386 brcms_c_intrsrestore(wl->wlc, macintmask); in brcms_intrsrestore()
1387 spin_unlock_irqrestore(&wl->isr_lock, flags); in brcms_intrsrestore()
1393 int brcms_up(struct brcms_info *wl) in brcms_up() argument
1397 if (wl->pub->up) in brcms_up()
1400 error = brcms_c_up(wl->wlc); in brcms_up()
1408 void brcms_down(struct brcms_info *wl) in brcms_down() argument
1413 ret_val = brcms_c_down(wl->wlc); in brcms_down()
1414 callbacks = atomic_read(&wl->callbacks) - ret_val; in brcms_down()
1417 spin_unlock_bh(&wl->lock); in brcms_down()
1422 SPINWAIT((atomic_read(&wl->callbacks) > callbacks), 100 * 1000); in brcms_down()
1424 spin_lock_bh(&wl->lock); in brcms_down()
1435 spin_lock_bh(&t->wl->lock); in _brcms_timer()
1439 atomic_inc(&t->wl->callbacks); in _brcms_timer()
1440 ieee80211_queue_delayed_work(t->wl->pub->ieee_hw, in _brcms_timer()
1450 atomic_dec(&t->wl->callbacks); in _brcms_timer()
1452 spin_unlock_bh(&t->wl->lock); in _brcms_timer()
1461 struct brcms_timer *brcms_init_timer(struct brcms_info *wl, in brcms_init_timer() argument
1472 t->wl = wl; in brcms_init_timer()
1475 t->next = wl->timers; in brcms_init_timer()
1476 wl->timers = t; in brcms_init_timer()
1495 struct ieee80211_hw *hw = t->wl->pub->ieee_hw; in brcms_add_timer()
1499 brcms_dbg_info(t->wl->wlc->hw->d11core, in brcms_add_timer()
1507 atomic_inc(&t->wl->callbacks); in brcms_add_timer()
1525 atomic_dec(&t->wl->callbacks); in brcms_del_timer()
1536 struct brcms_info *wl = t->wl; in brcms_free_timer() local
1542 if (wl->timers == t) { in brcms_free_timer()
1543 wl->timers = wl->timers->next; in brcms_free_timer()
1552 tmp = wl->timers; in brcms_free_timer()
1570 int brcms_ucode_init_buf(struct brcms_info *wl, void **pbuf, u32 idx) in brcms_ucode_init_buf() argument
1575 for (i = 0; i < wl->fw.fw_cnt; i++) { in brcms_ucode_init_buf()
1576 hdr = (struct firmware_hdr *)wl->fw.fw_hdr[i]->data; in brcms_ucode_init_buf()
1577 for (entry = 0; entry < wl->fw.hdr_num_entries[i]; in brcms_ucode_init_buf()
1581 pdata = wl->fw.fw_bin[i]->data + in brcms_ucode_init_buf()
1591 brcms_err(wl->wlc->hw->d11core, in brcms_ucode_init_buf()
1602 int brcms_ucode_init_uint(struct brcms_info *wl, size_t *n_bytes, u32 idx) in brcms_ucode_init_uint() argument
1607 for (i = 0; i < wl->fw.fw_cnt; i++) { in brcms_ucode_init_uint()
1608 hdr = (struct firmware_hdr *)wl->fw.fw_hdr[i]->data; in brcms_ucode_init_uint()
1609 for (entry = 0; entry < wl->fw.hdr_num_entries[i]; in brcms_ucode_init_uint()
1612 pdata = wl->fw.fw_bin[i]->data + in brcms_ucode_init_uint()
1615 brcms_err(wl->wlc->hw->d11core, in brcms_ucode_init_uint()
1624 brcms_err(wl->wlc->hw->d11core, in brcms_ucode_init_uint()
1643 int brcms_check_firmwares(struct brcms_info *wl) in brcms_check_firmwares() argument
1652 fw = wl->fw.fw_bin[i]; in brcms_check_firmwares()
1653 fw_hdr = wl->fw.fw_hdr[i]; in brcms_check_firmwares()
1657 wiphy_err(wl->wiphy, "%s: invalid bin/hdr fw\n", in brcms_check_firmwares()
1661 wiphy_err(wl->wiphy, "%s: non integral fw hdr file " in brcms_check_firmwares()
1666 wiphy_err(wl->wiphy, "%s: out of bounds fw file size %zu\n", in brcms_check_firmwares()
1672 for (entry = 0; entry < wl->fw.hdr_num_entries[i] && in brcms_check_firmwares()
1677 wiphy_err(wl->wiphy, in brcms_check_firmwares()
1685 if (rc == 0 && wl->fw.fw_cnt != i) { in brcms_check_firmwares()
1686 wiphy_err(wl->wiphy, "%s: invalid fw_cnt=%d\n", __func__, in brcms_check_firmwares()
1687 wl->fw.fw_cnt); in brcms_check_firmwares()
1696 bool brcms_rfkill_set_hw_state(struct brcms_info *wl) in brcms_rfkill_set_hw_state() argument
1698 bool blocked = brcms_c_check_radio_disabled(wl->wlc); in brcms_rfkill_set_hw_state()
1700 spin_unlock_bh(&wl->lock); in brcms_rfkill_set_hw_state()
1701 wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, blocked); in brcms_rfkill_set_hw_state()
1703 wiphy_rfkill_start_polling(wl->pub->ieee_hw->wiphy); in brcms_rfkill_set_hw_state()
1704 spin_lock_bh(&wl->lock); in brcms_rfkill_set_hw_state()