Lines Matching refs:rt2x00dev
38 u32 rt2x00lib_get_bssidx(struct rt2x00_dev *rt2x00dev, in rt2x00lib_get_bssidx() argument
45 if (rt2x00dev->intf_sta_count) in rt2x00lib_get_bssidx()
47 return vif->addr[5] & (rt2x00dev->ops->max_ap_intf - 1); in rt2x00lib_get_bssidx()
54 int rt2x00lib_enable_radio(struct rt2x00_dev *rt2x00dev) in rt2x00lib_enable_radio() argument
62 if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00lib_enable_radio()
68 rt2x00queue_init_queues(rt2x00dev); in rt2x00lib_enable_radio()
74 rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_RADIO_ON); in rt2x00lib_enable_radio()
78 rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_RADIO_IRQ_ON); in rt2x00lib_enable_radio()
80 rt2x00leds_led_radio(rt2x00dev, true); in rt2x00lib_enable_radio()
81 rt2x00led_led_activity(rt2x00dev, true); in rt2x00lib_enable_radio()
83 set_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags); in rt2x00lib_enable_radio()
88 rt2x00queue_start_queues(rt2x00dev); in rt2x00lib_enable_radio()
89 rt2x00link_start_tuner(rt2x00dev); in rt2x00lib_enable_radio()
94 rt2x00link_start_watchdog(rt2x00dev); in rt2x00lib_enable_radio()
99 void rt2x00lib_disable_radio(struct rt2x00_dev *rt2x00dev) in rt2x00lib_disable_radio() argument
101 if (!test_and_clear_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00lib_disable_radio()
107 rt2x00link_stop_watchdog(rt2x00dev); in rt2x00lib_disable_radio()
112 rt2x00link_stop_tuner(rt2x00dev); in rt2x00lib_disable_radio()
113 rt2x00queue_stop_queues(rt2x00dev); in rt2x00lib_disable_radio()
114 rt2x00queue_flush_queues(rt2x00dev, true); in rt2x00lib_disable_radio()
119 rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_RADIO_OFF); in rt2x00lib_disable_radio()
120 rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_RADIO_IRQ_OFF); in rt2x00lib_disable_radio()
121 rt2x00led_led_activity(rt2x00dev, false); in rt2x00lib_disable_radio()
122 rt2x00leds_led_radio(rt2x00dev, false); in rt2x00lib_disable_radio()
128 struct rt2x00_dev *rt2x00dev = data; in rt2x00lib_intf_scheduled_iter() local
137 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00lib_intf_scheduled_iter()
142 rt2x00queue_update_beacon(rt2x00dev, vif); in rt2x00lib_intf_scheduled_iter()
149 struct rt2x00_dev *rt2x00dev = in rt2x00lib_intf_scheduled() local
156 ieee80211_iterate_active_interfaces(rt2x00dev->hw, in rt2x00lib_intf_scheduled()
159 rt2x00dev); in rt2x00lib_intf_scheduled()
164 struct rt2x00_dev *rt2x00dev = in rt2x00lib_autowakeup() local
167 if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00lib_autowakeup()
170 if (rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_AWAKE)) in rt2x00lib_autowakeup()
171 rt2x00_err(rt2x00dev, "Device failed to wakeup\n"); in rt2x00lib_autowakeup()
172 clear_bit(CONFIG_POWERSAVING, &rt2x00dev->flags); in rt2x00lib_autowakeup()
182 struct rt2x00_dev *rt2x00dev = data; in rt2x00lib_bc_buffer_iter() local
194 skb = ieee80211_get_buffered_bc(rt2x00dev->hw, vif); in rt2x00lib_bc_buffer_iter()
196 rt2x00mac_tx(rt2x00dev->hw, &control, skb); in rt2x00lib_bc_buffer_iter()
197 skb = ieee80211_get_buffered_bc(rt2x00dev->hw, vif); in rt2x00lib_bc_buffer_iter()
204 struct rt2x00_dev *rt2x00dev = data; in rt2x00lib_beaconupdate_iter() local
217 WARN_ON(rt2x00_is_usb(rt2x00dev)); in rt2x00lib_beaconupdate_iter()
218 rt2x00queue_update_beacon(rt2x00dev, vif); in rt2x00lib_beaconupdate_iter()
221 void rt2x00lib_beacondone(struct rt2x00_dev *rt2x00dev) in rt2x00lib_beacondone() argument
223 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00lib_beacondone()
228 rt2x00dev->hw, IEEE80211_IFACE_ITER_RESUME_ALL, in rt2x00lib_beacondone()
229 rt2x00lib_bc_buffer_iter, rt2x00dev); in rt2x00lib_beacondone()
235 if (rt2x00_has_cap_pre_tbtt_interrupt(rt2x00dev)) in rt2x00lib_beacondone()
240 rt2x00dev->hw, IEEE80211_IFACE_ITER_RESUME_ALL, in rt2x00lib_beacondone()
241 rt2x00lib_beaconupdate_iter, rt2x00dev); in rt2x00lib_beacondone()
245 void rt2x00lib_pretbtt(struct rt2x00_dev *rt2x00dev) in rt2x00lib_pretbtt() argument
247 if (!test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00lib_pretbtt()
252 rt2x00dev->hw, IEEE80211_IFACE_ITER_RESUME_ALL, in rt2x00lib_pretbtt()
253 rt2x00lib_beaconupdate_iter, rt2x00dev); in rt2x00lib_pretbtt()
274 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00lib_txdone_bar_status() local
297 list_for_each_entry_rcu(bar_entry, &rt2x00dev->bar_list, list) { in rt2x00lib_txdone_bar_status()
301 spin_lock_bh(&rt2x00dev->bar_list_lock); in rt2x00lib_txdone_bar_status()
306 spin_unlock_bh(&rt2x00dev->bar_list_lock); in rt2x00lib_txdone_bar_status()
316 static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev, in rt2x00lib_fill_tx_status() argument
367 rt2x00dev->low_level_stats.dot11ACKFailureCount++; in rt2x00lib_fill_tx_status()
392 rt2x00dev->low_level_stats.dot11RTSSuccessCount++; in rt2x00lib_fill_tx_status()
394 rt2x00dev->low_level_stats.dot11RTSFailureCount++; in rt2x00lib_fill_tx_status()
398 static void rt2x00lib_clear_entry(struct rt2x00_dev *rt2x00dev, in rt2x00lib_clear_entry() argument
407 rt2x00dev->ops->lib->clear_entry(entry); in rt2x00lib_clear_entry()
427 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00lib_txdone_nomatch() local
446 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry); in rt2x00lib_txdone_nomatch()
461 rt2x00dev->link.qual.tx_success += success; in rt2x00lib_txdone_nomatch()
462 rt2x00dev->link.qual.tx_failed += !success; in rt2x00lib_txdone_nomatch()
464 rt2x00lib_fill_tx_status(rt2x00dev, &txinfo, skbdesc, txdesc, in rt2x00lib_txdone_nomatch()
466 ieee80211_tx_status_noskb(rt2x00dev->hw, skbdesc->sta, &txinfo); in rt2x00lib_txdone_nomatch()
470 rt2x00lib_clear_entry(rt2x00dev, entry); in rt2x00lib_txdone_nomatch()
477 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00lib_txdone() local
492 skb_pull(entry->skb, rt2x00dev->extra_tx_headroom); in rt2x00lib_txdone()
507 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_L2PAD)) in rt2x00lib_txdone()
516 if (rt2x00_has_cap_hw_crypto(rt2x00dev)) in rt2x00lib_txdone()
523 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_TXDONE, entry); in rt2x00lib_txdone()
538 rt2x00dev->link.qual.tx_success += success; in rt2x00lib_txdone()
539 rt2x00dev->link.qual.tx_failed += !success; in rt2x00lib_txdone()
541 rt2x00lib_fill_tx_status(rt2x00dev, tx_info, skbdesc, txdesc, success); in rt2x00lib_txdone()
550 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_TASKLET_CONTEXT)) in rt2x00lib_txdone()
551 ieee80211_tx_status(rt2x00dev->hw, entry->skb); in rt2x00lib_txdone()
553 ieee80211_tx_status_ni(rt2x00dev->hw, entry->skb); in rt2x00lib_txdone()
558 rt2x00lib_clear_entry(rt2x00dev, entry); in rt2x00lib_txdone()
596 struct rt2x00_dev *rt2x00dev = in rt2x00lib_sleep() local
599 if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00lib_sleep()
606 if (!test_bit(CONFIG_POWERSAVING, &rt2x00dev->flags)) in rt2x00lib_sleep()
607 rt2x00lib_config(rt2x00dev, &rt2x00dev->hw->conf, in rt2x00lib_sleep()
611 static void rt2x00lib_rxdone_check_ba(struct rt2x00_dev *rt2x00dev, in rt2x00lib_rxdone_check_ba() argument
625 list_for_each_entry_rcu(entry, &rt2x00dev->bar_list, list) { in rt2x00lib_rxdone_check_ba()
646 spin_lock_bh(&rt2x00dev->bar_list_lock); in rt2x00lib_rxdone_check_ba()
648 spin_unlock_bh(&rt2x00dev->bar_list_lock); in rt2x00lib_rxdone_check_ba()
655 static void rt2x00lib_rxdone_check_ps(struct rt2x00_dev *rt2x00dev, in rt2x00lib_rxdone_check_ps() argument
669 !(rt2x00dev->hw->conf.flags & IEEE80211_CONF_PS))) in rt2x00lib_rxdone_check_ps()
678 !rt2x00dev->aid) in rt2x00lib_rxdone_check_ps()
681 rt2x00dev->last_beacon = jiffies; in rt2x00lib_rxdone_check_ps()
696 cam = ieee80211_check_tim(tim_ie, tim_len, rt2x00dev->aid); in rt2x00lib_rxdone_check_ps()
701 if (!cam && !test_bit(CONFIG_POWERSAVING, &rt2x00dev->flags)) in rt2x00lib_rxdone_check_ps()
702 queue_work(rt2x00dev->workqueue, &rt2x00dev->sleep_work); in rt2x00lib_rxdone_check_ps()
705 static int rt2x00lib_rxdone_read_signal(struct rt2x00_dev *rt2x00dev, in rt2x00lib_rxdone_read_signal() argument
724 sband = &rt2x00dev->bands[rt2x00dev->curr_band]; in rt2x00lib_rxdone_read_signal()
746 …rt2x00_warn(rt2x00dev, "Frame received with unrecognized signal, mode=0x%.4x, signal=0x%.4x, type=… in rt2x00lib_rxdone_read_signal()
753 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; in rt2x00lib_rxdone() local
760 if (!test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags) || in rt2x00lib_rxdone()
761 !test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00lib_rxdone()
784 rt2x00dev->ops->lib->fill_rxdone(entry, &rxdesc); in rt2x00lib_rxdone()
792 rt2x00_err(rt2x00dev, "Wrong frame size %d max %d\n", in rt2x00lib_rxdone()
825 rate_idx = rt2x00lib_rxdone_read_signal(rt2x00dev, &rxdesc); in rt2x00lib_rxdone()
834 rt2x00lib_rxdone_check_ps(rt2x00dev, entry->skb, &rxdesc); in rt2x00lib_rxdone()
840 rt2x00lib_rxdone_check_ba(rt2x00dev, entry->skb, &rxdesc); in rt2x00lib_rxdone()
845 rt2x00link_update_stats(rt2x00dev, entry->skb, &rxdesc); in rt2x00lib_rxdone()
846 rt2x00debug_update_crypto(rt2x00dev, &rxdesc); in rt2x00lib_rxdone()
847 rt2x00debug_dump_frame(rt2x00dev, DUMP_FRAME_RXDONE, entry); in rt2x00lib_rxdone()
863 rx_status->band = rt2x00dev->curr_band; in rt2x00lib_rxdone()
864 rx_status->freq = rt2x00dev->curr_freq; in rt2x00lib_rxdone()
871 rx_status->antenna = rt2x00dev->link.ant.active.rx; in rt2x00lib_rxdone()
873 ieee80211_rx_ni(rt2x00dev->hw, entry->skb); in rt2x00lib_rxdone()
884 if (test_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags) && in rt2x00lib_rxdone()
885 test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags)) in rt2x00lib_rxdone()
886 rt2x00dev->ops->lib->clear_entry(entry); in rt2x00lib_rxdone()
1005 void rt2x00lib_set_mac_address(struct rt2x00_dev *rt2x00dev, u8 *eeprom_mac_addr) in rt2x00lib_set_mac_address() argument
1009 mac_addr = of_get_mac_address(rt2x00dev->dev->of_node); in rt2x00lib_set_mac_address()
1015 rt2x00_eeprom_dbg(rt2x00dev, "MAC: %pM\n", eeprom_mac_addr); in rt2x00lib_set_mac_address()
1020 static int rt2x00lib_probe_hw_modes(struct rt2x00_dev *rt2x00dev, in rt2x00lib_probe_hw_modes() argument
1023 struct ieee80211_hw *hw = rt2x00dev->hw; in rt2x00lib_probe_hw_modes()
1064 rt2x00dev->bands[NL80211_BAND_2GHZ].n_channels = 14; in rt2x00lib_probe_hw_modes()
1065 rt2x00dev->bands[NL80211_BAND_2GHZ].n_bitrates = num_rates; in rt2x00lib_probe_hw_modes()
1066 rt2x00dev->bands[NL80211_BAND_2GHZ].channels = channels; in rt2x00lib_probe_hw_modes()
1067 rt2x00dev->bands[NL80211_BAND_2GHZ].bitrates = rates; in rt2x00lib_probe_hw_modes()
1069 &rt2x00dev->bands[NL80211_BAND_2GHZ]; in rt2x00lib_probe_hw_modes()
1070 memcpy(&rt2x00dev->bands[NL80211_BAND_2GHZ].ht_cap, in rt2x00lib_probe_hw_modes()
1080 rt2x00dev->bands[NL80211_BAND_5GHZ].n_channels = in rt2x00lib_probe_hw_modes()
1082 rt2x00dev->bands[NL80211_BAND_5GHZ].n_bitrates = in rt2x00lib_probe_hw_modes()
1084 rt2x00dev->bands[NL80211_BAND_5GHZ].channels = &channels[14]; in rt2x00lib_probe_hw_modes()
1085 rt2x00dev->bands[NL80211_BAND_5GHZ].bitrates = &rates[4]; in rt2x00lib_probe_hw_modes()
1087 &rt2x00dev->bands[NL80211_BAND_5GHZ]; in rt2x00lib_probe_hw_modes()
1088 memcpy(&rt2x00dev->bands[NL80211_BAND_5GHZ].ht_cap, in rt2x00lib_probe_hw_modes()
1096 rt2x00_err(rt2x00dev, "Allocation ieee80211 modes failed\n"); in rt2x00lib_probe_hw_modes()
1100 static void rt2x00lib_remove_hw(struct rt2x00_dev *rt2x00dev) in rt2x00lib_remove_hw() argument
1102 if (test_bit(DEVICE_STATE_REGISTERED_HW, &rt2x00dev->flags)) in rt2x00lib_remove_hw()
1103 ieee80211_unregister_hw(rt2x00dev->hw); in rt2x00lib_remove_hw()
1105 if (likely(rt2x00dev->hw->wiphy->bands[NL80211_BAND_2GHZ])) { in rt2x00lib_remove_hw()
1106 kfree(rt2x00dev->hw->wiphy->bands[NL80211_BAND_2GHZ]->channels); in rt2x00lib_remove_hw()
1107 kfree(rt2x00dev->hw->wiphy->bands[NL80211_BAND_2GHZ]->bitrates); in rt2x00lib_remove_hw()
1108 rt2x00dev->hw->wiphy->bands[NL80211_BAND_2GHZ] = NULL; in rt2x00lib_remove_hw()
1109 rt2x00dev->hw->wiphy->bands[NL80211_BAND_5GHZ] = NULL; in rt2x00lib_remove_hw()
1112 kfree(rt2x00dev->spec.channels_info); in rt2x00lib_remove_hw()
1115 static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev) in rt2x00lib_probe_hw() argument
1117 struct hw_mode_spec *spec = &rt2x00dev->spec; in rt2x00lib_probe_hw()
1120 if (test_bit(DEVICE_STATE_REGISTERED_HW, &rt2x00dev->flags)) in rt2x00lib_probe_hw()
1126 status = rt2x00lib_probe_hw_modes(rt2x00dev, spec); in rt2x00lib_probe_hw()
1133 rt2x00dev->hw->queues = rt2x00dev->ops->tx_queues; in rt2x00lib_probe_hw()
1138 rt2x00dev->hw->extra_tx_headroom = in rt2x00lib_probe_hw()
1140 rt2x00dev->extra_tx_headroom); in rt2x00lib_probe_hw()
1145 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_L2PAD)) in rt2x00lib_probe_hw()
1146 rt2x00dev->hw->extra_tx_headroom += RT2X00_L2PAD_SIZE; in rt2x00lib_probe_hw()
1147 else if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DMA)) in rt2x00lib_probe_hw()
1148 rt2x00dev->hw->extra_tx_headroom += RT2X00_ALIGN_SIZE; in rt2x00lib_probe_hw()
1153 rt2x00dev->hw->sta_data_size = sizeof(struct rt2x00_sta); in rt2x00lib_probe_hw()
1158 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_TXSTATUS_FIFO)) { in rt2x00lib_probe_hw()
1167 roundup_pow_of_two(rt2x00dev->ops->tx_queues * in rt2x00lib_probe_hw()
1168 rt2x00dev->tx->limit * in rt2x00lib_probe_hw()
1171 status = kfifo_alloc(&rt2x00dev->txstatus_fifo, kfifo_size, in rt2x00lib_probe_hw()
1183 if (rt2x00dev->ops->lib->taskletname) { \ in rt2x00lib_probe_hw()
1184 tasklet_init(&rt2x00dev->taskletname, \ in rt2x00lib_probe_hw()
1185 rt2x00dev->ops->lib->taskletname, \ in rt2x00lib_probe_hw()
1186 (unsigned long)rt2x00dev); \ in rt2x00lib_probe_hw()
1200 status = ieee80211_register_hw(rt2x00dev->hw); in rt2x00lib_probe_hw()
1204 set_bit(DEVICE_STATE_REGISTERED_HW, &rt2x00dev->flags); in rt2x00lib_probe_hw()
1212 static void rt2x00lib_uninitialize(struct rt2x00_dev *rt2x00dev) in rt2x00lib_uninitialize() argument
1214 if (!test_and_clear_bit(DEVICE_STATE_INITIALIZED, &rt2x00dev->flags)) in rt2x00lib_uninitialize()
1220 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DELAYED_RFKILL)) in rt2x00lib_uninitialize()
1221 rt2x00rfkill_unregister(rt2x00dev); in rt2x00lib_uninitialize()
1226 rt2x00dev->ops->lib->uninitialize(rt2x00dev); in rt2x00lib_uninitialize()
1231 rt2x00queue_uninitialize(rt2x00dev); in rt2x00lib_uninitialize()
1234 static int rt2x00lib_initialize(struct rt2x00_dev *rt2x00dev) in rt2x00lib_initialize() argument
1238 if (test_bit(DEVICE_STATE_INITIALIZED, &rt2x00dev->flags)) in rt2x00lib_initialize()
1244 status = rt2x00queue_initialize(rt2x00dev); in rt2x00lib_initialize()
1251 status = rt2x00dev->ops->lib->initialize(rt2x00dev); in rt2x00lib_initialize()
1253 rt2x00queue_uninitialize(rt2x00dev); in rt2x00lib_initialize()
1257 set_bit(DEVICE_STATE_INITIALIZED, &rt2x00dev->flags); in rt2x00lib_initialize()
1262 if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DELAYED_RFKILL)) in rt2x00lib_initialize()
1263 rt2x00rfkill_register(rt2x00dev); in rt2x00lib_initialize()
1268 int rt2x00lib_start(struct rt2x00_dev *rt2x00dev) in rt2x00lib_start() argument
1272 if (test_bit(DEVICE_STATE_STARTED, &rt2x00dev->flags)) in rt2x00lib_start()
1279 retval = rt2x00lib_load_firmware(rt2x00dev); in rt2x00lib_start()
1286 retval = rt2x00lib_initialize(rt2x00dev); in rt2x00lib_start()
1290 rt2x00dev->intf_ap_count = 0; in rt2x00lib_start()
1291 rt2x00dev->intf_sta_count = 0; in rt2x00lib_start()
1292 rt2x00dev->intf_associated = 0; in rt2x00lib_start()
1295 retval = rt2x00lib_enable_radio(rt2x00dev); in rt2x00lib_start()
1299 set_bit(DEVICE_STATE_STARTED, &rt2x00dev->flags); in rt2x00lib_start()
1304 void rt2x00lib_stop(struct rt2x00_dev *rt2x00dev) in rt2x00lib_stop() argument
1306 if (!test_and_clear_bit(DEVICE_STATE_STARTED, &rt2x00dev->flags)) in rt2x00lib_stop()
1313 rt2x00lib_disable_radio(rt2x00dev); in rt2x00lib_stop()
1315 rt2x00dev->intf_ap_count = 0; in rt2x00lib_stop()
1316 rt2x00dev->intf_sta_count = 0; in rt2x00lib_stop()
1317 rt2x00dev->intf_associated = 0; in rt2x00lib_stop()
1320 static inline void rt2x00lib_set_if_combinations(struct rt2x00_dev *rt2x00dev) in rt2x00lib_set_if_combinations() argument
1325 if (rt2x00dev->ops->max_ap_intf < 2) in rt2x00lib_set_if_combinations()
1331 if_limit = &rt2x00dev->if_limits_ap; in rt2x00lib_set_if_combinations()
1332 if_limit->max = rt2x00dev->ops->max_ap_intf; in rt2x00lib_set_if_combinations()
1341 if_combination = &rt2x00dev->if_combinations[IF_COMB_AP]; in rt2x00lib_set_if_combinations()
1350 rt2x00dev->hw->wiphy->iface_combinations = rt2x00dev->if_combinations; in rt2x00lib_set_if_combinations()
1351 rt2x00dev->hw->wiphy->n_iface_combinations = 1; in rt2x00lib_set_if_combinations()
1354 static unsigned int rt2x00dev_extra_tx_headroom(struct rt2x00_dev *rt2x00dev) in rt2x00dev_extra_tx_headroom() argument
1356 if (WARN_ON(!rt2x00dev->tx)) in rt2x00dev_extra_tx_headroom()
1359 if (rt2x00_is_usb(rt2x00dev)) in rt2x00dev_extra_tx_headroom()
1360 return rt2x00dev->tx[0].winfo_size + rt2x00dev->tx[0].desc_size; in rt2x00dev_extra_tx_headroom()
1362 return rt2x00dev->tx[0].winfo_size; in rt2x00dev_extra_tx_headroom()
1368 int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev) in rt2x00lib_probe_dev() argument
1375 rt2x00lib_set_if_combinations(rt2x00dev); in rt2x00lib_probe_dev()
1380 if (rt2x00dev->ops->drv_data_size > 0) { in rt2x00lib_probe_dev()
1381 rt2x00dev->drv_data = kzalloc(rt2x00dev->ops->drv_data_size, in rt2x00lib_probe_dev()
1383 if (!rt2x00dev->drv_data) { in rt2x00lib_probe_dev()
1389 spin_lock_init(&rt2x00dev->irqmask_lock); in rt2x00lib_probe_dev()
1390 mutex_init(&rt2x00dev->csr_mutex); in rt2x00lib_probe_dev()
1391 mutex_init(&rt2x00dev->conf_mutex); in rt2x00lib_probe_dev()
1392 INIT_LIST_HEAD(&rt2x00dev->bar_list); in rt2x00lib_probe_dev()
1393 spin_lock_init(&rt2x00dev->bar_list_lock); in rt2x00lib_probe_dev()
1395 set_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); in rt2x00lib_probe_dev()
1401 rt2x00dev->hw->vif_data_size = sizeof(struct rt2x00_intf); in rt2x00lib_probe_dev()
1407 rt2x00dev->hw->wiphy->addr_mask[ETH_ALEN - 1] = in rt2x00lib_probe_dev()
1408 (rt2x00dev->ops->max_ap_intf - 1); in rt2x00lib_probe_dev()
1413 rt2x00dev->workqueue = in rt2x00lib_probe_dev()
1414 alloc_ordered_workqueue("%s", 0, wiphy_name(rt2x00dev->hw->wiphy)); in rt2x00lib_probe_dev()
1415 if (!rt2x00dev->workqueue) { in rt2x00lib_probe_dev()
1420 INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled); in rt2x00lib_probe_dev()
1421 INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup); in rt2x00lib_probe_dev()
1422 INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep); in rt2x00lib_probe_dev()
1427 retval = rt2x00dev->ops->lib->probe_hw(rt2x00dev); in rt2x00lib_probe_dev()
1429 rt2x00_err(rt2x00dev, "Failed to allocate device\n"); in rt2x00lib_probe_dev()
1436 retval = rt2x00queue_allocate(rt2x00dev); in rt2x00lib_probe_dev()
1441 rt2x00dev->extra_tx_headroom = rt2x00dev_extra_tx_headroom(rt2x00dev); in rt2x00lib_probe_dev()
1448 rt2x00dev->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION); in rt2x00lib_probe_dev()
1449 if (rt2x00dev->bcn->limit > 0) in rt2x00lib_probe_dev()
1450 rt2x00dev->hw->wiphy->interface_modes |= in rt2x00lib_probe_dev()
1460 rt2x00dev->hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; in rt2x00lib_probe_dev()
1462 wiphy_ext_feature_set(rt2x00dev->hw->wiphy, in rt2x00lib_probe_dev()
1468 retval = rt2x00lib_probe_hw(rt2x00dev); in rt2x00lib_probe_dev()
1470 rt2x00_err(rt2x00dev, "Failed to initialize hw\n"); in rt2x00lib_probe_dev()
1477 rt2x00link_register(rt2x00dev); in rt2x00lib_probe_dev()
1478 rt2x00leds_register(rt2x00dev); in rt2x00lib_probe_dev()
1479 rt2x00debug_register(rt2x00dev); in rt2x00lib_probe_dev()
1484 if (!rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DELAYED_RFKILL)) in rt2x00lib_probe_dev()
1485 rt2x00rfkill_register(rt2x00dev); in rt2x00lib_probe_dev()
1490 rt2x00lib_remove_dev(rt2x00dev); in rt2x00lib_probe_dev()
1496 void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev) in rt2x00lib_remove_dev() argument
1498 clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); in rt2x00lib_remove_dev()
1503 if (!rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DELAYED_RFKILL)) in rt2x00lib_remove_dev()
1504 rt2x00rfkill_unregister(rt2x00dev); in rt2x00lib_remove_dev()
1509 rt2x00lib_disable_radio(rt2x00dev); in rt2x00lib_remove_dev()
1514 cancel_work_sync(&rt2x00dev->intf_work); in rt2x00lib_remove_dev()
1515 cancel_delayed_work_sync(&rt2x00dev->autowakeup_work); in rt2x00lib_remove_dev()
1516 cancel_work_sync(&rt2x00dev->sleep_work); in rt2x00lib_remove_dev()
1521 tasklet_kill(&rt2x00dev->txstatus_tasklet); in rt2x00lib_remove_dev()
1522 tasklet_kill(&rt2x00dev->pretbtt_tasklet); in rt2x00lib_remove_dev()
1523 tasklet_kill(&rt2x00dev->tbtt_tasklet); in rt2x00lib_remove_dev()
1524 tasklet_kill(&rt2x00dev->rxdone_tasklet); in rt2x00lib_remove_dev()
1525 tasklet_kill(&rt2x00dev->autowake_tasklet); in rt2x00lib_remove_dev()
1530 rt2x00lib_uninitialize(rt2x00dev); in rt2x00lib_remove_dev()
1532 if (rt2x00dev->workqueue) in rt2x00lib_remove_dev()
1533 destroy_workqueue(rt2x00dev->workqueue); in rt2x00lib_remove_dev()
1538 kfifo_free(&rt2x00dev->txstatus_fifo); in rt2x00lib_remove_dev()
1543 rt2x00debug_deregister(rt2x00dev); in rt2x00lib_remove_dev()
1544 rt2x00leds_unregister(rt2x00dev); in rt2x00lib_remove_dev()
1549 rt2x00lib_remove_hw(rt2x00dev); in rt2x00lib_remove_dev()
1554 rt2x00lib_free_firmware(rt2x00dev); in rt2x00lib_remove_dev()
1559 rt2x00queue_free(rt2x00dev); in rt2x00lib_remove_dev()
1564 kfree(rt2x00dev->drv_data); in rt2x00lib_remove_dev()
1572 int rt2x00lib_suspend(struct rt2x00_dev *rt2x00dev, pm_message_t state) in rt2x00lib_suspend() argument
1574 rt2x00_dbg(rt2x00dev, "Going to sleep\n"); in rt2x00lib_suspend()
1579 if (!test_and_clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags)) in rt2x00lib_suspend()
1585 rt2x00lib_uninitialize(rt2x00dev); in rt2x00lib_suspend()
1590 rt2x00leds_suspend(rt2x00dev); in rt2x00lib_suspend()
1591 rt2x00debug_deregister(rt2x00dev); in rt2x00lib_suspend()
1604 if (rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_SLEEP)) in rt2x00lib_suspend()
1605 rt2x00_warn(rt2x00dev, "Device failed to enter sleep state, continue suspending\n"); in rt2x00lib_suspend()
1611 int rt2x00lib_resume(struct rt2x00_dev *rt2x00dev) in rt2x00lib_resume() argument
1613 rt2x00_dbg(rt2x00dev, "Waking up\n"); in rt2x00lib_resume()
1618 rt2x00debug_register(rt2x00dev); in rt2x00lib_resume()
1619 rt2x00leds_resume(rt2x00dev); in rt2x00lib_resume()
1624 set_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags); in rt2x00lib_resume()