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_BCN_PRBRESP_PROMISC) in b43_adjust_opmode()
3353 b43dbg(dev->wl, "Chip initialized\n"); in b43_chip_init()
3389 b43err(dev->wl, "Firmware watchdog: The firmware died!\n"); in b43_periodic_every15sec()
3408 b43dbg(dev->wl, "Stats: %7u IRQs/sec, %7u TX/sec, %7u RX/sec\n", in b43_periodic_every15sec()
3417 b43dbg(dev->wl, "Stats: %7u IRQ-%02u/sec (0x%08X)\n", in b43_periodic_every15sec()
3447 struct b43_wl *wl = dev->wl; in b43_periodic_work_handler() local
3450 mutex_lock(&wl->mutex); in b43_periodic_work_handler()
3465 ieee80211_queue_delayed_work(wl->hw, &dev->periodic_work, delay); in b43_periodic_work_handler()
3467 mutex_unlock(&wl->mutex); in b43_periodic_work_handler()
3476 ieee80211_queue_delayed_work(dev->wl->hw, work, 0); in b43_periodic_tasks_setup()
3502 b43warn(dev->wl, "Unaligned 32bit SHM read access is broken\n"); in b43_validate_chipaccess()
3508 b43warn(dev->wl, "Unaligned 32bit SHM write access is broken\n"); in b43_validate_chipaccess()
3532 b43err(dev->wl, "Failed to validate the chipaccess\n"); in b43_validate_chipaccess()
3552 struct b43_wl *wl = (struct b43_wl *)rng->priv; in b43_rng_read() local
3556 mutex_lock(&wl->mutex); in b43_rng_read()
3557 dev = wl->current_dev; in b43_rng_read()
3562 mutex_unlock(&wl->mutex); in b43_rng_read()
3568 static void b43_rng_exit(struct b43_wl *wl) in b43_rng_exit() argument
3571 if (wl->rng_initialized) in b43_rng_exit()
3572 hwrng_unregister(&wl->rng); in b43_rng_exit()
3576 static int b43_rng_init(struct b43_wl *wl) in b43_rng_init() argument
3581 snprintf(wl->rng_name, ARRAY_SIZE(wl->rng_name), in b43_rng_init()
3582 "%s_%s", KBUILD_MODNAME, wiphy_name(wl->hw->wiphy)); in b43_rng_init()
3583 wl->rng.name = wl->rng_name; in b43_rng_init()
3584 wl->rng.data_read = b43_rng_read; in b43_rng_init()
3585 wl->rng.priv = (unsigned long)wl; in b43_rng_init()
3586 wl->rng_initialized = true; in b43_rng_init()
3587 err = hwrng_register(&wl->rng); in b43_rng_init()
3589 wl->rng_initialized = false; in b43_rng_init()
3590 b43err(wl, "Failed to register the random " in b43_rng_init()
3600 struct b43_wl *wl = container_of(work, struct b43_wl, tx_work); in b43_tx_work() local
3606 mutex_lock(&wl->mutex); in b43_tx_work()
3607 dev = wl->current_dev; in b43_tx_work()
3609 mutex_unlock(&wl->mutex); in b43_tx_work()
3614 while (skb_queue_len(&wl->tx_queue[queue_num])) { in b43_tx_work()
3615 skb = skb_dequeue(&wl->tx_queue[queue_num]); in b43_tx_work()
3621 wl->tx_queue_stopped[queue_num] = 1; in b43_tx_work()
3622 ieee80211_stop_queue(wl->hw, queue_num); in b43_tx_work()
3623 skb_queue_head(&wl->tx_queue[queue_num], skb); in b43_tx_work()
3627 ieee80211_free_txskb(wl->hw, skb); in b43_tx_work()
3632 wl->tx_queue_stopped[queue_num] = 0; in b43_tx_work()
3638 mutex_unlock(&wl->mutex); in b43_tx_work()
3645 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_tx() local
3654 skb_queue_tail(&wl->tx_queue[skb->queue_mapping], skb); in b43_op_tx()
3655 if (!wl->tx_queue_stopped[skb->queue_mapping]) { in b43_op_tx()
3656 ieee80211_queue_work(wl->hw, &wl->tx_work); in b43_op_tx()
3658 ieee80211_stop_queue(wl->hw, skb->queue_mapping); in b43_op_tx()
3714 struct b43_wl *wl = dev->wl; in b43_qos_upload_all() local
3722 ARRAY_SIZE(wl->qos_params)); in b43_qos_upload_all()
3725 for (i = 0; i < ARRAY_SIZE(wl->qos_params); i++) { in b43_qos_upload_all()
3726 params = &(wl->qos_params[i]); in b43_qos_upload_all()
3733 static void b43_qos_clear(struct b43_wl *wl) in b43_qos_clear() argument
3741 ARRAY_SIZE(wl->qos_params)); in b43_qos_clear()
3743 for (i = 0; i < ARRAY_SIZE(wl->qos_params); i++) { in b43_qos_clear()
3744 params = &(wl->qos_params[i]); in b43_qos_clear()
3786 b43dbg(dev->wl, "QoS disabled\n"); in b43_qos_init()
3798 b43dbg(dev->wl, "QoS enabled\n"); in b43_qos_init()
3805 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_conf_tx() local
3810 if (queue >= ARRAY_SIZE(wl->qos_params)) { in b43_op_conf_tx()
3817 ARRAY_SIZE(wl->qos_params)); in b43_op_conf_tx()
3819 mutex_lock(&wl->mutex); in b43_op_conf_tx()
3820 dev = wl->current_dev; in b43_op_conf_tx()
3824 memcpy(&(wl->qos_params[queue].p), params, sizeof(*params)); in b43_op_conf_tx()
3826 b43_qos_params_upload(dev, &(wl->qos_params[queue].p), in b43_op_conf_tx()
3832 mutex_unlock(&wl->mutex); in b43_op_conf_tx()
3840 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_get_stats() local
3842 mutex_lock(&wl->mutex); in b43_op_get_stats()
3843 memcpy(stats, &wl->ieee_stats, sizeof(*stats)); in b43_op_get_stats()
3844 mutex_unlock(&wl->mutex); in b43_op_get_stats()
3851 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_get_tsf() local
3855 mutex_lock(&wl->mutex); in b43_op_get_tsf()
3856 dev = wl->current_dev; in b43_op_get_tsf()
3863 mutex_unlock(&wl->mutex); in b43_op_get_tsf()
3871 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_set_tsf() local
3874 mutex_lock(&wl->mutex); in b43_op_set_tsf()
3875 dev = wl->current_dev; in b43_op_set_tsf()
3880 mutex_unlock(&wl->mutex); in b43_op_set_tsf()
3919 b43err(dev->wl, "This device doesn't support %s-GHz band\n", in b43_switch_band()
3929 b43dbg(dev->wl, "Switching to %s GHz band\n", in b43_switch_band()
3993 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_config() local
3994 struct b43_wldev *dev = wl->current_dev; in b43_op_config()
4000 mutex_lock(&wl->mutex); in b43_op_config()
4028 dev->wl->radiotap_enabled = !!(conf->flags & IEEE80211_CONF_MONITOR); in b43_op_config()
4046 if (wl->radio_enabled != phy->radio_on) { in b43_op_config()
4047 if (wl->radio_enabled) { in b43_op_config()
4049 b43info(dev->wl, "Radio turned on by software\n"); in b43_op_config()
4051 b43info(dev->wl, "The hardware RF-kill button " in b43_op_config()
4057 b43info(dev->wl, "Radio turned off by software\n"); in b43_op_config()
4063 mutex_unlock(&wl->mutex); in b43_op_config()
4071 dev->wl->hw->wiphy->bands[b43_current_band(dev->wl)]; in b43_update_basic_rates()
4118 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_bss_info_changed() local
4121 mutex_lock(&wl->mutex); in b43_op_bss_info_changed()
4123 dev = wl->current_dev; in b43_op_bss_info_changed()
4127 B43_WARN_ON(wl->vif != vif); in b43_op_bss_info_changed()
4131 memcpy(wl->bssid, conf->bssid, ETH_ALEN); in b43_op_bss_info_changed()
4133 eth_zero_addr(wl->bssid); in b43_op_bss_info_changed()
4138 (b43_is_mode(wl, NL80211_IFTYPE_AP) || in b43_op_bss_info_changed()
4139 b43_is_mode(wl, NL80211_IFTYPE_MESH_POINT) || in b43_op_bss_info_changed()
4140 b43_is_mode(wl, NL80211_IFTYPE_ADHOC))) in b43_op_bss_info_changed()
4141 b43_update_templates(wl); in b43_op_bss_info_changed()
4151 (b43_is_mode(wl, NL80211_IFTYPE_AP) || in b43_op_bss_info_changed()
4152 b43_is_mode(wl, NL80211_IFTYPE_MESH_POINT) || in b43_op_bss_info_changed()
4153 b43_is_mode(wl, NL80211_IFTYPE_ADHOC)) && in b43_op_bss_info_changed()
4169 mutex_unlock(&wl->mutex); in b43_op_bss_info_changed()
4176 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_set_key() local
4200 mutex_lock(&wl->mutex); in b43_op_set_key()
4202 dev = wl->current_dev; in b43_op_set_key()
4286 b43dbg(wl, "%s hardware based encryption for keyidx: %d, " in b43_op_set_key()
4292 mutex_unlock(&wl->mutex); in b43_op_set_key()
4301 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_configure_filter() local
4304 mutex_lock(&wl->mutex); in b43_op_configure_filter()
4305 dev = wl->current_dev; in b43_op_configure_filter()
4325 wl->filter_flags = *fflags; in b43_op_configure_filter()
4331 mutex_unlock(&wl->mutex); in b43_op_configure_filter()
4339 struct b43_wl *wl; in b43_wireless_core_stop() local
4346 wl = dev->wl; in b43_wireless_core_stop()
4352 mutex_unlock(&wl->mutex); in b43_wireless_core_stop()
4354 cancel_work_sync(&wl->tx_work); in b43_wireless_core_stop()
4356 mutex_lock(&wl->mutex); in b43_wireless_core_stop()
4357 dev = wl->current_dev; in b43_wireless_core_stop()
4370 spin_lock_irq(&wl->hardirq_lock); in b43_wireless_core_stop()
4373 spin_unlock_irq(&wl->hardirq_lock); in b43_wireless_core_stop()
4377 mutex_unlock(&wl->mutex); in b43_wireless_core_stop()
4384 mutex_lock(&wl->mutex); in b43_wireless_core_stop()
4385 dev = wl->current_dev; in b43_wireless_core_stop()
4398 while (skb_queue_len(&wl->tx_queue[queue_num])) { in b43_wireless_core_stop()
4401 skb = skb_dequeue(&wl->tx_queue[queue_num]); in b43_wireless_core_stop()
4402 ieee80211_free_txskb(wl->hw, skb); in b43_wireless_core_stop()
4408 b43dbg(wl, "Wireless interface stopped\n"); in b43_wireless_core_stop()
4424 b43err(dev->wl, "Cannot request SDIO IRQ\n"); in b43_wireless_core_start()
4432 b43err(dev->wl, "Cannot request IRQ-%d\n", in b43_wireless_core_start()
4439 ieee80211_wake_queues(dev->wl->hw); in b43_wireless_core_start()
4451 b43dbg(dev->wl, "Wireless interface started\n"); in b43_wireless_core_start()
4553 b43err(dev->wl, "FOUND UNSUPPORTED PHY (Analog %u, Type %d (%s), Revision %u)\n", in b43_phy_versioning()
4558 b43info(dev->wl, "Found PHY: Analog %u, Type %d (%s), Revision %u\n", in b43_phy_versioning()
4653 b43err(dev->wl, in b43_phy_versioning()
4658 b43info(dev->wl, in b43_phy_versioning()
4775 if (b43_is_mode(dev->wl, NL80211_IFTYPE_ADHOC) || idle) in b43_set_synth_pu_delay()
4789 if (b43_is_mode(dev->wl, NL80211_IFTYPE_ADHOC)) { in b43_set_pretbtt()
4832 if (dev->wl->current_beacon) { in b43_wireless_core_exit()
4833 dev_kfree_skb_any(dev->wl->current_beacon); in b43_wireless_core_exit()
4834 dev->wl->current_beacon = NULL; in b43_wireless_core_exit()
4956 b43warn(dev->wl, "Forced PIO by use_pio module parameter. " in b43_wireless_core_init()
4975 ieee80211_wake_queues(dev->wl->hw); in b43_wireless_core_init()
4993 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_add_interface() local
5006 mutex_lock(&wl->mutex); in b43_op_add_interface()
5007 if (wl->operating) in b43_op_add_interface()
5010 b43dbg(wl, "Adding Interface type %d\n", vif->type); in b43_op_add_interface()
5012 dev = wl->current_dev; in b43_op_add_interface()
5013 wl->operating = true; in b43_op_add_interface()
5014 wl->vif = vif; in b43_op_add_interface()
5015 wl->if_type = vif->type; in b43_op_add_interface()
5016 memcpy(wl->mac_addr, vif->addr, ETH_ALEN); in b43_op_add_interface()
5025 mutex_unlock(&wl->mutex); in b43_op_add_interface()
5036 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_remove_interface() local
5037 struct b43_wldev *dev = wl->current_dev; in b43_op_remove_interface()
5039 b43dbg(wl, "Removing Interface type %d\n", vif->type); in b43_op_remove_interface()
5041 mutex_lock(&wl->mutex); in b43_op_remove_interface()
5043 B43_WARN_ON(!wl->operating); in b43_op_remove_interface()
5044 B43_WARN_ON(wl->vif != vif); in b43_op_remove_interface()
5045 wl->vif = NULL; in b43_op_remove_interface()
5047 wl->operating = false; in b43_op_remove_interface()
5050 eth_zero_addr(wl->mac_addr); in b43_op_remove_interface()
5053 mutex_unlock(&wl->mutex); in b43_op_remove_interface()
5058 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_start() local
5059 struct b43_wldev *dev = wl->current_dev; in b43_op_start()
5066 eth_zero_addr(wl->bssid); in b43_op_start()
5067 eth_zero_addr(wl->mac_addr); in b43_op_start()
5068 wl->filter_flags = 0; in b43_op_start()
5069 wl->radiotap_enabled = false; in b43_op_start()
5070 b43_qos_clear(wl); in b43_op_start()
5071 wl->beacon0_uploaded = false; in b43_op_start()
5072 wl->beacon1_uploaded = false; in b43_op_start()
5073 wl->beacon_templates_virgin = true; in b43_op_start()
5074 wl->radio_enabled = true; in b43_op_start()
5076 mutex_lock(&wl->mutex); in b43_op_start()
5098 mutex_unlock(&wl->mutex); in b43_op_start()
5114 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_stop() local
5115 struct b43_wldev *dev = wl->current_dev; in b43_op_stop()
5117 cancel_work_sync(&(wl->beacon_update_trigger)); in b43_op_stop()
5122 mutex_lock(&wl->mutex); in b43_op_stop()
5129 wl->radio_enabled = false; in b43_op_stop()
5132 mutex_unlock(&wl->mutex); in b43_op_stop()
5134 cancel_work_sync(&(wl->txpower_adjust_work)); in b43_op_stop()
5140 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_beacon_set_tim() local
5142 b43_update_templates(wl); in b43_op_beacon_set_tim()
5152 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_sta_notify() local
5154 B43_WARN_ON(!vif || wl->vif != vif); in b43_op_sta_notify()
5161 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_sw_scan_start_notifier() local
5164 mutex_lock(&wl->mutex); in b43_op_sw_scan_start_notifier()
5165 dev = wl->current_dev; in b43_op_sw_scan_start_notifier()
5170 mutex_unlock(&wl->mutex); in b43_op_sw_scan_start_notifier()
5176 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_sw_scan_complete_notifier() local
5179 mutex_lock(&wl->mutex); in b43_op_sw_scan_complete_notifier()
5180 dev = wl->current_dev; in b43_op_sw_scan_complete_notifier()
5185 mutex_unlock(&wl->mutex); in b43_op_sw_scan_complete_notifier()
5191 struct b43_wl *wl = hw_to_b43_wl(hw); in b43_op_get_survey() local
5192 struct b43_wldev *dev = wl->current_dev; in b43_op_get_survey()
5235 struct b43_wl *wl = dev->wl; in b43_chip_reset() local
5239 mutex_lock(&wl->mutex); in b43_chip_reset()
5268 wl->current_dev = NULL; /* Failed to init the dev. */ in b43_chip_reset()
5269 mutex_unlock(&wl->mutex); in b43_chip_reset()
5272 b43err(wl, "Controller restart FAILED\n"); in b43_chip_reset()
5277 b43_op_config(wl->hw, ~0); in b43_chip_reset()
5278 if (wl->vif) in b43_chip_reset()
5279 b43_op_bss_info_changed(wl->hw, wl->vif, &wl->vif->bss_conf, ~0); in b43_chip_reset()
5281 b43info(wl, "Controller restarted\n"); in b43_chip_reset()
5287 struct ieee80211_hw *hw = dev->wl->hw; in b43_setup_bands()
5404 struct b43_wl *wl = dev->wl; in b43_wireless_core_attach() local
5419 b43err(wl, "Bus powerup failed\n"); in b43_wireless_core_attach()
5464 b43warn(wl, "5 GHz band is unsupported on this PHY\n"); in b43_wireless_core_attach()
5470 b43err(wl, "b43 can't support any band on this device\n"); in b43_wireless_core_attach()
5490 if (!wl->current_dev) in b43_wireless_core_attach()
5491 wl->current_dev = dev; in b43_wireless_core_attach()
5511 struct b43_wl *wl; in b43_one_core_detach() local
5517 wl = wldev->wl; in b43_one_core_detach()
5525 static int b43_one_core_attach(struct b43_bus_dev *dev, struct b43_wl *wl) in b43_one_core_attach() argument
5536 wldev->wl = wl; in b43_one_core_attach()
5587 static void b43_wireless_exit(struct b43_bus_dev *dev, struct b43_wl *wl) in b43_wireless_exit() argument
5589 struct ieee80211_hw *hw = wl->hw; in b43_wireless_exit()
5600 struct b43_wl *wl; in b43_wireless_init() local
5604 hw = ieee80211_alloc_hw(sizeof(*wl), &b43_hw_ops); in b43_wireless_init()
5609 wl = hw_to_b43_wl(hw); in b43_wireless_init()
5624 wl->hw_registred = false; in b43_wireless_init()
5633 wl->hw = hw; in b43_wireless_init()
5634 mutex_init(&wl->mutex); in b43_wireless_init()
5635 spin_lock_init(&wl->hardirq_lock); in b43_wireless_init()
5636 spin_lock_init(&wl->beacon_lock); in b43_wireless_init()
5637 INIT_WORK(&wl->beacon_update_trigger, b43_beacon_update_trigger_work); in b43_wireless_init()
5638 INIT_WORK(&wl->txpower_adjust_work, b43_phy_txpower_adjust_work); in b43_wireless_init()
5639 INIT_WORK(&wl->tx_work, b43_tx_work); in b43_wireless_init()
5643 skb_queue_head_init(&wl->tx_queue[queue_num]); in b43_wireless_init()
5644 wl->tx_queue_stopped[queue_num] = 0; in b43_wireless_init()
5649 b43info(wl, "Broadcom %s WLAN found (core revision %u)\n", chip_name, in b43_wireless_init()
5651 return wl; in b43_wireless_init()
5658 struct b43_wl *wl; in b43_bcma_probe() local
5671 wl = b43_wireless_init(dev); in b43_bcma_probe()
5672 if (IS_ERR(wl)) { in b43_bcma_probe()
5673 err = PTR_ERR(wl); in b43_bcma_probe()
5677 err = b43_one_core_attach(dev, wl); in b43_bcma_probe()
5682 INIT_WORK(&wl->firmware_load, b43_request_firmware); in b43_bcma_probe()
5683 schedule_work(&wl->firmware_load); in b43_bcma_probe()
5689 ieee80211_free_hw(wl->hw); in b43_bcma_probe()
5696 struct b43_wl *wl = wldev->wl; in b43_bcma_remove() local
5701 cancel_work_sync(&wl->firmware_load); in b43_bcma_remove()
5703 B43_WARN_ON(!wl); in b43_bcma_remove()
5706 if (wl->current_dev == wldev && wl->hw_registred) { in b43_bcma_remove()
5708 ieee80211_unregister_hw(wl->hw); in b43_bcma_remove()
5714 b43_rng_exit(wl); in b43_bcma_remove()
5716 b43_leds_unregister(wl); in b43_bcma_remove()
5718 ieee80211_free_hw(wl->hw); in b43_bcma_remove()
5734 struct b43_wl *wl; in b43_ssb_probe() local
5741 wl = ssb_get_devtypedata(sdev); in b43_ssb_probe()
5742 if (wl) { in b43_ssb_probe()
5750 wl = b43_wireless_init(dev); in b43_ssb_probe()
5751 if (IS_ERR(wl)) { in b43_ssb_probe()
5752 err = PTR_ERR(wl); in b43_ssb_probe()
5755 ssb_set_devtypedata(sdev, wl); in b43_ssb_probe()
5756 B43_WARN_ON(ssb_get_devtypedata(sdev) != wl); in b43_ssb_probe()
5758 err = b43_one_core_attach(dev, wl); in b43_ssb_probe()
5763 INIT_WORK(&wl->firmware_load, b43_request_firmware); in b43_ssb_probe()
5764 schedule_work(&wl->firmware_load); in b43_ssb_probe()
5769 b43_wireless_exit(dev, wl); in b43_ssb_probe()
5777 struct b43_wl *wl = ssb_get_devtypedata(sdev); in b43_ssb_remove() local
5784 cancel_work_sync(&wl->firmware_load); in b43_ssb_remove()
5786 B43_WARN_ON(!wl); in b43_ssb_remove()
5789 if (wl->current_dev == wldev && wl->hw_registred) { in b43_ssb_remove()
5791 ieee80211_unregister_hw(wl->hw); in b43_ssb_remove()
5797 b43_rng_exit(wl); in b43_ssb_remove()
5799 b43_leds_unregister(wl); in b43_ssb_remove()
5800 b43_wireless_exit(dev, wl); in b43_ssb_remove()
5817 b43info(dev->wl, "Controller RESET (%s) ...\n", reason); in b43_controller_restart()
5818 ieee80211_queue_work(dev->wl->hw, &dev->restart_work); in b43_controller_restart()