Lines Matching defs:ar

54 void ath6kl_core_tx_complete(struct ath6kl *ar, struct sk_buff *skb)
56 ath6kl_htc_tx_complete(ar, skb);
60 void ath6kl_core_rx_complete(struct ath6kl *ar, struct sk_buff *skb, u8 pipe)
62 ath6kl_htc_rx_complete(ar, skb, pipe);
66 int ath6kl_core_init(struct ath6kl *ar, enum ath6kl_htc_type htc_type)
74 ath6kl_htc_mbox_attach(ar);
77 ath6kl_htc_pipe_attach(ar);
84 ar->ath6kl_wq = create_singlethread_workqueue("ath6kl");
85 if (!ar->ath6kl_wq)
88 ret = ath6kl_bmi_init(ar);
97 ret = ath6kl_hif_power_on(ar);
101 ret = ath6kl_bmi_get_target_info(ar, &targ_info);
105 ar->version.target_ver = le32_to_cpu(targ_info.version);
106 ar->target_type = le32_to_cpu(targ_info.type);
107 ar->wiphy->hw_version = le32_to_cpu(targ_info.version);
109 ret = ath6kl_init_hw_params(ar);
113 ar->htc_target = ath6kl_htc_create(ar);
115 if (!ar->htc_target) {
120 ar->testmode = testmode;
122 ret = ath6kl_init_fetch_firmwares(ar);
132 if (ar->target_type == TARGET_TYPE_AR6004 &&
133 ar->fw_api <= 4) {
135 ar->fw_capabilities);
137 ar->fw_capabilities);
139 if (ar->hw.id == AR6004_HW_1_3_VERSION)
141 ar->fw_capabilities);
145 set_bit(WMI_ENABLED, &ar->flag);
146 ar->wmi = ath6kl_wmi_init(ar);
147 if (!ar->wmi) {
153 ath6kl_dbg(ATH6KL_DBG_TRC, "%s: got wmi @ 0x%p.\n", __func__, ar->wmi);
156 ar->ac_stream_pri_map[WMM_AC_BK] = 0; /* lowest */
157 ar->ac_stream_pri_map[WMM_AC_BE] = 1;
158 ar->ac_stream_pri_map[WMM_AC_VI] = 2;
159 ar->ac_stream_pri_map[WMM_AC_VO] = 3; /* highest */
162 ath6kl_refill_amsdu_rxbufs(ar, ATH6KL_MAX_AMSDU_RX_BUFFERS);
164 ath6kl_cookie_init(ar);
166 ar->conf_flags = ATH6KL_CONF_IGNORE_ERP_BARKER |
172 ar->suspend_mode = suspend_mode;
174 ar->suspend_mode = 0;
179 ar->wow_suspend_mode = wow_mode;
181 ar->wow_suspend_mode = 0;
184 ar->conf_flags |= ATH6KL_CONF_UART_DEBUG;
185 ar->hw.uarttx_rate = uart_rate;
187 set_bit(FIRST_BOOT, &ar->flag);
189 ath6kl_debug_init(ar);
191 ret = ath6kl_init_hw_start(ar);
198 ath6kl_rx_refill(ar->htc_target, ar->ctrl_ep);
199 ath6kl_rx_refill(ar->htc_target, ar->ac2ep_map[WMM_AC_BE]);
201 ret = ath6kl_cfg80211_init(ar);
205 ret = ath6kl_debug_init_fs(ar);
207 wiphy_unregister(ar->wiphy);
211 for (i = 0; i < ar->vif_max; i++)
212 ar->avail_idx_map |= BIT(i);
215 wiphy_lock(ar->wiphy);
218 wdev = ath6kl_interface_add(ar, "wlan%d", NET_NAME_ENUM,
221 wiphy_unlock(ar->wiphy);
227 wiphy_unregister(ar->wiphy);
231 ath6kl_dbg(ATH6KL_DBG_TRC, "%s: name=%s dev=0x%p, ar=0x%p\n",
232 __func__, wdev->netdev->name, wdev->netdev, ar);
234 ar->fw_recovery.enable = !!recovery_enable;
235 if (!ar->fw_recovery.enable)
240 ar->fw_capabilities))
241 ar->fw_recovery.hb_poll = heart_beat_poll;
243 ath6kl_recovery_init(ar);
248 ath6kl_debug_cleanup(ar);
249 ath6kl_htc_flush_rx_buf(ar->htc_target);
250 ath6kl_cleanup_amsdu_rxbufs(ar);
251 ath6kl_wmi_shutdown(ar->wmi);
252 clear_bit(WMI_ENABLED, &ar->flag);
253 ar->wmi = NULL;
255 ath6kl_htc_cleanup(ar->htc_target);
257 ath6kl_hif_power_off(ar);
259 ath6kl_bmi_cleanup(ar);
261 destroy_workqueue(ar->ath6kl_wq);
269 struct ath6kl *ar;
272 ar = ath6kl_cfg80211_create();
273 if (!ar)
276 ar->p2p = !!ath6kl_p2p;
277 ar->dev = dev;
279 ar->vif_max = 1;
281 ar->max_norm_iface = 1;
283 spin_lock_init(&ar->lock);
284 spin_lock_init(&ar->mcastpsq_lock);
285 spin_lock_init(&ar->list_lock);
287 init_waitqueue_head(&ar->event_wq);
288 sema_init(&ar->sem, 1);
290 INIT_LIST_HEAD(&ar->amsdu_rx_buffer_queue);
291 INIT_LIST_HEAD(&ar->vif_list);
293 clear_bit(WMI_ENABLED, &ar->flag);
294 clear_bit(SKIP_SCAN, &ar->flag);
295 clear_bit(DESTROY_IN_PROGRESS, &ar->flag);
297 ar->tx_pwr = 0;
298 ar->intra_bss = 1;
299 ar->lrssi_roam_threshold = DEF_LRSSI_ROAM_THRESHOLD;
301 ar->state = ATH6KL_STATE_OFF;
303 memset((u8 *)ar->sta_list, 0,
308 spin_lock_init(&ar->sta_list[ctr].psq_lock);
309 skb_queue_head_init(&ar->sta_list[ctr].psq);
310 skb_queue_head_init(&ar->sta_list[ctr].apsdq);
311 ar->sta_list[ctr].mgmt_psq_len = 0;
312 INIT_LIST_HEAD(&ar->sta_list[ctr].mgmt_psq);
313 ar->sta_list[ctr].aggr_conn =
315 if (!ar->sta_list[ctr].aggr_conn) {
317 ath6kl_core_destroy(ar);
322 skb_queue_head_init(&ar->mcastpsq);
324 memcpy(ar->ap_country_code, DEF_AP_COUNTRY_CODE, 3);
326 return ar;
330 void ath6kl_core_cleanup(struct ath6kl *ar)
332 ath6kl_hif_power_off(ar);
334 ath6kl_recovery_cleanup(ar);
336 destroy_workqueue(ar->ath6kl_wq);
338 if (ar->htc_target)
339 ath6kl_htc_cleanup(ar->htc_target);
341 ath6kl_cookie_cleanup(ar);
343 ath6kl_cleanup_amsdu_rxbufs(ar);
345 ath6kl_bmi_cleanup(ar);
347 ath6kl_debug_cleanup(ar);
349 kfree(ar->fw_board);
350 kfree(ar->fw_otp);
351 vfree(ar->fw);
352 kfree(ar->fw_patch);
353 kfree(ar->fw_testscript);
355 ath6kl_cfg80211_cleanup(ar);
359 void ath6kl_core_destroy(struct ath6kl *ar)
361 ath6kl_cfg80211_destroy(ar);