Lines Matching refs:ar
45 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_ibss_map_epid() local
57 for (i = 0; i < ar->node_num; i++) { in ath6kl_ibss_map_epid()
58 if (memcmp(eth_hdr->h_dest, ar->node_map[i].mac_addr, in ath6kl_ibss_map_epid()
61 ar->node_map[i].tx_pend++; in ath6kl_ibss_map_epid()
62 return ar->node_map[i].ep_id; in ath6kl_ibss_map_epid()
65 if ((ep_map == -1) && !ar->node_map[i].tx_pend) in ath6kl_ibss_map_epid()
70 ep_map = ar->node_num; in ath6kl_ibss_map_epid()
71 ar->node_num++; in ath6kl_ibss_map_epid()
72 if (ar->node_num > MAX_NODE_NUM) in ath6kl_ibss_map_epid()
76 memcpy(ar->node_map[ep_map].mac_addr, eth_hdr->h_dest, ETH_ALEN); in ath6kl_ibss_map_epid()
79 if (!ar->tx_pending[i]) { in ath6kl_ibss_map_epid()
80 ar->node_map[ep_map].ep_id = i; in ath6kl_ibss_map_epid()
89 ar->node_map[ep_map].ep_id = ar->next_ep_id; in ath6kl_ibss_map_epid()
90 ar->next_ep_id++; in ath6kl_ibss_map_epid()
91 if (ar->next_ep_id > ENDPOINT_5) in ath6kl_ibss_map_epid()
92 ar->next_ep_id = ENDPOINT_2; in ath6kl_ibss_map_epid()
97 ar->node_map[ep_map].tx_pend++; in ath6kl_ibss_map_epid()
99 return ar->node_map[ep_map].ep_id; in ath6kl_ibss_map_epid()
107 struct ath6kl *ar = vif->ar; in ath6kl_process_uapsdq() local
166 ath6kl_wmi_set_apsd_bfrd_traf(ar->wmi, in ath6kl_process_uapsdq()
181 struct ath6kl *ar = vif->ar; in ath6kl_process_psq() local
203 ath6kl_wmi_set_pvb_cmd(ar->wmi, in ath6kl_process_psq()
215 struct ath6kl *ar = vif->ar; in ath6kl_powersave_ap() local
222 if (ar->sta_list[ctr].sta_flags & STA_PS_SLEEP) { in ath6kl_powersave_ap()
236 spin_lock_bh(&ar->mcastpsq_lock); in ath6kl_powersave_ap()
238 skb_queue_empty(&ar->mcastpsq); in ath6kl_powersave_ap()
239 skb_queue_tail(&ar->mcastpsq, skb); in ath6kl_powersave_ap()
240 spin_unlock_bh(&ar->mcastpsq_lock); in ath6kl_powersave_ap()
248 ath6kl_wmi_set_pvb_cmd(ar->wmi, in ath6kl_powersave_ap()
258 spin_lock_bh(&ar->mcastpsq_lock); in ath6kl_powersave_ap()
259 if (!skb_queue_empty(&ar->mcastpsq)) in ath6kl_powersave_ap()
261 spin_unlock_bh(&ar->mcastpsq_lock); in ath6kl_powersave_ap()
289 struct ath6kl *ar = devt; in ath6kl_control_tx() local
295 if (WARN_ON_ONCE(ar->state == ATH6KL_STATE_WOW)) { in ath6kl_control_tx()
306 spin_lock_bh(&ar->lock); in ath6kl_control_tx()
312 if (test_bit(WMI_CTRL_EP_FULL, &ar->flag) && (eid == ar->ctrl_ep)) { in ath6kl_control_tx()
321 cookie = ath6kl_alloc_cookie(ar); in ath6kl_control_tx()
325 spin_unlock_bh(&ar->lock); in ath6kl_control_tx()
330 ar->tx_pending[eid]++; in ath6kl_control_tx()
332 if (eid != ar->ctrl_ep) in ath6kl_control_tx()
333 ar->total_tx_data_pend++; in ath6kl_control_tx()
335 spin_unlock_bh(&ar->lock); in ath6kl_control_tx()
347 ath6kl_htc_tx(ar->htc_target, &cookie->htc_pkt); in ath6kl_control_tx()
358 struct ath6kl *ar = ath6kl_priv(dev); in ath6kl_data_tx() local
381 if (WARN_ON_ONCE(ar->state != ATH6KL_STATE_ON)) in ath6kl_data_tx()
384 if (!test_bit(WMI_READY, &ar->flag)) in ath6kl_data_tx()
393 if (test_bit(WMI_ENABLED, &ar->flag)) { in ath6kl_data_tx()
413 if (ath6kl_wmi_dix_2_dot3(ar->wmi, skb)) { in ath6kl_data_tx()
432 ret = ath6kl_wmi_data_hdr_add(ar->wmi, skb, in ath6kl_data_tx()
444 ar->ibss_ps_enable && test_bit(CONNECTED, &vif->flags)) in ath6kl_data_tx()
448 ret = ath6kl_wmi_implicit_create_pstream(ar->wmi, in ath6kl_data_tx()
458 spin_lock_bh(&ar->lock); in ath6kl_data_tx()
463 eid = ar->ac2ep_map[ac]; in ath6kl_data_tx()
467 spin_unlock_bh(&ar->lock); in ath6kl_data_tx()
472 cookie = ath6kl_alloc_cookie(ar); in ath6kl_data_tx()
475 spin_unlock_bh(&ar->lock); in ath6kl_data_tx()
480 ar->tx_pending[eid]++; in ath6kl_data_tx()
481 ar->total_tx_data_pend++; in ath6kl_data_tx()
483 spin_unlock_bh(&ar->lock); in ath6kl_data_tx()
516 ath6kl_htc_tx(ar->htc_target, &cookie->htc_pkt); in ath6kl_data_tx()
532 struct ath6kl *ar = devt; in ath6kl_indicate_tx_activity() local
536 eid = ar->ac2ep_map[traffic_class]; in ath6kl_indicate_tx_activity()
538 if (!test_bit(WMI_ENABLED, &ar->flag)) in ath6kl_indicate_tx_activity()
541 spin_lock_bh(&ar->lock); in ath6kl_indicate_tx_activity()
543 ar->ac_stream_active[traffic_class] = active; in ath6kl_indicate_tx_activity()
550 if (ar->ac_stream_pri_map[traffic_class] > in ath6kl_indicate_tx_activity()
551 ar->hiac_stream_active_pri) in ath6kl_indicate_tx_activity()
553 ar->hiac_stream_active_pri = in ath6kl_indicate_tx_activity()
554 ar->ac_stream_pri_map[traffic_class]; in ath6kl_indicate_tx_activity()
561 if (ar->hiac_stream_active_pri == in ath6kl_indicate_tx_activity()
562 ar->ac_stream_pri_map[traffic_class]) { in ath6kl_indicate_tx_activity()
568 ar->hiac_stream_active_pri = 0; in ath6kl_indicate_tx_activity()
571 if (ar->ac_stream_active[i] && in ath6kl_indicate_tx_activity()
572 (ar->ac_stream_pri_map[i] > in ath6kl_indicate_tx_activity()
573 ar->hiac_stream_active_pri)) in ath6kl_indicate_tx_activity()
578 ar->hiac_stream_active_pri = in ath6kl_indicate_tx_activity()
579 ar->ac_stream_pri_map[i]; in ath6kl_indicate_tx_activity()
584 spin_unlock_bh(&ar->lock); in ath6kl_indicate_tx_activity()
588 ath6kl_htc_activity_changed(ar->htc_target, eid, active); in ath6kl_indicate_tx_activity()
594 struct ath6kl *ar = target->dev->ar; in ath6kl_tx_queue_full() local
599 if (endpoint == ar->ctrl_ep) { in ath6kl_tx_queue_full()
606 set_bit(WMI_CTRL_EP_FULL, &ar->flag); in ath6kl_tx_queue_full()
608 ath6kl_recovery_err_notify(ar, ATH6KL_FW_EP_FULL); in ath6kl_tx_queue_full()
619 if (ar->ac_stream_pri_map[ar->ep2ac_map[endpoint]] < in ath6kl_tx_queue_full()
620 ar->hiac_stream_active_pri && in ath6kl_tx_queue_full()
621 ar->cookie_count <= in ath6kl_tx_queue_full()
630 spin_lock_bh(&ar->list_lock); in ath6kl_tx_queue_full()
631 list_for_each_entry(vif, &ar->vif_list, list) { in ath6kl_tx_queue_full()
634 spin_unlock_bh(&ar->list_lock); in ath6kl_tx_queue_full()
642 spin_unlock_bh(&ar->list_lock); in ath6kl_tx_queue_full()
651 struct ath6kl *ar = vif->ar; in ath6kl_tx_clear_node_map() local
657 if (!ar->ibss_ps_enable) in ath6kl_tx_clear_node_map()
660 if (eid == ar->ctrl_ep) in ath6kl_tx_clear_node_map()
667 ar->node_map[map_no].tx_pend--; in ath6kl_tx_clear_node_map()
669 if (ar->node_map[map_no].tx_pend) in ath6kl_tx_clear_node_map()
672 if (map_no != (ar->node_num - 1)) in ath6kl_tx_clear_node_map()
675 for (i = ar->node_num; i > 0; i--) { in ath6kl_tx_clear_node_map()
676 if (ar->node_map[i - 1].tx_pend) in ath6kl_tx_clear_node_map()
679 memset(&ar->node_map[i - 1], 0, in ath6kl_tx_clear_node_map()
681 ar->node_num--; in ath6kl_tx_clear_node_map()
688 struct ath6kl *ar = target->dev->ar; in ath6kl_tx_complete() local
704 spin_lock_bh(&ar->lock); in ath6kl_tx_complete()
727 ath6kl_free_cookie(ar, ath6kl_cookie); in ath6kl_tx_complete()
734 ath6kl_free_cookie(ar, ath6kl_cookie); in ath6kl_tx_complete()
738 ar->tx_pending[eid]--; in ath6kl_tx_complete()
740 if (eid != ar->ctrl_ep) in ath6kl_tx_complete()
741 ar->total_tx_data_pend--; in ath6kl_tx_complete()
743 if (eid == ar->ctrl_ep) { in ath6kl_tx_complete()
744 if (test_bit(WMI_CTRL_EP_FULL, &ar->flag)) in ath6kl_tx_complete()
745 clear_bit(WMI_CTRL_EP_FULL, &ar->flag); in ath6kl_tx_complete()
747 if (ar->tx_pending[eid] == 0) in ath6kl_tx_complete()
751 if (eid == ar->ctrl_ep) { in ath6kl_tx_complete()
759 vif = ath6kl_get_vif_by_index(ar, if_idx); in ath6kl_tx_complete()
761 ath6kl_free_cookie(ar, ath6kl_cookie); in ath6kl_tx_complete()
792 ath6kl_free_cookie(ar, ath6kl_cookie); in ath6kl_tx_complete()
798 spin_unlock_bh(&ar->lock); in ath6kl_tx_complete()
803 spin_lock_bh(&ar->list_lock); in ath6kl_tx_complete()
804 list_for_each_entry(vif, &ar->vif_list, list) { in ath6kl_tx_complete()
807 spin_unlock_bh(&ar->list_lock); in ath6kl_tx_complete()
809 spin_lock_bh(&ar->list_lock); in ath6kl_tx_complete()
812 spin_unlock_bh(&ar->list_lock); in ath6kl_tx_complete()
815 wake_up(&ar->event_wq); in ath6kl_tx_complete()
820 void ath6kl_tx_data_cleanup(struct ath6kl *ar) in ath6kl_tx_data_cleanup() argument
826 ath6kl_htc_flush_txep(ar->htc_target, ar->ac2ep_map[i], in ath6kl_tx_data_cleanup()
881 struct ath6kl *ar = target->dev->ar; in ath6kl_rx_refill() local
889 ath6kl_htc_get_rxbuf_num(ar->htc_target, endpoint); in ath6kl_rx_refill()
918 ath6kl_htc_add_rxbuf_multiple(ar->htc_target, &queue); in ath6kl_rx_refill()
921 void ath6kl_refill_amsdu_rxbufs(struct ath6kl *ar, int count) in ath6kl_refill_amsdu_rxbufs() argument
941 spin_lock_bh(&ar->lock); in ath6kl_refill_amsdu_rxbufs()
942 list_add_tail(&packet->list, &ar->amsdu_rx_buffer_queue); in ath6kl_refill_amsdu_rxbufs()
943 spin_unlock_bh(&ar->lock); in ath6kl_refill_amsdu_rxbufs()
956 struct ath6kl *ar = target->dev->ar; in ath6kl_alloc_amsdu_rxbuf() local
968 spin_lock_bh(&ar->lock); in ath6kl_alloc_amsdu_rxbuf()
970 if (list_empty(&ar->amsdu_rx_buffer_queue)) { in ath6kl_alloc_amsdu_rxbuf()
971 spin_unlock_bh(&ar->lock); in ath6kl_alloc_amsdu_rxbuf()
976 packet = list_first_entry(&ar->amsdu_rx_buffer_queue, in ath6kl_alloc_amsdu_rxbuf()
979 list_for_each(pkt_pos, &ar->amsdu_rx_buffer_queue) in ath6kl_alloc_amsdu_rxbuf()
983 spin_unlock_bh(&ar->lock); in ath6kl_alloc_amsdu_rxbuf()
990 ath6kl_refill_amsdu_rxbufs(ar, refill_cnt); in ath6kl_alloc_amsdu_rxbuf()
1240 struct ath6kl *ar = vif->ar; in ath6kl_uapsd_trigger_frame_rx() local
1298 ath6kl_wmi_set_apsd_bfrd_traf(ar->wmi, in ath6kl_uapsd_trigger_frame_rx()
1308 struct ath6kl *ar = target->dev->ar; in ath6kl_rx() local
1329 __func__, ar, ept, skb, packet->buf, in ath6kl_rx()
1343 if (ept == ar->ctrl_ep) { in ath6kl_rx()
1344 if (test_bit(WMI_ENABLED, &ar->flag)) { in ath6kl_rx()
1345 ath6kl_check_wow_status(ar); in ath6kl_rx()
1346 ath6kl_wmi_control_rx(ar->wmi, skb); in ath6kl_rx()
1356 vif = ath6kl_get_vif_by_index(ar, if_idx); in ath6kl_rx()
1375 if (!test_bit(WMI_ENABLED, &ar->flag)) { in ath6kl_rx()
1382 ath6kl_check_wow_status(ar); in ath6kl_rx()
1473 ath6kl_wmi_send_mgmt_cmd(ar->wmi, in ath6kl_rx()
1502 ar->wmi, in ath6kl_rx()
1507 ath6kl_wmi_set_pvb_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_rx()
1551 status = ath6kl_wmi_dot11_hdr_remove(ar->wmi, skb); in ath6kl_rx()
1586 if (conn && ar->intra_bss) { in ath6kl_rx()
1589 } else if (conn && !ar->intra_bss) { in ath6kl_rx()
1714 sta = ath6kl_find_sta_by_aid(vif->ar, aid); in aggr_recv_addba_req_evt()
1810 sta = ath6kl_find_sta_by_aid(vif->ar, aid); in aggr_recv_delba_req_evt()
1847 void ath6kl_cleanup_amsdu_rxbufs(struct ath6kl *ar) in ath6kl_cleanup_amsdu_rxbufs() argument
1851 spin_lock_bh(&ar->lock); in ath6kl_cleanup_amsdu_rxbufs()
1852 if (list_empty(&ar->amsdu_rx_buffer_queue)) { in ath6kl_cleanup_amsdu_rxbufs()
1853 spin_unlock_bh(&ar->lock); in ath6kl_cleanup_amsdu_rxbufs()
1857 list_for_each_entry_safe(packet, tmp_pkt, &ar->amsdu_rx_buffer_queue, in ath6kl_cleanup_amsdu_rxbufs()
1860 spin_unlock_bh(&ar->lock); in ath6kl_cleanup_amsdu_rxbufs()
1862 spin_lock_bh(&ar->lock); in ath6kl_cleanup_amsdu_rxbufs()
1865 spin_unlock_bh(&ar->lock); in ath6kl_cleanup_amsdu_rxbufs()