Lines Matching refs:wl

374 static int b43_ratelimit(struct b43_wl *wl)  in b43_ratelimit()  argument
376 if (!wl || !wl->current_dev) in b43_ratelimit()
378 if (b43_status(wl->current_dev) < B43_STAT_STARTED) in b43_ratelimit()
385 void b43info(struct b43_wl *wl, const char *fmt, ...) in b43info() argument
392 if (!b43_ratelimit(wl)) in b43info()
401 (wl && wl->hw) ? wiphy_name(wl->hw->wiphy) : "wlan", &vaf); in b43info()
406 void b43err(struct b43_wl *wl, const char *fmt, ...) in b43err() argument
413 if (!b43_ratelimit(wl)) in b43err()
422 (wl && wl->hw) ? wiphy_name(wl->hw->wiphy) : "wlan", &vaf); in b43err()
427 void b43warn(struct b43_wl *wl, const char *fmt, ...) in b43warn() argument
434 if (!b43_ratelimit(wl)) in b43warn()
443 (wl && wl->hw) ? wiphy_name(wl->hw->wiphy) : "wlan", &vaf); in b43warn()
448 void b43dbg(struct b43_wl *wl, const char *fmt, ...) in b43dbg() argument
462 (wl && wl->hw) ? wiphy_name(wl->hw->wiphy) : "wlan", &vaf); in b43dbg()
692 bssid = dev->wl->bssid; in b43_write_mac_bssid_templates()
693 mac = dev->wl->mac_addr; in b43_write_mac_bssid_templates()
713 b43_macfilter_set(dev, B43_MACFILTER_SELF, dev->wl->mac_addr); in b43_upload_card_macaddress()
720 if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) in b43_set_slot_time()
926 b43dbg(dev->wl, "rx_tkip_phase1_write : idx 0x%x, iv32 0x%x\n", in rx_tkip_phase1_write()
945 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_update_tkip_key() local
954 B43_WARN_ON(!mutex_is_locked(&wl->mutex)); in b43_op_update_tkip_key()
955 dev = wl->current_dev; in b43_op_update_tkip_key()
1045 b43warn(dev->wl, "Out of hardware key memory\n"); in b43_key_write()
1104 b43dbg(dev->wl, "Hardware key memory dump: USEDEFKEYS=%u\n", in b43_dump_keymemory()
1495 if (b43_is_mode(dev->wl, NL80211_IFTYPE_AP)) { in handle_irq_tbtt_indication()
1501 if (b43_is_mode(dev->wl, NL80211_IFTYPE_ADHOC)) in handle_irq_tbtt_indication()
1625 spin_lock_irqsave(&dev->wl->beacon_lock, flags); in b43_write_beacon_template()
1626 info = IEEE80211_SKB_CB(dev->wl->current_beacon); in b43_write_beacon_template()
1627 rate = ieee80211_get_tx_rate(dev->wl->hw, info)->hw_value; in b43_write_beacon_template()
1629 beacon_skb = skb_clone(dev->wl->current_beacon, GFP_ATOMIC); in b43_write_beacon_template()
1630 spin_unlock_irqrestore(&dev->wl->beacon_lock, flags); in b43_write_beacon_template()
1633 b43dbg(dev->wl, "Could not upload beacon. " in b43_write_beacon_template()
1707 b43dbg(dev->wl, "Updated beacon template at 0x%x\n", ram_offset); in b43_write_beacon_template()
1714 struct b43_wl *wl = dev->wl; in b43_upload_beacon0() local
1716 if (wl->beacon0_uploaded) in b43_upload_beacon0()
1719 wl->beacon0_uploaded = true; in b43_upload_beacon0()
1724 struct b43_wl *wl = dev->wl; in b43_upload_beacon1() local
1726 if (wl->beacon1_uploaded) in b43_upload_beacon1()
1729 wl->beacon1_uploaded = true; in b43_upload_beacon1()
1734 struct b43_wl *wl = dev->wl; in handle_irq_beacon() local
1737 if (!b43_is_mode(wl, NL80211_IFTYPE_AP) && in handle_irq_beacon()
1738 !b43_is_mode(wl, NL80211_IFTYPE_MESH_POINT) && in handle_irq_beacon()
1739 !b43_is_mode(wl, NL80211_IFTYPE_ADHOC)) in handle_irq_beacon()
1758 if (unlikely(wl->beacon_templates_virgin)) { in handle_irq_beacon()
1761 wl->beacon_templates_virgin = false; in handle_irq_beacon()
1805 struct b43_wl *wl = container_of(work, struct b43_wl, in b43_beacon_update_trigger_work() local
1809 mutex_lock(&wl->mutex); in b43_beacon_update_trigger_work()
1810 dev = wl->current_dev; in b43_beacon_update_trigger_work()
1817 spin_lock_irq(&wl->hardirq_lock); in b43_beacon_update_trigger_work()
1820 spin_unlock_irq(&wl->hardirq_lock); in b43_beacon_update_trigger_work()
1823 mutex_unlock(&wl->mutex); in b43_beacon_update_trigger_work()
1827 static void b43_update_templates(struct b43_wl *wl) in b43_update_templates() argument
1842 beacon = ieee80211_beacon_get(wl->hw, wl->vif); in b43_update_templates()
1846 spin_lock_irqsave(&wl->beacon_lock, flags); in b43_update_templates()
1847 old_beacon = wl->current_beacon; in b43_update_templates()
1848 wl->current_beacon = beacon; in b43_update_templates()
1849 wl->beacon0_uploaded = false; in b43_update_templates()
1850 wl->beacon1_uploaded = false; in b43_update_templates()
1851 spin_unlock_irqrestore(&wl->beacon_lock, flags); in b43_update_templates()
1853 ieee80211_queue_work(wl->hw, &wl->beacon_update_trigger); in b43_update_templates()
1870 b43dbg(dev->wl, "Set beacon interval to %u\n", beacon_int); in b43_set_beacon_int()
1879 b43err(dev->wl, "Whoopsy, firmware panic! Reason: %u\n", reason); in b43_handle_firmware_panic()
1883 b43dbg(dev->wl, "The panic reason is unknown.\n"); in b43_handle_firmware_panic()
1919 b43dbg(dev->wl, "SHM-dump: Failed to allocate memory\n"); in handle_irq_ucode_debug()
1926 b43info(dev->wl, "Shared memory dump:\n"); in handle_irq_ucode_debug()
1934 b43info(dev->wl, "Microcode register dump:\n"); in handle_irq_ucode_debug()
1955 b43info(dev->wl, "The firmware just executed the MARKER(%u) " in handle_irq_ucode_debug()
1960 b43dbg(dev->wl, "Debug-IRQ triggered for unknown reason: %u\n", in handle_irq_ucode_debug()
1986 b43err(dev->wl, "MAC transmission error\n"); in b43_do_interrupt_thread()
1989 b43err(dev->wl, "PHY transmission error\n"); in b43_do_interrupt_thread()
1994 b43err(dev->wl, "Too many PHY TX errors, " in b43_do_interrupt_thread()
2001 b43err(dev->wl, in b43_do_interrupt_thread()
2006 b43err(dev->wl, "This device does not support DMA " in b43_do_interrupt_thread()
2032 b43warn(dev->wl, "RX descriptor underrun\n"); in b43_do_interrupt_thread()
2069 mutex_lock(&dev->wl->mutex); in b43_interrupt_thread_handler()
2072 mutex_unlock(&dev->wl->mutex); in b43_interrupt_thread_handler()
2134 spin_lock(&dev->wl->hardirq_lock); in b43_interrupt_handler()
2137 spin_unlock(&dev->wl->hardirq_lock); in b43_interrupt_handler()
2145 struct b43_wl *wl = dev->wl; in b43_sdio_interrupt_handler() local
2148 mutex_lock(&wl->mutex); in b43_sdio_interrupt_handler()
2154 mutex_unlock(&wl->mutex); in b43_sdio_interrupt_handler()
2173 static void b43_print_fw_helptext(struct b43_wl *wl, bool error) in b43_print_fw_helptext() argument
2182 b43err(wl, text); in b43_print_fw_helptext()
2184 b43warn(wl, text); in b43_print_fw_helptext()
2525 b43err(dev->wl, "The driver does not know which firmware (ucode) " in b43_try_request_fw()
2531 b43err(dev->wl, "The driver does not know which firmware (PCM) " in b43_try_request_fw()
2537 b43err(dev->wl, "The driver does not know which firmware (initvals) " in b43_try_request_fw()
2552 static int b43_one_core_attach(struct b43_bus_dev *dev, struct b43_wl *wl);
2554 static int b43_rng_init(struct b43_wl *wl);
2558 struct b43_wl *wl = container_of(work, in b43_request_firmware() local
2560 struct b43_wldev *dev = wl->current_dev; in b43_request_firmware()
2591 b43err(dev->wl, "%s", errmsg); in b43_request_firmware()
2593 b43_print_fw_helptext(dev->wl, 1); in b43_request_firmware()
2597 wl->hw->queues = B43_QOS_QUEUE_NUM; in b43_request_firmware()
2599 wl->hw->queues = 1; in b43_request_firmware()
2601 err = ieee80211_register_hw(wl->hw); in b43_request_firmware()
2604 wl->hw_registred = true; in b43_request_firmware()
2605 b43_leds_register(wl->current_dev); in b43_request_firmware()
2608 b43_rng_init(wl); in b43_request_firmware()
2621 struct wiphy *wiphy = dev->wl->hw->wiphy; in b43_upload_microcode()
2677 b43err(dev->wl, "Microcode not responding\n"); in b43_upload_microcode()
2678 b43_print_fw_helptext(dev->wl, 1); in b43_upload_microcode()
2693 b43err(dev->wl, "YOUR FIRMWARE IS TOO OLD. Firmware from " in b43_upload_microcode()
2696 b43_print_fw_helptext(dev->wl, 1); in b43_upload_microcode()
2710 dev->qos_enabled = dev->wl->hw->queues > 1; in b43_upload_microcode()
2719 b43info(dev->wl, "Loading OpenSource firmware version %u.%u\n", in b43_upload_microcode()
2724 b43info(dev->wl, "Hardware crypto acceleration not supported by firmware\n"); in b43_upload_microcode()
2731 b43info(dev->wl, "Loading firmware version %u.%u " in b43_upload_microcode()
2737 b43warn(dev->wl, "No \"pcm5.fw\" firmware file found. " in b43_upload_microcode()
2739 b43_print_fw_helptext(dev->wl, 0); in b43_upload_microcode()
2750 b43warn(dev->wl, "You are using an old firmware image. " in b43_upload_microcode()
2753 b43_print_fw_helptext(dev->wl, 0); in b43_upload_microcode()
2821 b43err(dev->wl, "Initial Values Firmware file-format error.\n"); in b43_write_initvals()
2822 b43_print_fw_helptext(dev->wl, 1); in b43_write_initvals()
2970 b43err(dev->wl, "b43_mac_enable(): The firmware " in b43_mac_enable()
3016 b43err(dev->wl, "MAC suspend failed\n"); in b43_mac_suspend()
3108 struct b43_wl *wl = dev->wl; in b43_adjust_opmode() local
3122 if (b43_is_mode(wl, NL80211_IFTYPE_AP) || in b43_adjust_opmode()
3123 b43_is_mode(wl, NL80211_IFTYPE_MESH_POINT)) in b43_adjust_opmode()
3125 else if (b43_is_mode(wl, NL80211_IFTYPE_ADHOC)) in b43_adjust_opmode()
3128 if (wl->filter_flags & FIF_CONTROL) in b43_adjust_opmode()
3130 if (wl->filter_flags & FIF_FCSFAIL) in b43_adjust_opmode()
3132 if (wl->filter_flags & FIF_PLCPFAIL) in b43_adjust_opmode()
3134 if (wl->filter_flags & FIF_PROMISC_IN_BSS) in b43_adjust_opmode()
3136 if (wl->filter_flags & FIF_BCN_PRBRESP_PROMISC) in b43_adjust_opmode()
3355 b43dbg(dev->wl, "Chip initialized\n"); in b43_chip_init()
3391 b43err(dev->wl, "Firmware watchdog: The firmware died!\n"); in b43_periodic_every15sec()
3410 b43dbg(dev->wl, "Stats: %7u IRQs/sec, %7u TX/sec, %7u RX/sec\n", in b43_periodic_every15sec()
3419 b43dbg(dev->wl, "Stats: %7u IRQ-%02u/sec (0x%08X)\n", in b43_periodic_every15sec()
3449 struct b43_wl *wl = dev->wl; in b43_periodic_work_handler() local
3452 mutex_lock(&wl->mutex); in b43_periodic_work_handler()
3467 ieee80211_queue_delayed_work(wl->hw, &dev->periodic_work, delay); in b43_periodic_work_handler()
3469 mutex_unlock(&wl->mutex); in b43_periodic_work_handler()
3478 ieee80211_queue_delayed_work(dev->wl->hw, work, 0); in b43_periodic_tasks_setup()
3504 b43warn(dev->wl, "Unaligned 32bit SHM read access is broken\n"); in b43_validate_chipaccess()
3510 b43warn(dev->wl, "Unaligned 32bit SHM write access is broken\n"); in b43_validate_chipaccess()
3534 b43err(dev->wl, "Failed to validate the chipaccess\n"); in b43_validate_chipaccess()
3554 struct b43_wl *wl = (struct b43_wl *)rng->priv; in b43_rng_read() local
3558 mutex_lock(&wl->mutex); in b43_rng_read()
3559 dev = wl->current_dev; in b43_rng_read()
3564 mutex_unlock(&wl->mutex); in b43_rng_read()
3570 static void b43_rng_exit(struct b43_wl *wl) in b43_rng_exit() argument
3573 if (wl->rng_initialized) in b43_rng_exit()
3574 hwrng_unregister(&wl->rng); in b43_rng_exit()
3578 static int b43_rng_init(struct b43_wl *wl) in b43_rng_init() argument
3583 snprintf(wl->rng_name, ARRAY_SIZE(wl->rng_name), in b43_rng_init()
3584 "%s_%s", KBUILD_MODNAME, wiphy_name(wl->hw->wiphy)); in b43_rng_init()
3585 wl->rng.name = wl->rng_name; in b43_rng_init()
3586 wl->rng.data_read = b43_rng_read; in b43_rng_init()
3587 wl->rng.priv = (unsigned long)wl; in b43_rng_init()
3588 wl->rng_initialized = true; in b43_rng_init()
3589 err = hwrng_register(&wl->rng); in b43_rng_init()
3591 wl->rng_initialized = false; in b43_rng_init()
3592 b43err(wl, "Failed to register the random " in b43_rng_init()
3602 struct b43_wl *wl = container_of(work, struct b43_wl, tx_work); in b43_tx_work() local
3608 mutex_lock(&wl->mutex); in b43_tx_work()
3609 dev = wl->current_dev; in b43_tx_work()
3611 mutex_unlock(&wl->mutex); in b43_tx_work()
3616 while (skb_queue_len(&wl->tx_queue[queue_num])) { in b43_tx_work()
3617 skb = skb_dequeue(&wl->tx_queue[queue_num]); in b43_tx_work()
3623 wl->tx_queue_stopped[queue_num] = 1; in b43_tx_work()
3624 ieee80211_stop_queue(wl->hw, queue_num); in b43_tx_work()
3625 skb_queue_head(&wl->tx_queue[queue_num], skb); in b43_tx_work()
3629 ieee80211_free_txskb(wl->hw, skb); in b43_tx_work()
3634 wl->tx_queue_stopped[queue_num] = 0; in b43_tx_work()
3640 mutex_unlock(&wl->mutex); in b43_tx_work()
3647 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_tx() local
3656 skb_queue_tail(&wl->tx_queue[skb->queue_mapping], skb); in b43_op_tx()
3657 if (!wl->tx_queue_stopped[skb->queue_mapping]) { in b43_op_tx()
3658 ieee80211_queue_work(wl->hw, &wl->tx_work); in b43_op_tx()
3660 ieee80211_stop_queue(wl->hw, skb->queue_mapping); in b43_op_tx()
3716 struct b43_wl *wl = dev->wl; in b43_qos_upload_all() local
3724 ARRAY_SIZE(wl->qos_params)); in b43_qos_upload_all()
3727 for (i = 0; i < ARRAY_SIZE(wl->qos_params); i++) { in b43_qos_upload_all()
3728 params = &(wl->qos_params[i]); in b43_qos_upload_all()
3735 static void b43_qos_clear(struct b43_wl *wl) in b43_qos_clear() argument
3743 ARRAY_SIZE(wl->qos_params)); in b43_qos_clear()
3745 for (i = 0; i < ARRAY_SIZE(wl->qos_params); i++) { in b43_qos_clear()
3746 params = &(wl->qos_params[i]); in b43_qos_clear()
3788 b43dbg(dev->wl, "QoS disabled\n"); in b43_qos_init()
3800 b43dbg(dev->wl, "QoS enabled\n"); in b43_qos_init()
3807 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_conf_tx() local
3812 if (queue >= ARRAY_SIZE(wl->qos_params)) { in b43_op_conf_tx()
3819 ARRAY_SIZE(wl->qos_params)); in b43_op_conf_tx()
3821 mutex_lock(&wl->mutex); in b43_op_conf_tx()
3822 dev = wl->current_dev; in b43_op_conf_tx()
3826 memcpy(&(wl->qos_params[queue].p), params, sizeof(*params)); in b43_op_conf_tx()
3828 b43_qos_params_upload(dev, &(wl->qos_params[queue].p), in b43_op_conf_tx()
3834 mutex_unlock(&wl->mutex); in b43_op_conf_tx()
3842 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_get_stats() local
3844 mutex_lock(&wl->mutex); in b43_op_get_stats()
3845 memcpy(stats, &wl->ieee_stats, sizeof(*stats)); in b43_op_get_stats()
3846 mutex_unlock(&wl->mutex); in b43_op_get_stats()
3853 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_get_tsf() local
3857 mutex_lock(&wl->mutex); in b43_op_get_tsf()
3858 dev = wl->current_dev; in b43_op_get_tsf()
3865 mutex_unlock(&wl->mutex); in b43_op_get_tsf()
3873 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_set_tsf() local
3876 mutex_lock(&wl->mutex); in b43_op_set_tsf()
3877 dev = wl->current_dev; in b43_op_set_tsf()
3882 mutex_unlock(&wl->mutex); in b43_op_set_tsf()
3921 b43err(dev->wl, "This device doesn't support %s-GHz band\n", in b43_switch_band()
3931 b43dbg(dev->wl, "Switching to %s GHz band\n", in b43_switch_band()
3995 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_config() local
3996 struct b43_wldev *dev = wl->current_dev; in b43_op_config()
4002 mutex_lock(&wl->mutex); in b43_op_config()
4030 dev->wl->radiotap_enabled = !!(conf->flags & IEEE80211_CONF_MONITOR); in b43_op_config()
4048 if (wl->radio_enabled != phy->radio_on) { in b43_op_config()
4049 if (wl->radio_enabled) { in b43_op_config()
4051 b43info(dev->wl, "Radio turned on by software\n"); in b43_op_config()
4053 b43info(dev->wl, "The hardware RF-kill button " in b43_op_config()
4059 b43info(dev->wl, "Radio turned off by software\n"); in b43_op_config()
4065 mutex_unlock(&wl->mutex); in b43_op_config()
4073 dev->wl->hw->wiphy->bands[b43_current_band(dev->wl)]; in b43_update_basic_rates()
4120 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_bss_info_changed() local
4123 mutex_lock(&wl->mutex); in b43_op_bss_info_changed()
4125 dev = wl->current_dev; in b43_op_bss_info_changed()
4129 B43_WARN_ON(wl->vif != vif); in b43_op_bss_info_changed()
4133 memcpy(wl->bssid, conf->bssid, ETH_ALEN); in b43_op_bss_info_changed()
4135 eth_zero_addr(wl->bssid); in b43_op_bss_info_changed()
4140 (b43_is_mode(wl, NL80211_IFTYPE_AP) || in b43_op_bss_info_changed()
4141 b43_is_mode(wl, NL80211_IFTYPE_MESH_POINT) || in b43_op_bss_info_changed()
4142 b43_is_mode(wl, NL80211_IFTYPE_ADHOC))) in b43_op_bss_info_changed()
4143 b43_update_templates(wl); in b43_op_bss_info_changed()
4153 (b43_is_mode(wl, NL80211_IFTYPE_AP) || in b43_op_bss_info_changed()
4154 b43_is_mode(wl, NL80211_IFTYPE_MESH_POINT) || in b43_op_bss_info_changed()
4155 b43_is_mode(wl, NL80211_IFTYPE_ADHOC)) && in b43_op_bss_info_changed()
4171 mutex_unlock(&wl->mutex); in b43_op_bss_info_changed()
4178 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_set_key() local
4202 mutex_lock(&wl->mutex); in b43_op_set_key()
4204 dev = wl->current_dev; in b43_op_set_key()
4288 b43dbg(wl, "%s hardware based encryption for keyidx: %d, " in b43_op_set_key()
4294 mutex_unlock(&wl->mutex); in b43_op_set_key()
4303 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_configure_filter() local
4306 mutex_lock(&wl->mutex); in b43_op_configure_filter()
4307 dev = wl->current_dev; in b43_op_configure_filter()
4329 wl->filter_flags = *fflags; in b43_op_configure_filter()
4335 mutex_unlock(&wl->mutex); in b43_op_configure_filter()
4343 struct b43_wl *wl; in b43_wireless_core_stop() local
4350 wl = dev->wl; in b43_wireless_core_stop()
4356 mutex_unlock(&wl->mutex); in b43_wireless_core_stop()
4358 cancel_work_sync(&wl->tx_work); in b43_wireless_core_stop()
4360 mutex_lock(&wl->mutex); in b43_wireless_core_stop()
4361 dev = wl->current_dev; in b43_wireless_core_stop()
4374 spin_lock_irq(&wl->hardirq_lock); in b43_wireless_core_stop()
4377 spin_unlock_irq(&wl->hardirq_lock); in b43_wireless_core_stop()
4381 mutex_unlock(&wl->mutex); in b43_wireless_core_stop()
4388 mutex_lock(&wl->mutex); in b43_wireless_core_stop()
4389 dev = wl->current_dev; in b43_wireless_core_stop()
4402 while (skb_queue_len(&wl->tx_queue[queue_num])) { in b43_wireless_core_stop()
4405 skb = skb_dequeue(&wl->tx_queue[queue_num]); in b43_wireless_core_stop()
4406 ieee80211_free_txskb(wl->hw, skb); in b43_wireless_core_stop()
4412 b43dbg(wl, "Wireless interface stopped\n"); in b43_wireless_core_stop()
4428 b43err(dev->wl, "Cannot request SDIO IRQ\n"); in b43_wireless_core_start()
4436 b43err(dev->wl, "Cannot request IRQ-%d\n", in b43_wireless_core_start()
4443 ieee80211_wake_queues(dev->wl->hw); in b43_wireless_core_start()
4455 b43dbg(dev->wl, "Wireless interface started\n"); in b43_wireless_core_start()
4557 b43err(dev->wl, "FOUND UNSUPPORTED PHY (Analog %u, Type %d (%s), Revision %u)\n", in b43_phy_versioning()
4562 b43info(dev->wl, "Found PHY: Analog %u, Type %d (%s), Revision %u\n", in b43_phy_versioning()
4657 b43err(dev->wl, in b43_phy_versioning()
4662 b43info(dev->wl, in b43_phy_versioning()
4779 if (b43_is_mode(dev->wl, NL80211_IFTYPE_ADHOC) || idle) in b43_set_synth_pu_delay()
4793 if (b43_is_mode(dev->wl, NL80211_IFTYPE_ADHOC)) { in b43_set_pretbtt()
4836 if (dev->wl->current_beacon) { in b43_wireless_core_exit()
4837 dev_kfree_skb_any(dev->wl->current_beacon); in b43_wireless_core_exit()
4838 dev->wl->current_beacon = NULL; in b43_wireless_core_exit()
4960 b43warn(dev->wl, "Forced PIO by use_pio module parameter. " in b43_wireless_core_init()
4979 ieee80211_wake_queues(dev->wl->hw); in b43_wireless_core_init()
4997 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_add_interface() local
5010 mutex_lock(&wl->mutex); in b43_op_add_interface()
5011 if (wl->operating) in b43_op_add_interface()
5014 b43dbg(wl, "Adding Interface type %d\n", vif->type); in b43_op_add_interface()
5016 dev = wl->current_dev; in b43_op_add_interface()
5017 wl->operating = true; in b43_op_add_interface()
5018 wl->vif = vif; in b43_op_add_interface()
5019 wl->if_type = vif->type; in b43_op_add_interface()
5020 memcpy(wl->mac_addr, vif->addr, ETH_ALEN); in b43_op_add_interface()
5029 mutex_unlock(&wl->mutex); in b43_op_add_interface()
5040 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_remove_interface() local
5041 struct b43_wldev *dev = wl->current_dev; in b43_op_remove_interface()
5043 b43dbg(wl, "Removing Interface type %d\n", vif->type); in b43_op_remove_interface()
5045 mutex_lock(&wl->mutex); in b43_op_remove_interface()
5047 B43_WARN_ON(!wl->operating); in b43_op_remove_interface()
5048 B43_WARN_ON(wl->vif != vif); in b43_op_remove_interface()
5049 wl->vif = NULL; in b43_op_remove_interface()
5051 wl->operating = false; in b43_op_remove_interface()
5054 eth_zero_addr(wl->mac_addr); in b43_op_remove_interface()
5057 mutex_unlock(&wl->mutex); in b43_op_remove_interface()
5062 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_start() local
5063 struct b43_wldev *dev = wl->current_dev; in b43_op_start()
5070 eth_zero_addr(wl->bssid); in b43_op_start()
5071 eth_zero_addr(wl->mac_addr); in b43_op_start()
5072 wl->filter_flags = 0; in b43_op_start()
5073 wl->radiotap_enabled = false; in b43_op_start()
5074 b43_qos_clear(wl); in b43_op_start()
5075 wl->beacon0_uploaded = false; in b43_op_start()
5076 wl->beacon1_uploaded = false; in b43_op_start()
5077 wl->beacon_templates_virgin = true; in b43_op_start()
5078 wl->radio_enabled = true; in b43_op_start()
5080 mutex_lock(&wl->mutex); in b43_op_start()
5102 mutex_unlock(&wl->mutex); in b43_op_start()
5118 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_stop() local
5119 struct b43_wldev *dev = wl->current_dev; in b43_op_stop()
5121 cancel_work_sync(&(wl->beacon_update_trigger)); in b43_op_stop()
5126 mutex_lock(&wl->mutex); in b43_op_stop()
5133 wl->radio_enabled = false; in b43_op_stop()
5136 mutex_unlock(&wl->mutex); in b43_op_stop()
5138 cancel_work_sync(&(wl->txpower_adjust_work)); in b43_op_stop()
5144 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_beacon_set_tim() local
5146 b43_update_templates(wl); in b43_op_beacon_set_tim()
5156 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_sta_notify() local
5158 B43_WARN_ON(!vif || wl->vif != vif); in b43_op_sta_notify()
5165 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_sw_scan_start_notifier() local
5168 mutex_lock(&wl->mutex); in b43_op_sw_scan_start_notifier()
5169 dev = wl->current_dev; in b43_op_sw_scan_start_notifier()
5174 mutex_unlock(&wl->mutex); in b43_op_sw_scan_start_notifier()
5180 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_sw_scan_complete_notifier() local
5183 mutex_lock(&wl->mutex); in b43_op_sw_scan_complete_notifier()
5184 dev = wl->current_dev; in b43_op_sw_scan_complete_notifier()
5189 mutex_unlock(&wl->mutex); in b43_op_sw_scan_complete_notifier()
5195 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_get_survey() local
5196 struct b43_wldev *dev = wl->current_dev; in b43_op_get_survey()
5239 struct b43_wl *wl = dev->wl; in b43_chip_reset() local
5243 mutex_lock(&wl->mutex); in b43_chip_reset()
5272 wl->current_dev = NULL; /* Failed to init the dev. */ in b43_chip_reset()
5273 mutex_unlock(&wl->mutex); in b43_chip_reset()
5276 b43err(wl, "Controller restart FAILED\n"); in b43_chip_reset()
5281 b43_op_config(wl->hw, ~0); in b43_chip_reset()
5282 if (wl->vif) in b43_chip_reset()
5283 b43_op_bss_info_changed(wl->hw, wl->vif, &wl->vif->bss_conf, ~0); in b43_chip_reset()
5285 b43info(wl, "Controller restarted\n"); in b43_chip_reset()
5291 struct ieee80211_hw *hw = dev->wl->hw; in b43_setup_bands()
5408 struct b43_wl *wl = dev->wl; in b43_wireless_core_attach() local
5423 b43err(wl, "Bus powerup failed\n"); in b43_wireless_core_attach()
5468 b43warn(wl, "5 GHz band is unsupported on this PHY\n"); in b43_wireless_core_attach()
5474 b43err(wl, "b43 can't support any band on this device\n"); in b43_wireless_core_attach()
5494 if (!wl->current_dev) in b43_wireless_core_attach()
5495 wl->current_dev = dev; in b43_wireless_core_attach()
5515 struct b43_wl *wl; in b43_one_core_detach() local
5521 wl = wldev->wl; in b43_one_core_detach()
5529 static int b43_one_core_attach(struct b43_bus_dev *dev, struct b43_wl *wl) in b43_one_core_attach() argument
5540 wldev->wl = wl; in b43_one_core_attach()
5591 static void b43_wireless_exit(struct b43_bus_dev *dev, struct b43_wl *wl) in b43_wireless_exit() argument
5593 struct ieee80211_hw *hw = wl->hw; in b43_wireless_exit()
5604 struct b43_wl *wl; in b43_wireless_init() local
5608 hw = ieee80211_alloc_hw(sizeof(*wl), &b43_hw_ops); in b43_wireless_init()
5613 wl = hw_to_b43_wl(hw); in b43_wireless_init()
5628 wl->hw_registred = false; in b43_wireless_init()
5637 wl->hw = hw; in b43_wireless_init()
5638 mutex_init(&wl->mutex); in b43_wireless_init()
5639 spin_lock_init(&wl->hardirq_lock); in b43_wireless_init()
5640 spin_lock_init(&wl->beacon_lock); in b43_wireless_init()
5641 INIT_WORK(&wl->beacon_update_trigger, b43_beacon_update_trigger_work); in b43_wireless_init()
5642 INIT_WORK(&wl->txpower_adjust_work, b43_phy_txpower_adjust_work); in b43_wireless_init()
5643 INIT_WORK(&wl->tx_work, b43_tx_work); in b43_wireless_init()
5647 skb_queue_head_init(&wl->tx_queue[queue_num]); in b43_wireless_init()
5648 wl->tx_queue_stopped[queue_num] = 0; in b43_wireless_init()
5653 b43info(wl, "Broadcom %s WLAN found (core revision %u)\n", chip_name, in b43_wireless_init()
5655 return wl; in b43_wireless_init()
5662 struct b43_wl *wl; in b43_bcma_probe() local
5675 wl = b43_wireless_init(dev); in b43_bcma_probe()
5676 if (IS_ERR(wl)) { in b43_bcma_probe()
5677 err = PTR_ERR(wl); in b43_bcma_probe()
5681 err = b43_one_core_attach(dev, wl); in b43_bcma_probe()
5686 INIT_WORK(&wl->firmware_load, b43_request_firmware); in b43_bcma_probe()
5687 schedule_work(&wl->firmware_load); in b43_bcma_probe()
5693 ieee80211_free_hw(wl->hw); in b43_bcma_probe()
5700 struct b43_wl *wl = wldev->wl; in b43_bcma_remove() local
5705 cancel_work_sync(&wl->firmware_load); in b43_bcma_remove()
5707 B43_WARN_ON(!wl); in b43_bcma_remove()
5710 if (wl->current_dev == wldev && wl->hw_registred) { in b43_bcma_remove()
5712 ieee80211_unregister_hw(wl->hw); in b43_bcma_remove()
5718 b43_rng_exit(wl); in b43_bcma_remove()
5720 b43_leds_unregister(wl); in b43_bcma_remove()
5722 ieee80211_free_hw(wl->hw); in b43_bcma_remove()
5738 struct b43_wl *wl; in b43_ssb_probe() local
5745 wl = ssb_get_devtypedata(sdev); in b43_ssb_probe()
5746 if (wl) { in b43_ssb_probe()
5754 wl = b43_wireless_init(dev); in b43_ssb_probe()
5755 if (IS_ERR(wl)) { in b43_ssb_probe()
5756 err = PTR_ERR(wl); in b43_ssb_probe()
5759 ssb_set_devtypedata(sdev, wl); in b43_ssb_probe()
5760 B43_WARN_ON(ssb_get_devtypedata(sdev) != wl); in b43_ssb_probe()
5762 err = b43_one_core_attach(dev, wl); in b43_ssb_probe()
5767 INIT_WORK(&wl->firmware_load, b43_request_firmware); in b43_ssb_probe()
5768 schedule_work(&wl->firmware_load); in b43_ssb_probe()
5773 b43_wireless_exit(dev, wl); in b43_ssb_probe()
5781 struct b43_wl *wl = ssb_get_devtypedata(sdev); in b43_ssb_remove() local
5788 cancel_work_sync(&wl->firmware_load); in b43_ssb_remove()
5790 B43_WARN_ON(!wl); in b43_ssb_remove()
5793 if (wl->current_dev == wldev && wl->hw_registred) { in b43_ssb_remove()
5795 ieee80211_unregister_hw(wl->hw); in b43_ssb_remove()
5801 b43_rng_exit(wl); in b43_ssb_remove()
5803 b43_leds_unregister(wl); in b43_ssb_remove()
5804 b43_wireless_exit(dev, wl); in b43_ssb_remove()
5821 b43info(dev->wl, "Controller RESET (%s) ...\n", reason); in b43_controller_restart()
5822 ieee80211_queue_work(dev->wl->hw, &dev->restart_work); in b43_controller_restart()