Lines Matching full:local
25 struct ieee802154_local *local = from_tasklet(local, t, tasklet); in ieee802154_tasklet_handler() local
28 while ((skb = skb_dequeue(&local->skb_queue))) { in ieee802154_tasklet_handler()
35 ieee802154_rx(local, skb); in ieee802154_tasklet_handler()
50 struct ieee802154_local *local; in ieee802154_alloc_hw() local
75 priv_size = ALIGN(sizeof(*local), NETDEV_ALIGN) + priv_data_len; in ieee802154_alloc_hw()
85 local = wpan_phy_priv(phy); in ieee802154_alloc_hw()
86 local->phy = phy; in ieee802154_alloc_hw()
87 local->hw.phy = local->phy; in ieee802154_alloc_hw()
88 local->hw.priv = (char *)local + ALIGN(sizeof(*local), NETDEV_ALIGN); in ieee802154_alloc_hw()
89 local->ops = ops; in ieee802154_alloc_hw()
91 INIT_LIST_HEAD(&local->interfaces); in ieee802154_alloc_hw()
92 INIT_LIST_HEAD(&local->rx_beacon_list); in ieee802154_alloc_hw()
93 INIT_LIST_HEAD(&local->rx_mac_cmd_list); in ieee802154_alloc_hw()
94 spin_lock_init(&local->rx_lock); in ieee802154_alloc_hw()
95 mutex_init(&local->iflist_mtx); in ieee802154_alloc_hw()
97 tasklet_setup(&local->tasklet, ieee802154_tasklet_handler); in ieee802154_alloc_hw()
99 skb_queue_head_init(&local->skb_queue); in ieee802154_alloc_hw()
101 INIT_WORK(&local->sync_tx_work, ieee802154_xmit_sync_worker); in ieee802154_alloc_hw()
102 INIT_DELAYED_WORK(&local->scan_work, mac802154_scan_worker); in ieee802154_alloc_hw()
103 INIT_WORK(&local->rx_beacon_work, mac802154_rx_beacon_worker); in ieee802154_alloc_hw()
104 INIT_DELAYED_WORK(&local->beacon_work, mac802154_beacon_worker); in ieee802154_alloc_hw()
105 INIT_WORK(&local->rx_mac_cmd_work, mac802154_rx_mac_cmd_worker); in ieee802154_alloc_hw()
107 init_completion(&local->assoc_done); in ieee802154_alloc_hw()
108 spin_lock_init(&local->assoc_lock); in ieee802154_alloc_hw()
122 return &local->hw; in ieee802154_alloc_hw()
175 struct ieee802154_local *local = hw_to_local(hw); in ieee802154_free_hw() local
177 BUG_ON(!list_empty(&local->interfaces)); in ieee802154_free_hw()
179 mutex_destroy(&local->iflist_mtx); in ieee802154_free_hw()
181 wpan_phy_free(local->phy); in ieee802154_free_hw()
199 struct ieee802154_local *local = hw_to_local(hw); in ieee802154_register_hw() local
204 local->workqueue = in ieee802154_register_hw()
205 create_singlethread_workqueue(wpan_phy_name(local->phy)); in ieee802154_register_hw()
206 if (!local->workqueue) { in ieee802154_register_hw()
211 snprintf(mac_wq_name, IFNAMSIZ + 10, "%s-mac-cmds", wpan_phy_name(local->phy)); in ieee802154_register_hw()
212 local->mac_wq = create_singlethread_workqueue(mac_wq_name); in ieee802154_register_hw()
213 if (!local->mac_wq) { in ieee802154_register_hw()
218 hrtimer_setup(&local->ifs_timer, ieee802154_xmit_ifs_timer, CLOCK_MONOTONIC, in ieee802154_register_hw()
221 wpan_phy_set_dev(local->phy, local->hw.parent); in ieee802154_register_hw()
223 ieee802154_setup_wpan_phy_pib(local->phy); in ieee802154_register_hw()
225 ieee802154_configure_durations(local->phy, local->phy->current_page, in ieee802154_register_hw()
226 local->phy->current_channel); in ieee802154_register_hw()
229 local->phy->supported.min_csma_backoffs = 4; in ieee802154_register_hw()
230 local->phy->supported.max_csma_backoffs = 4; in ieee802154_register_hw()
231 local->phy->supported.min_maxbe = 5; in ieee802154_register_hw()
232 local->phy->supported.max_maxbe = 5; in ieee802154_register_hw()
233 local->phy->supported.min_minbe = 3; in ieee802154_register_hw()
234 local->phy->supported.max_minbe = 3; in ieee802154_register_hw()
238 local->phy->supported.min_frame_retries = 3; in ieee802154_register_hw()
239 local->phy->supported.max_frame_retries = 3; in ieee802154_register_hw()
243 local->phy->supported.iftypes |= BIT(NL802154_IFTYPE_MONITOR); in ieee802154_register_hw()
245 rc = wpan_phy_register(local->phy); in ieee802154_register_hw()
251 dev = ieee802154_if_add(local, "wpan%d", NET_NAME_ENUM, in ieee802154_register_hw()
265 wpan_phy_unregister(local->phy); in ieee802154_register_hw()
267 destroy_workqueue(local->mac_wq); in ieee802154_register_hw()
269 destroy_workqueue(local->workqueue); in ieee802154_register_hw()
277 struct ieee802154_local *local = hw_to_local(hw); in ieee802154_unregister_hw() local
279 tasklet_kill(&local->tasklet); in ieee802154_unregister_hw()
280 flush_workqueue(local->workqueue); in ieee802154_unregister_hw()
284 ieee802154_remove_interfaces(local); in ieee802154_unregister_hw()
288 destroy_workqueue(local->mac_wq); in ieee802154_unregister_hw()
289 destroy_workqueue(local->workqueue); in ieee802154_unregister_hw()
290 wpan_phy_unregister(local->phy); in ieee802154_unregister_hw()